00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef FXFILESELECTOR_H
00025 #define FXFILESELECTOR_H
00026
00027 #ifndef FXPACKER_H
00028 #include "FXPacker.h"
00029 #endif
00030
00031 namespace FX {
00032
00033 class FXFileList;
00034 class FXTextField;
00035 class FXComboBox;
00036 class FXDirBox;
00037 class FXButton;
00038 class FXMenuButton;
00039 class FXIcon;
00040 class FXMenuPane;
00041 class FXCheckButton;
00042 class FXMatrix;
00043 class FXHorizontalFrame;
00044
00045
00046
00047 enum {
00048 SELECTFILE_ANY,
00049 SELECTFILE_EXISTING,
00050 SELECTFILE_MULTIPLE,
00051 SELECTFILE_MULTIPLE_ALL,
00052 SELECTFILE_DIRECTORY
00053 };
00054
00055
00056
00057 class FXAPI FXFileSelector : public FXPacker {
00058 FXDECLARE(FXFileSelector)
00059 protected:
00060 FXFileList *filebox;
00061 FXTextField *filename;
00062 FXComboBox *filefilter;
00063 FXMenuPane *bookmarkmenu;
00064 FXHorizontalFrame *navbuttons;
00065 FXHorizontalFrame *fileboxframe;
00066 FXMatrix *entryblock;
00067 FXCheckButton *readonly;
00068 FXDirBox *dirbox;
00069 FXButton *accept;
00070 FXButton *cancel;
00071 FXIcon *updiricon;
00072 FXIcon *listicon;
00073 FXIcon *detailicon;
00074 FXIcon *iconsicon;
00075 FXIcon *homeicon;
00076 FXIcon *workicon;
00077 FXIcon *shownicon;
00078 FXIcon *hiddenicon;
00079 FXIcon *markicon;
00080 FXIcon *clearicon;
00081 FXIcon *newicon;
00082 FXIcon *deleteicon;
00083 FXIcon *moveicon;
00084 FXIcon *copyicon;
00085 FXIcon *linkicon;
00086 FXRecentFiles bookmarks;
00087 FXuint selectmode;
00088 FXbool navigable;
00089 protected:
00090 FXFileSelector(){}
00091 FXString *getSelectedFiles() const;
00092 FXString *getSelectedFilesOnly() const;
00093 private:
00094 FXFileSelector(const FXFileSelector&);
00095 FXFileSelector &operator=(const FXFileSelector&);
00096 public:
00097 long onCmdAccept(FXObject*,FXSelector,void*);
00098 long onCmdFilter(FXObject*,FXSelector,void*);
00099 long onCmdItemDblClicked(FXObject*,FXSelector,void*);
00100 long onCmdItemSelected(FXObject*,FXSelector,void*);
00101 long onCmdItemDeselected(FXObject*,FXSelector,void*);
00102 long onCmdDirectoryUp(FXObject*,FXSelector,void*);
00103 long onUpdDirectoryUp(FXObject*,FXSelector,void*);
00104 long onCmdDirTree(FXObject*,FXSelector,void*);
00105 long onCmdHome(FXObject*,FXSelector,void*);
00106 long onCmdWork(FXObject*,FXSelector,void*);
00107 long onCmdBookmark(FXObject*,FXSelector,void*);
00108 long onCmdVisit(FXObject*,FXSelector,void*);
00109 long onCmdNew(FXObject*,FXSelector,void*);
00110 long onUpdNew(FXObject*,FXSelector,void*);
00111 long onCmdMove(FXObject*,FXSelector,void*);
00112 long onCmdCopy(FXObject*,FXSelector,void*);
00113 long onCmdLink(FXObject*,FXSelector,void*);
00114 long onCmdDelete(FXObject*,FXSelector,void*);
00115 long onUpdSelected(FXObject*,FXSelector,void*);
00116 long onPopupMenu(FXObject*,FXSelector,void*);
00117 long onCmdImageSize(FXObject*,FXSelector,void*);
00118 long onUpdImageSize(FXObject*,FXSelector,void*);
00119 long onUpdNavigable(FXObject*,FXSelector,void*);
00120 public:
00121 enum {
00122 ID_FILEFILTER=FXPacker::ID_LAST,
00123 ID_ACCEPT,
00124 ID_FILELIST,
00125 ID_DIRECTORY_UP,
00126 ID_DIRTREE,
00127 ID_NORMAL_SIZE,
00128 ID_MEDIUM_SIZE,
00129 ID_GIANT_SIZE,
00130 ID_HOME,
00131 ID_WORK,
00132 ID_BOOKMARK,
00133 ID_BOOKMENU,
00134 ID_VISIT,
00135 ID_NEW,
00136 ID_DELETE,
00137 ID_MOVE,
00138 ID_COPY,
00139 ID_LINK,
00140 ID_LAST
00141 };
00142 public:
00143
00144
00145 FXFileSelector(FXComposite *p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00146
00147
00148 FXButton *acceptButton() const { return accept; }
00149
00150
00151 FXButton *cancelButton() const { return cancel; }
00152
00153
00154 void setFilename(const FXString& path);
00155
00156
00157 FXString getFilename() const;
00158
00159
00160
00161
00162
00163
00164 FXString* getFilenames() const;
00165
00166
00167 void setPattern(const FXString& ptrn);
00168
00169
00170 FXString getPattern() const;
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186 void setPatternList(const FXString& patterns);
00187
00188
00189 FXString getPatternList() const;
00190
00191
00192
00193
00194
00195 void setCurrentPattern(FXint n);
00196
00197
00198 FXint getCurrentPattern() const;
00199
00200
00201 FXString getPatternText(FXint patno) const;
00202
00203
00204 void setPatternText(FXint patno,const FXString& text);
00205
00206
00207 FXint getNumPatterns() const;
00208
00209
00210 void allowPatternEntry(FXbool allow);
00211
00212
00213 FXbool allowPatternEntry() const;
00214
00215
00216
00217
00218
00219
00220
00221 static FXString patternFromText(const FXString& pattern);
00222
00223
00224
00225
00226
00227
00228 static FXString extensionFromPattern(const FXString& pattern);
00229
00230
00231 void setDirectory(const FXString& path);
00232
00233
00234 FXString getDirectory() const;
00235
00236
00237 void setItemSpace(FXint s);
00238
00239
00240 FXint getItemSpace() const;
00241
00242
00243 void setFileBoxStyle(FXuint style);
00244
00245
00246 FXuint getFileBoxStyle() const;
00247
00248
00249 void setSelectMode(FXuint mode);
00250
00251
00252 FXuint getSelectMode() const { return selectmode; }
00253
00254
00255 void setMatchMode(FXuint mode);
00256
00257
00258 FXuint getMatchMode() const;
00259
00260
00261 FXbool showHiddenFiles() const;
00262
00263
00264 void showHiddenFiles(FXbool showing);
00265
00266
00267 FXbool showImages() const;
00268
00269
00270 void showImages(FXbool showing);
00271
00272
00273 FXint getImageSize() const;
00274
00275
00276 void setImageSize(FXint size);
00277
00278
00279 void showReadOnly(FXbool show);
00280
00281
00282 FXbool shownReadOnly() const;
00283
00284
00285 void setReadOnly(FXbool state);
00286
00287
00288 FXbool getReadOnly() const;
00289
00290
00291 void allowNavigation(FXbool flag){ navigable=flag; }
00292
00293
00294 FXbool allowNavigation() const { return navigable; }
00295
00296
00297 virtual void save(FXStream& store) const;
00298
00299
00300 virtual void load(FXStream& store);
00301
00302
00303 virtual ~FXFileSelector();
00304 };
00305
00306 }
00307
00308 #endif