ui/motif/Fsb.h

changeset 925
df27741d02b5
equal deleted inserted replaced
924:6c6e97e06009 925:df27741d02b5
1 /*
2 * Copyright 2021 Olaf Wintermann
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
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 * int FSBFilterFunc(const char *pattern, const char *string)
148 *
149 * Checks whether the string matches the pattern
150 *
151 * Return
152 * zero if the string matches the pattern
153 * non-zero if there is no match
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 //void XnFileSelectionBoxSetDirList(Widget fsb, const char **dirlist, size_t nelm);
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 /* FSB_H */

mercurial