/****************************************************************** * * * Nest version 2 - 3D Wasp Nest Simulator * * Copyright (C) 1997 Sylvain GUERIN * * LIASC, ENST Bretagne & Santa Fe Institute * * * ****************************************************************** E-mail: Sylvain.Guerin@enst-bretagne.fr or: Sylvain Guerin 13 rue des Monts Lorgeaux, 51460 L'EPINE, FRANCE ****************************************************************** This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ****************************************************************** Name : file.h Component : graphical interface and utility Fonctionality : contains specifications refering to the files and directories manipulations ******************************************************************/ #ifndef __file_H #define __file_H #include "graphical.h" #define maxFiles 256 /* --------------------------------------------------------------------- La classe FileDatas gere les fichiers et directory --------------------------------------------------------------------- */ class FileDatas { public: FileDatas (char* home, char* user, char* currentDir); ~FileDatas (); int changeDirectory (char* newPath); /* equ. to 'cd newPath' */ int backDirectory (); /* equ. to 'cd ..' return -1 when unabled to be opened */ int scanDisk (); /* scan disk, update files, directories and selected files, return -1 when unabled to be opened */ void setFilter (char* aFilter); /* set new filter and update selected files */ void print (); /* print debug informations */ void enableHidesFiles (); void disableHidesFiles (); int pathLevel (); /* return level of directory hierarchy */ char* returnCompleteDirectory (); /* /users/enstb2/eleves/3A/guerin/nest2 */ char* returnShortDirectory (); /* ~guerin/nest2 */ char* returnUserId (); /* guerin */ char* returnUserDirectory (); /* /users/enstb2/eleves/3A/guerin/ */ int filesNumber (); int directoriesNumber (); char* file (int fileIndex); char* directory (int fileIndex); int selectedFilesNumber (); char* selectedFile (int fileIndex); char* returnFilter (); int setDirectory (char* aDirectory); /* long or short format return -1 when failure */ void setDirIndex (int dirIndex); void setFileIndex (int fileIndex); int returnDirIndex (); int returnFileIndex (); protected: char* pathName (int pathIndex); void updateSelectedFiles (); void updateCompleteDirectory (); void updateShortDirectory (); void addPath (char* aPath); void addFile (char* aFile); void addDirectory (char* aDirectory); void cleanFilesAndDirectories (); int checkFileWithFilter (char* aFile); /* return 1 if filter ok, else 0 */ char filter[256]; /* *.rul */ char user[50]; /* guerin */ char userDirectory[256]; /* /users/enstb2/eleves/3A/guerin/ */ char completeDirectory[256]; /* /users/enstb2/eleves/3A/guerin/Projet3A/ */ char shortDirectory[256]; /* ~guerin/Projet3A/ */ char* currentFile[maxFiles]; char isFileSelected[maxFiles]; /* 1 when selected, else 0 */ char isDirectory[maxFiles]; /* 1 when directory, else 0 */ int numberOfSelectedFiles; int numberOfFiles; int numberOfDirectories; char path[50][50]; int pathLevelNumber; int hidesFilesEnabled; /* 1 when enabled, 0 when disabled */ int dirIndex; int fileIndex; }; /* --------------------------------------------------------------------- La classe FileSelector permet de creer une fenetre avec un selecteur de fichiers (utilise la classe FileDatas). --------------------------------------------------------------------- */ class FileSelector : public Interface { public: FileSelector (Interface* toBeRefreshedInterface, int x0, int y0, Display* aDisplay, FileDatas* aFileDatas); virtual ~FileSelector (); unsigned int manageInterface (XEvent report); void refresh (); protected: void updateDatas (); Interface* toBeRefreshed; ArrayWindow* filesArrayWindow; ArrayContent* filesArrayContent; ArrayWindow* directoriesArrayWindow; ArrayContent* directoriesArrayContent; TextInput* pathInput; TextInput* filterInput; Button* loadAllButton; Button* loadFileButton; Button* cancelButton; SwapButton* showShareOrHomeButton; Button* openButton; Button* backButton; Button* filterButton; Button* rescanButton; Button* hideButton; Button* showButton; FileDatas* currentFileDatas; /* en haut: load all load file cancel en bas: open, back, filter, rescan, hide, show */ char newPath[256]; char newFilter[256]; int hidedFilesEnabled; }; #endif