Newer
Older
/***********************************************************************
* FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
* Copyright (c) 2001-2009 by Lyle Johnson. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For further information please contact the author by e-mail
* at "lyle@lylejohnson.name".
***********************************************************************/
struct FXFileAssoc;
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
class FXIcon;
// File List options
enum {
FILELIST_SHOWHIDDEN = 0x04000000, /// Show hidden files or directories
FILELIST_SHOWDIRS = 0x08000000, /// Show only directories
FILELIST_SHOWFILES = 0x10000000, /// Show only files
FILELIST_SHOWIMAGES = 0x20000000, /// Show preview of images
FILELIST_NO_OWN_ASSOC = 0x40000000, /// Do not create associations for files
FILELIST_NO_PARENT = 0x80000000 /// Suppress display of '.' and '..'
};
/// File item
class FXFileItem : public FXIconItem {
public:
%extend {
/// Constructor
FXFileItem(const FXString& text,FXIcon* bi=NULL,FXIcon* mi=NULL,void* ITEMDATA=NULL){
return new FXRbFileItem(text,bi,mi,ITEMDATA);
}
}
/// Return true if this is a file item
FXbool isFile() const;
/// Return true if this is a directory item
FXbool isDirectory() const;
/// Return true if this is a share item
FXbool isShare() const;
/// Return true if this is an executable item
FXbool isExecutable() const;
/// Return true if this is a symbolic link item
FXbool isSymlink() const;
/// Return true if this is a character device item
FXbool isChardev() const;
/// Return true if this is a block device item
FXbool isBlockdev() const;
/// Return true if this is an FIFO item
FXbool isFifo() const;
/// Return true if this is a socket
FXbool isSocket() const;
/// Return the file-association object for this item
FXFileAssoc* getAssoc() const;
/// Return the file size for this item
FXlong getSize() const;
/// Return the date for this item
FXTime getDate() const;
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
/// Destructor
virtual ~FXFileItem();
};
DECLARE_FXOBJECT_VIRTUALS(FXFileItem)
DECLARE_FXICONITEM_VIRTUALS(FXFileItem)
// Rename these methods
%rename(getHiddenFilesShown) FXFileList::showHiddenFiles() const;
%rename(setHiddenFilesShown) FXFileList::showHiddenFiles(FXbool showing);
%rename(getOnlyDirectoriesShown) FXFileList::showOnlyDirectories() const;
%rename(setOnlyDirectoriesShown) FXFileList::showOnlyDirectories(FXbool shown);
%rename(getShowImages) FXFileList::showImages() const;
%rename(setShowImages) FXFileList::showImages(FXbool showing);
/// Return TRUE if showing parent directories
%rename("parentDirsShown?") FXFileList::showParents() const;
/// Show parent directories
%rename("parentDirsShown=") FXFileList::showParents(FXbool shown);
%typemap(check) FXint FILELIST_ITEM_INDEX {
if ($1 < 0 || $1 >= arg1->getNumItems()) {
rb_raise(rb_eIndexError, "file list item index out of bounds");
}
}
%apply FXint FILELIST_ITEM_INDEX { FXint index };
/**
* A File List widget provides an icon rich view of the file system.
* It automatically updates itself periodically by re-scanning the file system
* for any changes. As it scans the displayed directory, it automatically
* determines the icons to be displayed by consulting the file associations registry
* settings. A number of messages can be sent to the File List to control the
* filter pattern, sort category, sorting order, case sensitivity, and hidden file
* display mode.
* The File list widget supports drags and drops of files.
*/
class FXFileList : public FXIconList {
public:
long onOpenTimer(FXObject*,FXSelector,void* PTR_IGNORE);
long onRefreshTimer(FXObject*,FXSelector,void* PTR_IGNORE);
long onDNDEnter(FXObject*,FXSelector,void* PTR_EVENT);
long onDNDLeave(FXObject*,FXSelector,void* PTR_EVENT);
long onDNDMotion(FXObject*,FXSelector,void* PTR_EVENT);
long onDNDDrop(FXObject*,FXSelector,void* PTR_EVENT);
long onDNDRequest(FXObject*,FXSelector,void* PTR_EVENT);
long onBeginDrag(FXObject*,FXSelector,void* PTR_EVENT);
long onEndDrag(FXObject*,FXSelector,void* PTR_EVENT);
long onDragged(FXObject*,FXSelector,void* PTR_EVENT);
long onCmdSetValue(FXObject*,FXSelector,void* PTR_CSTRING);
long onCmdGetStringValue(FXObject*,FXSelector,void* PTR_STRING);
long onCmdSetStringValue(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdDirectoryUp(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdDirectoryUp(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortByName(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortByName(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortByType(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortByType(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortBySize(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortBySize(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortByTime(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortByTime(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortByUser(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortByUser(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortByGroup(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortByGroup(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortReverse(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortReverse(FXObject*,FXSelector,void* PTR_IGNORE); // FIXME
long onCmdSortCase(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdSortCase(FXObject*,FXSelector,void* PTR_NULL); // FIXME
long onCmdSetPattern(FXObject*,FXSelector,void* PTR_CSTRING);
long onUpdSetPattern(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdSetDirectory(FXObject*,FXSelector,void* PTR_CSTRING);
long onUpdSetDirectory(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdToggleHidden(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdToggleHidden(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdShowHidden(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdShowHidden(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdHideHidden(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdHideHidden(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdToggleImages(FXObject*,FXSelector,void* PTR_IGNORE);
long onUpdToggleImages(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdHeader(FXObject*,FXSelector,void* PTR_UINT);
long onUpdHeader(FXObject*,FXSelector,void* PTR_IGNORE);
long onCmdRefresh(FXObject*,FXSelector,void* PTR_IGNORE);
public:
static FXint ascending(const FXIconItem* a,const FXIconItem* b);
static FXint descending(const FXIconItem* a,const FXIconItem* b);
static FXint ascendingCase(const FXIconItem* a,const FXIconItem* b);
static FXint descendingCase(const FXIconItem* a,const FXIconItem* b);
static FXint ascendingType(const FXIconItem* a,const FXIconItem* b);
static FXint descendingType(const FXIconItem* a,const FXIconItem* b);
static FXint ascendingSize(const FXIconItem* a,const FXIconItem* b);
static FXint descendingSize(const FXIconItem* a,const FXIconItem* b);
static FXint ascendingTime(const FXIconItem* a,const FXIconItem* b);
static FXint descendingTime(const FXIconItem* a,const FXIconItem* b);
static FXint ascendingUser(const FXIconItem* a,const FXIconItem* b);
static FXint descendingUser(const FXIconItem* a,const FXIconItem* b);
static FXint ascendingGroup(const FXIconItem* a,const FXIconItem* b);
static FXint descendingGroup(const FXIconItem* a,const FXIconItem* b);
public:
enum {
ID_REFRESHTIMER=FXIconList::ID_LAST,
ID_OPENTIMER,
ID_SORT_BY_NAME, /// Sort by name
ID_SORT_BY_TYPE, /// Sort by type
ID_SORT_BY_SIZE, /// Sort by size
ID_SORT_BY_TIME, /// Sort by access time
ID_SORT_BY_USER, /// Sort by owner name
ID_SORT_BY_GROUP, /// Sort by group name
ID_SORT_REVERSE, /// Reverse sort order
ID_SORT_CASE, /// Toggle sort case sensitivity
ID_DIRECTORY_UP, /// Move up one directory
ID_SET_PATTERN, /// Set match pattern
ID_SET_DIRECTORY, /// Set directory
ID_SHOW_HIDDEN, /// Show hidden files
ID_HIDE_HIDDEN, /// Hide hidden files
ID_TOGGLE_HIDDEN, /// Toggle display of hidden files
ID_TOGGLE_IMAGES, /// Toggle display of images
ID_REFRESH, /// Refresh immediately
ID_LAST
};
public:
%extend {
/// Construct a file list
FXFileList(FXComposite *p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0){
return new FXRbFileList(p,tgt,sel,opts,x,y,w,h);
}
}
/// Scan the current directory and update the items if needed, or if force is TRUE
void scan(FXbool force=TRUE);
/// Set current file
void setCurrentFile(const FXString& file,FXbool notify=FALSE);
/// Return current file
FXString getCurrentFile() const;
/// Set current directory
void setDirectory(const FXString& path);
/// Return current directory
FXString getDirectory() const;
/// Change wildcard matching pattern
void setPattern(const FXString& ptrn);
/// Return wildcard pattern
FXString getPattern() const;
/// Return TRUE if item is a directory
FXbool isItemDirectory(FXint index) const;
/// Return TRUE if item is a directory
FXbool isItemShare(FXint index) const;
/// Return TRUE if item is a file
FXbool isItemFile(FXint index) const;
/// Return TRUE if item is executable
FXbool isItemExecutable(FXint index) const;
/// Return name of item at index
FXString getItemFilename(FXint index) const;
/// Return full pathname of item at index
FXString getItemPathname(FXint index) const;
/// Return file association of item
FXFileAssoc* getItemAssoc(FXint index) const;
/// Return wildcard matching mode
FXuint getMatchMode() const;
/// Change wildcard matching mode
void setMatchMode(FXuint mode);
/// Return TRUE if showing hidden files
/// Show or hide hidden files
void showHiddenFiles(FXbool showing);
/// Return TRUE if showing directories only
FXbool showOnlyDirectories() const;
/// Show directories only
void showOnlyDirectories(FXbool shown);
/// Return TRUE if showing files only
FXbool showOnlyFiles() const;
/// Show files only
void showOnlyFiles(FXbool shown);
/// Return TRUE if image preview on
FXbool showImages() const;
/// Show or hide preview images
void showImages(FXbool showing);
/// Return images preview size
FXint getImageSize() const;
/// Change images preview size
void setImageSize(FXint size);
/// Return TRUE if showing parent directories
FXbool showParents() const;
/// Show parent directories
void showParents(FXbool shown);
/// Change file associations
void setAssociations(FXFileDict* assoc);
/// Return file associations
FXFileDict* getAssociations() const;
/// Destructor
virtual ~FXFileList();
};
%clear FXint index;
DECLARE_FXOBJECT_VIRTUALS(FXFileList)
DECLARE_FXID_VIRTUALS(FXFileList)
DECLARE_FXDRAWABLE_VIRTUALS(FXFileList)
DECLARE_FXWINDOW_VIRTUALS(FXFileList)
DECLARE_FXSCROLLAREA_VIRTUALS(FXFileList)
DECLARE_FXICONLIST_VIRTUALS(FXFileList)