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 FXFILELIST_H
00025
#define FXFILELIST_H
00026
00027
#ifndef FXICONLIST_H
00028
#include "FXIconList.h"
00029
#endif
00030
00031
namespace FX {
00032
00033
struct FXFileAssoc;
00034
class FXFileDict;
00035
class FXFileList;
00036
class FXIcon;
00037
class FXIconSource;
00038
class FXIconDict;
00039
00040
00041
00042
enum {
00043
FILELIST_SHOWHIDDEN = 0x04000000,
00044
FILELIST_SHOWDIRS = 0x08000000,
00045
FILELIST_SHOWFILES = 0x10000000,
00046
FILELIST_SHOWIMAGES = 0x20000000,
00047
FILELIST_NO_OWN_ASSOC = 0x40000000
00048 };
00049
00050
00051
00052
00053
class FXAPI FXFileItem :
public FXIconItem {
00054 FXDECLARE(FXFileItem)
00055 friend class FXFileList;
00056 protected:
00057 FXFileAssoc *assoc;
00058 FXFileItem *link;
00059 FXlong size;
00060 FXTime date;
00061 protected:
00062 FXFileItem():assoc(NULL),link(NULL),size(0),date(0){}
00063
protected:
00064
enum{
00065 FOLDER = 64,
00066 EXECUTABLE = 128,
00067 SYMLINK = 256,
00068 CHARDEV = 512,
00069 BLOCKDEV = 1024,
00070 FIFO = 2048,
00071 SOCK = 4096,
00072 SHARE = 8192
00073 };
00074
public:
00075
00076 FXFileItem(
const FXString& text,
FXIcon* bi=NULL,
FXIcon* mi=NULL,
void* ptr=NULL):
FXIconItem(text,bi,mi,ptr),assoc(NULL),link(NULL),size(0L),date(0){}
00077
00078
00079 FXbool isFile()
const {
return (state&(FOLDER|BLOCKDEV|CHARDEV|FIFO|SOCK|SHARE))==0; }
00080
00081
00082 FXbool isDirectory()
const {
return (state&FOLDER)!=0; }
00083
00084
00085 FXbool isShare()
const {
return (state&SHARE)!=0; }
00086
00087
00088 FXbool isExecutable()
const {
return (state&EXECUTABLE)!=0; }
00089
00090
00091 FXbool isSymlink()
const {
return (state&SYMLINK)!=0; }
00092
00093
00094 FXbool isChardev()
const {
return (state&CHARDEV)!=0; }
00095
00096
00097 FXbool isBlockdev()
const {
return (state&BLOCKDEV)!=0; }
00098
00099
00100 FXbool isFifo()
const {
return (state&FIFO)!=0; }
00101
00102
00103 FXbool isSocket()
const {
return (state&SOCK)!=0; }
00104
00105
00106
FXFileAssoc* getAssoc()
const {
return assoc; }
00107
00108
00109 FXlong getSize()
const {
return size; }
00110
00111
00112 FXTime getDate()
const {
return date; }
00113 };
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
class FXAPI FXFileList :
public FXIconList {
00126 FXDECLARE(FXFileList)
00127
protected:
00128
FXString directory;
00129
FXString orgdirectory;
00130
FXString dropdirectory;
00131
FXDragAction dropaction;
00132
FXString dragfiles;
00133
FXFileDict *associations;
00134 FXFileItem *list;
00135
FXString pattern;
00136 FXuint matchmode;
00137 FXuint counter;
00138 FXint imagesize;
00139 FXTime timestamp;
00140
FXIcon *big_folder;
00141
FXIcon *mini_folder;
00142
FXIcon *big_doc;
00143
FXIcon *mini_doc;
00144
FXIcon *big_app;
00145
FXIcon *mini_app;
00146
protected:
00147 FXFileList();
00148
virtual FXIconItem *createItem(
const FXString& text,
FXIcon *big,
FXIcon* mini,
void* ptr);
00149
void listItems(FXbool force);
00150
private:
00151 FXFileList(
const FXFileList&);
00152 FXFileList &operator=(
const FXFileList&);
00153
public:
00154
long onOpenTimer(
FXObject*,FXSelector,
void*);
00155
long onRefreshTimer(
FXObject*,FXSelector,
void*);
00156
long onDNDEnter(
FXObject*,FXSelector,
void*);
00157
long onDNDLeave(
FXObject*,FXSelector,
void*);
00158
long onDNDMotion(
FXObject*,FXSelector,
void*);
00159
long onDNDDrop(
FXObject*,FXSelector,
void*);
00160
long onDNDRequest(
FXObject*,FXSelector,
void*);
00161
long onBeginDrag(
FXObject*,FXSelector,
void*);
00162
long onEndDrag(
FXObject*,FXSelector,
void*);
00163
long onDragged(
FXObject*,FXSelector,
void*);
00164
long onCmdSetValue(
FXObject*,FXSelector,
void*);
00165
long onCmdGetStringValue(
FXObject*,FXSelector,
void*);
00166
long onCmdSetStringValue(
FXObject*,FXSelector,
void*);
00167
long onCmdDirectoryUp(
FXObject*,FXSelector,
void*);
00168
long onUpdDirectoryUp(
FXObject*,FXSelector,
void*);
00169
long onCmdSortByName(
FXObject*,FXSelector,
void*);
00170
long onUpdSortByName(
FXObject*,FXSelector,
void*);
00171
long onCmdSortByType(
FXObject*,FXSelector,
void*);
00172
long onUpdSortByType(
FXObject*,FXSelector,
void*);
00173
long onCmdSortBySize(
FXObject*,FXSelector,
void*);
00174
long onUpdSortBySize(
FXObject*,FXSelector,
void*);
00175
long onCmdSortByTime(
FXObject*,FXSelector,
void*);
00176
long onUpdSortByTime(
FXObject*,FXSelector,
void*);
00177
long onCmdSortByUser(
FXObject*,FXSelector,
void*);
00178
long onUpdSortByUser(
FXObject*,FXSelector,
void*);
00179
long onCmdSortByGroup(
FXObject*,FXSelector,
void*);
00180
long onUpdSortByGroup(
FXObject*,FXSelector,
void*);
00181
long onCmdSortReverse(
FXObject*,FXSelector,
void*);
00182
long onUpdSortReverse(
FXObject*,FXSelector,
void*);
00183
long onCmdSortCase(
FXObject*,FXSelector,
void*);
00184
long onUpdSortCase(
FXObject*,FXSelector,
void*);
00185
long onCmdSetPattern(
FXObject*,FXSelector,
void*);
00186
long onUpdSetPattern(
FXObject*,FXSelector,
void*);
00187
long onCmdSetDirectory(
FXObject*,FXSelector,
void*);
00188
long onUpdSetDirectory(
FXObject*,FXSelector,
void*);
00189
long onCmdToggleHidden(
FXObject*,FXSelector,
void*);
00190
long onUpdToggleHidden(
FXObject*,FXSelector,
void*);
00191
long onCmdShowHidden(
FXObject*,FXSelector,
void*);
00192
long onUpdShowHidden(
FXObject*,FXSelector,
void*);
00193
long onCmdHideHidden(
FXObject*,FXSelector,
void*);
00194
long onUpdHideHidden(
FXObject*,FXSelector,
void*);
00195
long onCmdToggleImages(
FXObject*,FXSelector,
void*);
00196
long onUpdToggleImages(
FXObject*,FXSelector,
void*);
00197
long onCmdHeader(
FXObject*,FXSelector,
void*);
00198
long onUpdHeader(
FXObject*,FXSelector,
void*);
00199
long onCmdRefresh(
FXObject*,FXSelector,
void*);
00200
public:
00201
static FXint ascending(
const FXIconItem* pa,
const FXIconItem* pb);
00202
static FXint descending(
const FXIconItem* pa,
const FXIconItem* pb);
00203
static FXint ascendingCase(
const FXIconItem* pa,
const FXIconItem* pb);
00204
static FXint descendingCase(
const FXIconItem* pa,
const FXIconItem* pb);
00205
static FXint ascendingType(
const FXIconItem* pa,
const FXIconItem* pb);
00206
static FXint descendingType(
const FXIconItem* pa,
const FXIconItem* pb);
00207
static FXint ascendingSize(
const FXIconItem* pa,
const FXIconItem* pb);
00208
static FXint descendingSize(
const FXIconItem* pa,
const FXIconItem* pb);
00209
static FXint ascendingTime(
const FXIconItem* pa,
const FXIconItem* pb);
00210
static FXint descendingTime(
const FXIconItem* pa,
const FXIconItem* pb);
00211
static FXint ascendingUser(
const FXIconItem* pa,
const FXIconItem* pb);
00212
static FXint descendingUser(
const FXIconItem* pa,
const FXIconItem* pb);
00213
static FXint ascendingGroup(
const FXIconItem* pa,
const FXIconItem* pb);
00214
static FXint descendingGroup(
const FXIconItem* pa,
const FXIconItem* pb);
00215
public:
00216
enum {
00217 ID_REFRESHTIMER=FXIconList::ID_LAST,
00218 ID_OPENTIMER,
00219 ID_SORT_BY_NAME,
00220 ID_SORT_BY_TYPE,
00221 ID_SORT_BY_SIZE,
00222 ID_SORT_BY_TIME,
00223 ID_SORT_BY_USER,
00224 ID_SORT_BY_GROUP,
00225 ID_SORT_REVERSE,
00226 ID_SORT_CASE,
00227 ID_DIRECTORY_UP,
00228 ID_SET_PATTERN,
00229 ID_SET_DIRECTORY,
00230 ID_SHOW_HIDDEN,
00231 ID_HIDE_HIDDEN,
00232 ID_TOGGLE_HIDDEN,
00233 ID_TOGGLE_IMAGES,
00234 ID_REFRESH,
00235 ID_LAST
00236 };
00237 public:
00238
00239
00240 FXFileList(
FXComposite *p,
FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00241
00242
00243
virtual void create();
00244
00245
00246
virtual void detach();
00247
00248
00249
virtual void destroy();
00250
00251
00252
void scan(FXbool force=TRUE);
00253
00254
00255
void setCurrentFile(
const FXString& file);
00256
00257
00258
FXString getCurrentFile() const;
00259
00260
00261 void setDirectory(const
FXString& path);
00262
00263
00264
FXString getDirectory()
const {
return directory; }
00265
00266
00267
void setPattern(
const FXString& ptrn);
00268
00269
00270
FXString getPattern()
const {
return pattern; }
00271
00272
00273 FXbool isItemDirectory(FXint index)
const;
00274
00275
00276 FXbool isItemShare(FXint index)
const;
00277
00278
00279 FXbool isItemFile(FXint index)
const;
00280
00281
00282 FXbool isItemExecutable(FXint index)
const;
00283
00284
00285 FXString getItemFilename(FXint index)
const;
00286
00287
00288 FXString getItemPathname(FXint index)
const;
00289
00290
00291 FXFileAssoc* getItemAssoc(FXint index)
const;
00292
00293
00294 FXuint getMatchMode()
const {
return matchmode; }
00295
00296
00297
void setMatchMode(FXuint mode);
00298
00299
00300 FXbool showHiddenFiles() const;
00301
00302
00303
void showHiddenFiles(FXbool showing);
00304
00305
00306 FXbool showOnlyDirectories() const;
00307
00308
00309
void showOnlyDirectories(FXbool shown);
00310
00311
00312 FXbool showOnlyFiles() const;
00313
00314
00315
void showOnlyFiles(FXbool shown);
00316
00317
00318 FXbool showImages() const;
00319
00320
00321
void showImages(FXbool showing);
00322
00323
00324 FXint getImageSize()
const {
return imagesize; }
00325
00326
00327
void setImageSize(FXint size);
00328
00329
00330
void setAssociations(
FXFileDict* assoc);
00331
00332
00333
FXFileDict* getAssociations()
const {
return associations; }
00334
00335
00336
virtual void save(FXStream& store)
const;
00337
00338
00339
virtual void load(FXStream& store);
00340
00341
00342
virtual ~FXFileList();
00343 };
00344
00345 }
00346
00347
#endif