1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #ifndef FSB_H
24 #define FSB_H
25
26 #include <X11/Intrinsic.h>
27 #include <Xm/PrimitiveP.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 extern WidgetClass xnFsbWidgetClass;
34
35 #define FILEDIALOG_OPEN 1
36 #define FILEDIALOG_SAVE 2
37
38 #define FILEDIALOG_OK 1
39 #define FILEDIALOG_CANCEL 2
40
41 #define XnNwidgetSpacing
"fsbWidgetSpacing"
42 #define XnNwindowSpacing
"fsbWindowSpacing"
43
44 #define XnNfsbType
"fsbType"
45 #define XnCfsbType
"fsbType"
46
47 #define XnNshowHidden
"showHidden"
48 #define XnCshowHidden
"showHidden"
49 #define XnNshowHiddenButton
"showHiddenButton"
50 #define XnCshowHiddenButton
"showHiddenButton"
51
52 #define XnNshowViewMenu
"showViewMenu"
53 #define XnCshowViewMenu
"showViewMenu"
54
55 #define XnNselectedView
"fsbSelectedView"
56 #define XnCselectedView
"fsbSelectedView"
57
58 #define XnNdirectory
"directory"
59 #define XnCdirectory
"directory"
60 #define XnNselectedPath
"selectedPath"
61 #define XnCselectedPath
"selectedPath"
62 #define XnNhomePath
"homePath"
63 #define XnChomePath
"homePath"
64
65 #define XnNfilter
"filter"
66 #define XnCfilter
"filter"
67
68 #define XnNfilterFunc
"filterFunc"
69 #define XnCfilterFunc
"filterFunc"
70
71 #define XnNlabelListView
"labelListView"
72 #define XnClabelListView
"labelListView"
73 #define XnNlabelDetailView
"labelDetailView"
74 #define XnClabelDetailView
"labelDetailView"
75 #define XnNlabelOpenFileTitle
"labelOpenFileTitle"
76 #define XnClabelOpenFileTitle
"labelOpenFileTitle"
77 #define XnNlabelSaveFileTitle
"labelSaveFileTitle"
78 #define XnClabelSaveFileTitle
"labelSaveFileTitel"
79 #define XnNlabelDirUp
"labelDirUp"
80 #define XnClabelDirUp
"labelDirUp"
81 #define XnNlabelHome
"labelHome"
82 #define XnClabelHome
"labelHome"
83 #define XnNlabelNewFolder
"labelNewFolder"
84 #define XnClabelNewFolder
"labelNewFolder"
85 #define XnNlabelFilter
"labelFilter"
86 #define XnClabelFilter
"labelFilter"
87 #define XnNlabelFilterButton
"labelFilterButton"
88 #define XnClabelFilterButton
"labelFilterButton"
89 #define XnNlabelShowHiddenFiles
"labelShowHiddenFiles"
90 #define XnClabelShowHiddenFiles
"labelShowHiddenFiles"
91 #define XnNlabelDirectories
"labelDirectories"
92 #define XnClabelDirectories
"labelDirectories"
93 #define XnNlabelFiles
"labelFiles"
94 #define XnClabelFiles
"labelFiles"
95 #define XnNlabelRename
"labelRename"
96 #define XnClabelRename
"labelRename"
97 #define XnNlabelDelete
"labelDelete"
98 #define XnClabelDelete
"labelDelete"
99 #define XnNlabelOpen
"labelOpen"
100 #define XnClabelOpen
"labelOpen"
101 #define XnNlabelSave
"labelSave"
102 #define XnClabelSave
"labelSave"
103 #define XnNlabelOk
"labelOk"
104 #define XnClabelOk
"labelOk"
105 #define XnNlabelCancel
"labelCancel"
106 #define XnClabelCancel
"labelCancel"
107 #define XnNlabelHelp
"labelHelp"
108 #define XnClabelHelp
"labelHelp"
109 #define XnNlabelFileName
"labelFileName"
110 #define XnClabelFileName
"labelFileName"
111 #define XnNlabelDirectoryName
"labelDirectoryName"
112 #define XnClabelDirectoryName
"labelDirectoryName"
113 #define XnNlabelNewFileName
"labelNewFileName"
114 #define XnClabelNewFileName
"labelNewFileName"
115 #define XnNlabelDeleteFile
"labelDeleteFile"
116 #define XnClabelDeleteFile
"labelDeleteFile"
117 #define XnNdetailHeadings
"detailHeadings"
118 #define XnCdetailHeadings
"detailHeadings"
119 #define XnNdateFormatSameYear
"dateFormatSameYear"
120 #define XnCdateFormatSameYear
"dateFormatSameYear"
121 #define XnNdateFormatOtherYear
"dateFormatOtherYear"
122 #define XnCdateFormatOtherYear
"dateFormatOtherYear"
123 #define XnNsuffixBytes
"suffixBytes"
124 #define XnCsuffixBytes
"suffixBytes"
125 #define XnNsuffixKB
"suffixKB"
126 #define XnCsuffixKB
"suffixKB"
127 #define XnNsuffixMB
"suffixMB"
128 #define XnCsuffixMB
"suffixMB"
129 #define XnNsuffixGB
"suffixGB"
130 #define XnCsuffixGB
"suffixGB"
131 #define XnNsuffixTB
"suffixTB"
132 #define XnCsuffixTB
"suffixTB"
133 #define XnNerrorTitle
"errorTitle"
134 #define XnCerrorTitle
"errorTitle"
135 #define XnNerrorIllegalChar
"errorIllegalChar"
136 #define XnCerrorIllegalChar
"errorIllegalChar"
137 #define XnNerrorRename
"errorRename"
138 #define XnCerrorRename
"errorRename"
139 #define XnNerrorCreateFolder
"errorCreateFolder"
140 #define XnCerrorCreateFolder
"errorCreateFolder"
141 #define XnNerrorDelete
"errorDelete"
142 #define XnCerrorDelete
"errorDelete"
143 #define XnNerrorOpenDir
"errorOpenDir"
144 #define XnCerrorOpenDir
"errorOpenDir"
145
146
147
148
149
150
151
152
153
154
155 typedef int(*FSBFilterFunc)(
const char*,
const char*);
156
157
158 typedef struct FileElm FileElm;
159 struct FileElm {
160 char *path;
161 int isDirectory;
162 unsigned long long size;
163 time_t lastModified;
164 };
165
166 typedef struct {
167 Widget view;
168 Widget focus;
169 } FSBViewWidgets;
170
171 enum XnFSBChild {
172 XnFSB_DIR_UP_BUTTON =
0,
173 XnFSB_HOME_BUTTON,
174 XnFSB_NEW_FOLDER_BUTTON,
175 XnFSB_DETAIL_TOGGLE_BUTTON,
176 XnFSB_VIEW_OPTION_BUTTON,
177 XnFSB_FILTER_DROPDOWN,
178 XnFSB_FILTER_BUTTON,
179 XnFSB_SHOW_HIDDEN_TOGGLE_BUTTON,
180 XnFSB_DIRECTORIES_LABEL,
181 XnFSB_FILES_LABEL,
182 XnFSB_DIRLIST,
183 XnFSB_FILELIST,
184 XnFSB_GRID,
185 XnFSB_OK_BUTTON,
186 XnFSB_CANCEL_BUTTON,
187 XnFSB_HELP_BUTTON
188 };
189
190 typedef FSBViewWidgets(*FSBViewCreateProc)(Widget parent, ArgList args,
int n,
void *userData);
191 typedef void(*FSBViewUpdateProc)(Widget fsb, Widget view, FileElm *dirs,
int dircount, FileElm *files,
int filecount,
const char *filter,
int maxnamelen,
void *userData);
192 typedef void(*FSBViewSelectProc)(Widget fsb, Widget view,
const char *item);
193 typedef void(*FSBViewCleanupProc)(Widget fsb, Widget view,
void *userData);
194 typedef void(*FSBViewDestroyProc)(Widget fsb, Widget view,
void *userData);
195
196 Widget XnCreateFileSelectionDialog(
197 Widget parent,
198 String name,
199 ArgList arglist,
200 Cardinal argcount);
201
202 Widget XnCreateFileSelectionBox(
203 Widget parent,
204 String name,
205 ArgList arglist,
206 Cardinal argcount);
207
208 void XnFileSelectionBoxAddView(
209 Widget fsb,
210 const char *name,
211 FSBViewCreateProc create,
212 FSBViewUpdateProc update,
213 FSBViewSelectProc select,
214 FSBViewCleanupProc cleanup,
215 FSBViewDestroyProc destroy,
216 Boolean useDirList,
217 void *userData);
218
219
220
221 Widget XnFileSelectionBoxWorkArea(Widget fsb);
222
223 Widget XnFileSelectionBoxGetChild(Widget fsb,
enum XnFSBChild child);
224
225 void XnFileSelectionBoxDeleteFilters(Widget fsb);
226
227 void XnFileSelectionBoxAddFilter(Widget fsb,
const char *filter);
228
229 #ifdef __cplusplus
230 }
231 #endif
232
233 #endif
234