Sun, 07 Dec 2025 15:45:30 +0100
rename combobox to dropdown
|
925
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * Copyright 2021 Olaf Wintermann |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | * Permission is hereby granted, free of charge, to any person obtaining a |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * copy of this software and associated documentation files (the "Software"), |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * to deal in the Software without restriction, including without limitation |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * and/or sell copies of the Software, and to permit persons to whom the |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * Software is furnished to do so, subject to the following conditions: |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * The above copyright notice and this permission notice shall be included in |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * all copies or substantial portions of the Software. |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * DEALINGS IN THE SOFTWARE. |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | //define FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | #include "Fsb.h" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | #include "FsbP.h" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | #include <stdio.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #include <stdlib.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #include <string.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | #include <unistd.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | #include <time.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | #include <inttypes.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
34 | #include <errno.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
36 | #include <sys/stat.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
37 | #include <limits.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | #include <dirent.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | #include <fnmatch.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
40 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
41 | #include <Xm/XmAll.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
42 | #include <Xm/DropDown.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
43 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
44 | #include "pathbar.h" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
45 | |
|
927
b8c0f718b141
move default path elm func to common
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
925
diff
changeset
|
46 | #include "../common/utils.h" |
|
b8c0f718b141
move default path elm func to common
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
925
diff
changeset
|
47 | |
|
925
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
48 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | #include <XmL/Grid.h> |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
50 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
51 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
52 | #define WIDGET_SPACING 5 |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
53 | #define WINDOW_SPACING 8 |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
54 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
55 | #define BUTTON_EXTRA_SPACE 4 |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
56 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
57 | #define DATE_FORMAT_SAME_YEAR "%b %d %H:%M" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
58 | #define DATE_FORMAT_OTHER_YEAR "%b %d %Y" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
60 | #define KB_SUFFIX "KiB" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
61 | #define MB_SUFFIX "MiB" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | #define GB_SUFFIX "GiB" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | #define TB_SUFFIX "TiB" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
64 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
65 | #define FSB_ERROR_TITLE "Error" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
66 | #define FSB_ERROR_CHAR "Character '/' is not allowed in file names" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
67 | #define FSB_ERROR_RENAME "Cannot rename file: %s" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
68 | #define FSB_ERROR_DELETE "Cannot delete file: %s" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
69 | #define FSB_ERROR_CREATE_FOLDER "Cannot create folder: %s" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
70 | #define FSB_ERROR_OPEN_DIR "Cannot open directory: %s" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
71 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
72 | #define FSB_DETAIL_HEADINGS "Name|Size|Last Modified" |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
73 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
74 | static void fsb_class_init(void); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
75 | static void fsb_class_part_init (WidgetClass wc); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
76 | static void fsb_init(Widget request, Widget neww, ArgList args, Cardinal *num_args); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
77 | static void fsb_resize(Widget widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
78 | static void fsb_realize(Widget widget, XtValueMask *mask, XSetWindowAttributes *attributes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
79 | static void fsb_destroy(Widget widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
80 | static Boolean fsb_set_values(Widget old, Widget request, Widget neww, ArgList args, Cardinal *num_args); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
81 | static Boolean fsb_acceptfocus(Widget widget, Time *time); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
82 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
83 | static void fsb_insert_child(Widget child); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
84 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
85 | static void fsb_mapcb(Widget widget, XtPointer u, XtPointer cb); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
86 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
87 | static int FSBGlobFilter(const char *a, const char *b); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
88 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
89 | static void FSBUpdateTitle(Widget w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
90 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
91 | static void FocusInAP(Widget w, XEvent *event, String *args, Cardinal *nArgs); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
92 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
93 | static void ErrDialog(XnFileSelectionBox w, const char *title, const char *errmsg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
94 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
95 | static void FSBRename(XnFileSelectionBox fsb, const char *path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
96 | static void FSBDelete(XnFileSelectionBox fsb, const char *path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
97 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
98 | static void FSBSelectItem(XnFileSelectionBox fsb, const char *item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
99 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
100 | static char* set_selected_path(XnFileSelectionBox data, XmString item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
101 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
102 | static void FileContextMenuCB(Widget item, XtPointer index, XtPointer cd); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
103 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
104 | static Widget CreateContextMenu(XnFileSelectionBox fsb, Widget parent, XtCallbackProc callback); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
105 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
106 | static void FileListUpdate(Widget fsb, Widget view, FileElm *dirlist, int dircount, FileElm *files, int filecount, const char *filter, int maxnamelen, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
107 | static void FileListSelect(Widget fsb, Widget view, const char *item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
108 | static void FileListCleanup(Widget fsb, Widget view, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
109 | static void FileListDestroy(Widget fsb, Widget view, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
110 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
111 | static void FileListActivateCB(Widget w, XnFileSelectionBox data, XmListCallbackStruct *cb); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
112 | static void FileListSelectCB(Widget w, XnFileSelectionBox data, XmListCallbackStruct *cb); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
113 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
114 | static void FileListWidgetAdd(XnFileSelectionBox fsb, Widget w, int showHidden, const char *filter, FileElm *ls, int count); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
115 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
116 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
117 | static void FileListDetailUpdate(Widget fsb, Widget view, FileElm *dirlist, int dircount, FileElm *files, int filecount, const char *filter, int maxnamelen, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
118 | static void FileListDetailSelect(Widget fsb, Widget view, const char *item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
119 | static void FileListDetailCleanup(Widget fsb, Widget view, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
120 | static void FileListDetailDestroy(Widget fsb, Widget view, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
121 | static void FileListDetailAdjustColWidth(Widget grid); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
122 | static void FileListDetailAdd(XnFileSelectionBox fsb, Widget grid, int showHidden, const char *filter, FileElm *ls, int count, int maxWidth); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
123 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
124 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
125 | static void FSBNewFolder(Widget w, XnFileSelectionBox data, XtPointer u); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
126 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
127 | static void FSBHome(Widget w, XnFileSelectionBox data, XtPointer u); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
128 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
129 | static void FileSelectionCallback(XnFileSelectionBox fsb, XtCallbackList cb, int reason, const char *value); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
130 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
131 | static void CreateUI(XnFileSelectionBox w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
132 | static FSBViewWidgets CreateView(XnFileSelectionBox w, FSBViewCreateProc createProc, void *userData, Boolean useDirList); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
133 | static void AddViewMenuItem(XnFileSelectionBox w, const char *name, int viewIndex); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
134 | static void SelectView(XnFileSelectionBox f, int view); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
135 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
136 | static char* FSBDialogTitle(Widget w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
137 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
138 | static FSBViewWidgets CreateListView(Widget fsb, ArgList args, int n, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
139 | static FSBViewWidgets CreateDetailView(Widget fsb, ArgList args, int n, void *userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
140 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
141 | static const char* GetHomeDir(void); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
142 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
143 | static char* ConcatPath(const char *parent, const char *name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
144 | static char* FileName(char *path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
145 | static char* ParentPath(const char *path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
146 | //static int CheckFileName(const char *name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
147 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
148 | static int filedialog_update_dir(XnFileSelectionBox data, const char *path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
149 | static void filedialog_cleanup_filedata(XnFileSelectionBox data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
150 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
151 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
152 | static XtResource resources[] = { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
153 | {XmNokCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList), XtOffset(XnFileSelectionBox, fsb.okCallback), XmRCallback, NULL}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
154 | {XmNcancelCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList), XtOffset(XnFileSelectionBox, fsb.cancelCallback), XmRCallback, NULL}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
155 | {XnNwidgetSpacing, XmCSpacing, XmRDimension, sizeof(Dimension), XtOffset(XnFileSelectionBox, fsb.widgetSpacing), XmRImmediate, (XtPointer)WIDGET_SPACING}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
156 | {XnNwindowSpacing, XmCSpacing, XmRDimension, sizeof(Dimension), XtOffset(XnFileSelectionBox, fsb.windowSpacing), XmRImmediate, (XtPointer)WINDOW_SPACING}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
157 | {XnNfsbType, XnCfsbType, XmRInt, sizeof(int), XtOffset(XnFileSelectionBox, fsb.type), XmRImmediate, (XtPointer)FILEDIALOG_OPEN}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
158 | {XnNshowHidden, XnCshowHidden, XmRBoolean, sizeof(Boolean), XtOffset(XnFileSelectionBox, fsb.showHidden), XmRImmediate, (XtPointer)False}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
159 | {XnNshowHiddenButton, XnCshowHiddenButton, XmRBoolean, sizeof(Boolean), XtOffset(XnFileSelectionBox, fsb.showHiddenButton), XmRImmediate, (XtPointer)True}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
160 | {XnNshowViewMenu, XnCshowViewMenu, XmRBoolean, sizeof(Boolean), XtOffset(XnFileSelectionBox, fsb.showViewMenu), XmRImmediate, (XtPointer)False}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
161 | {XnNselectedView, XnCselectedView, XmRInt, sizeof(int), XtOffset(XnFileSelectionBox, fsb.selectedview), XmRImmediate, (XtPointer)0}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
162 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
163 | {XnNdirectory, XnCdirectory, XmRString, sizeof(XmString), XtOffset(XnFileSelectionBox, fsb.currentPath), XmRString, NULL}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
164 | {XnNselectedPath, XnCselectedPath, XmRString, sizeof(XmString), XtOffset(XnFileSelectionBox, fsb.selectedPath), XmRString, NULL}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
165 | {XnNhomePath, XnChomePath, XmRString, sizeof(XmString), XtOffset(XnFileSelectionBox, fsb.homePath), XmRString, NULL}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
166 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
167 | {XnNfilter,XnCfilter,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.filterStr), XmRString, "*"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
168 | {XnNfilterFunc,XnCfilterFunc,XmRFunction,sizeof(FSBFilterFunc),XtOffset(XnFileSelectionBox, fsb.filterFunc), XmRFunction, NULL}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
169 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
170 | {XnNlabelListView,XnClabelListView,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelListView), XmRString, "List"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
171 | {XnNlabelDetailView,XnClabelDetailView,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelDetailView), XmRString, "Detail"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
172 | {XnNlabelOpenFileTitle,XnClabelOpenFileTitle,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelOpenFileTitle), XmRString, "Open File"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
173 | {XnNlabelSaveFileTitle,XnClabelSaveFileTitle,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelSaveFileTitle), XmRString, "Save File"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
174 | {XnNlabelDirUp,XnClabelDirUp,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelDirUp), XmRString, "Dir Up"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
175 | {XnNlabelHome,XnClabelHome,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelHome), XmRString, "Home"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
176 | {XnNlabelNewFolder,XnClabelNewFolder,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelNewFolder), XmRString, "New Folder"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
177 | {XnNlabelFilterButton,XnClabelFilterButton,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelFilterButton), XmRString, "Filter"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
178 | {XnNlabelShowHiddenFiles,XnClabelShowHiddenFiles,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelShowHiddenFiles), XmRString, "Show hiden files"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
179 | {XnNlabelDirectories,XnClabelDirectories,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelDirectories), XmRString, "Directories"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
180 | {XnNlabelFiles,XnClabelFiles,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelFiles), XmRString, "Files"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
181 | {XnNlabelRename,XnClabelRename,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelRename), XmRString, "Rename"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
182 | {XnNlabelDelete,XnClabelDelete,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelDelete), XmRString, "Delete"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
183 | {XnNlabelOpen,XnClabelOpen,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelOpen), XmRString, "Open"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
184 | {XnNlabelSave,XnClabelSave,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelSave), XmRString, "Save"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
185 | {XnNlabelOk,XnClabelOk,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelOk), XmRString, "OK"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
186 | {XnNlabelCancel,XnClabelCancel,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelCancel), XmRString, "Cancel"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
187 | {XnNlabelHelp,XnClabelHelp,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelHelp), XmRString, "Help"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
188 | {XnNlabelFileName,XnClabelFileName,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelFileName), XmRString, "New File Name"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
189 | {XnNlabelDirectoryName,XnClabelDirectoryName,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelDirectoryName), XmRString, "Directory name:"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
190 | {XnNlabelNewFileName,XnClabelNewFileName,XmRXmString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelNewFileName), XmRString, "New file name:"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
191 | {XnNlabelDeleteFile,XnClabelDeleteFile,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.labelDeleteFile), XmRString, "Delete file '%s'?"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
192 | {XnNdetailHeadings,XnCdetailHeadings,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.detailHeadings), XmRString,FSB_DETAIL_HEADINGS}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
193 | {XnNdateFormatSameYear,XnCdateFormatSameYear,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.dateFormatSameYear), XmRString,DATE_FORMAT_SAME_YEAR}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
194 | {XnNdateFormatOtherYear,XnNdateFormatOtherYear,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.dateFormatOtherYear), XmRString,DATE_FORMAT_OTHER_YEAR}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
195 | {XnNsuffixBytes,XnCsuffixBytes,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.suffixBytes), XmRString,"bytes"}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
196 | {XnNsuffixKB,XnCsuffixKB,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.suffixKB), XmRString,KB_SUFFIX}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
197 | {XnNsuffixMB,XnCsuffixKB,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.suffixMB), XmRString,MB_SUFFIX}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
198 | {XnNsuffixGB,XnCsuffixKB,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.suffixGB), XmRString,GB_SUFFIX}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
199 | {XnNsuffixTB,XnCsuffixKB,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.suffixTB), XmRString,TB_SUFFIX}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
200 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
201 | {XnNerrorTitle,XnCerrorTitle,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.errorTitle), XmRString,FSB_ERROR_TITLE}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
202 | {XnNerrorIllegalChar,XnCerrorIllegalChar,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.errorIllegalChar), XmRString,FSB_ERROR_CHAR}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
203 | {XnNerrorRename,XnCerrorRename,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.errorRename), XmRString,FSB_ERROR_RENAME}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
204 | {XnNerrorCreateFolder,XnCerrorCreateFolder,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.errorFolder), XmRString,FSB_ERROR_CREATE_FOLDER}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
205 | {XnNerrorDelete,XnCerrorDelete,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.errorDelete), XmRString,FSB_ERROR_DELETE}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
206 | {XnNerrorOpenDir,XnCerrorOpenDir,XmRString,sizeof(XmString),XtOffset(XnFileSelectionBox, fsb.errorOpenDir), XmRString,FSB_ERROR_OPEN_DIR} |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
207 | }; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
208 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
209 | static XtActionsRec actionslist[] = { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
210 | {"focusIn", FocusInAP}, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
211 | {"NULL", NULL} |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
212 | }; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
213 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
214 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
215 | static char defaultTranslations[] = "<FocusIn>: focusIn()"; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
216 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
217 | static XtResource constraints[] = {}; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
218 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
219 | FSBClassRec fsbWidgetClassRec = { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
220 | // Core Class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
221 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
222 | (WidgetClass)&xmFormClassRec, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
223 | "XnFSB", // class_name |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
224 | sizeof(FSBRec), // widget_size |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
225 | fsb_class_init, // class_initialize |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
226 | fsb_class_part_init, // class_part_initialize |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
227 | FALSE, // class_inited |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
228 | fsb_init, // initialize |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
229 | NULL, // initialize_hook |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
230 | fsb_realize, // realize |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
231 | actionslist, // actions |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
232 | XtNumber(actionslist), // num_actions |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
233 | resources, // resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
234 | XtNumber(resources), // num_resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
235 | NULLQUARK, // xrm_class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
236 | True, // compress_motion |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
237 | True, // compress_exposure |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
238 | True, // compress_enterleave |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
239 | False, // visible_interest |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
240 | fsb_destroy, // destroy |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
241 | fsb_resize, // resize |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
242 | XtInheritExpose, // expose |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
243 | fsb_set_values, // set_values |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
244 | NULL, // set_values_hook |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
245 | XtInheritSetValuesAlmost, // set_values_almost |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
246 | NULL, // get_values_hook |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
247 | fsb_acceptfocus, // accept_focus |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
248 | XtVersion, // version |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
249 | NULL, // callback_offsets |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
250 | defaultTranslations, // tm_table |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
251 | XtInheritQueryGeometry, // query_geometry |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
252 | XtInheritDisplayAccelerator, // display_accelerator |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
253 | NULL, // extension |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
254 | }, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
255 | // Composite Class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
256 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
257 | XtInheritGeometryManager, // geometry_manager |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
258 | XtInheritChangeManaged, // change_managed |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
259 | fsb_insert_child, // insert_child |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
260 | XtInheritDeleteChild, // delete_child |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
261 | NULL, // extension |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
262 | }, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
263 | // Constraint Class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
264 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
265 | constraints, // resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
266 | XtNumber(constraints), // num_resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
267 | sizeof(XmFormConstraintRec), // constraint_size |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
268 | NULL, // initialize |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
269 | NULL, // destroy |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
270 | NULL, // set_value |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
271 | NULL, // extension |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
272 | }, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
273 | // XmManager Class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
274 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
275 | XtInheritTranslations, // translations |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
276 | NULL, // syn_resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
277 | 0, // num_syn_resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
278 | NULL, // syn_constraint_resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
279 | 0, // num_syn_constraint_resources |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
280 | XmInheritParentProcess, // parent_process |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
281 | NULL // extension |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
282 | }, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
283 | // XmBulletinBoard |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
284 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
285 | FALSE, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
286 | NULL, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
287 | XmInheritFocusMovedProc, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
288 | NULL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
289 | }, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
290 | // XmForm Class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
291 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
292 | NULL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
293 | }, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
294 | // FSB Class |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
295 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
296 | 0 |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
297 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
298 | }; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
299 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
300 | WidgetClass xnFsbWidgetClass = (WidgetClass)&fsbWidgetClassRec; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
301 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
302 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
303 | static void fsb_class_init(void) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
304 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
305 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
306 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
307 | static void fsb_class_part_init (WidgetClass wc) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
308 | FSBClassRec *fsbClass = (FSBClassRec*)wc; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
309 | XmFormClassRec *formClass = (XmFormClassRec*)xmFormWidgetClass; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
310 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
311 | fsbClass->constraint_class.initialize = formClass->constraint_class.initialize; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
312 | fsbClass->constraint_class.set_values = formClass->constraint_class.set_values; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
313 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
314 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
315 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
316 | #define STRDUP_RES(a) if(a) a = strdup(a) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
317 | #define XMS_STRDUP_RES(a) if(a) a = XmStringCopy(a) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
318 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
319 | static void fsb_init(Widget request, Widget neww, ArgList args, Cardinal *num_args) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
320 | XnFileSelectionBox fsb = (XnFileSelectionBox)neww; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
321 | (xmFormClassRec.core_class.initialize)(request, neww, args, num_args); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
322 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
323 | fsb->fsb.disable_set_values = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
324 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
325 | STRDUP_RES(fsb->fsb.homePath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
326 | STRDUP_RES(fsb->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
327 | STRDUP_RES(fsb->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
328 | STRDUP_RES(fsb->fsb.filterStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
329 | STRDUP_RES(fsb->fsb.labelListView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
330 | STRDUP_RES(fsb->fsb.labelDetailView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
331 | STRDUP_RES(fsb->fsb.labelOpenFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
332 | STRDUP_RES(fsb->fsb.labelSaveFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
333 | XMS_STRDUP_RES(fsb->fsb.labelDirUp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
334 | XMS_STRDUP_RES(fsb->fsb.labelHome); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
335 | XMS_STRDUP_RES(fsb->fsb.labelNewFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
336 | XMS_STRDUP_RES(fsb->fsb.labelFilterButton); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
337 | XMS_STRDUP_RES(fsb->fsb.labelShowHiddenFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
338 | XMS_STRDUP_RES(fsb->fsb.labelDirectories); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
339 | XMS_STRDUP_RES(fsb->fsb.labelFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
340 | XMS_STRDUP_RES(fsb->fsb.labelRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
341 | XMS_STRDUP_RES(fsb->fsb.labelDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
342 | XMS_STRDUP_RES(fsb->fsb.labelOpen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
343 | XMS_STRDUP_RES(fsb->fsb.labelSave); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
344 | XMS_STRDUP_RES(fsb->fsb.labelCancel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
345 | XMS_STRDUP_RES(fsb->fsb.labelHelp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
346 | XMS_STRDUP_RES(fsb->fsb.labelFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
347 | XMS_STRDUP_RES(fsb->fsb.labelDirectoryName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
348 | XMS_STRDUP_RES(fsb->fsb.labelNewFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
349 | STRDUP_RES(fsb->fsb.labelDeleteFile); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
350 | STRDUP_RES(fsb->fsb.detailHeadings); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
351 | STRDUP_RES(fsb->fsb.dateFormatSameYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
352 | STRDUP_RES(fsb->fsb.dateFormatOtherYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
353 | STRDUP_RES(fsb->fsb.suffixBytes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
354 | STRDUP_RES(fsb->fsb.suffixKB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
355 | STRDUP_RES(fsb->fsb.suffixMB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
356 | STRDUP_RES(fsb->fsb.suffixGB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
357 | STRDUP_RES(fsb->fsb.suffixTB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
358 | STRDUP_RES(fsb->fsb.errorTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
359 | STRDUP_RES(fsb->fsb.errorIllegalChar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
360 | STRDUP_RES(fsb->fsb.errorRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
361 | STRDUP_RES(fsb->fsb.errorFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
362 | STRDUP_RES(fsb->fsb.errorDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
363 | STRDUP_RES(fsb->fsb.errorOpenDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
364 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
365 | CreateUI((XnFileSelectionBox)fsb); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
366 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
367 | XtAddCallback(neww, XmNmapCallback, fsb_mapcb, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
368 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
369 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
370 | #define STR_FREE(a) if(a) free(a) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
371 | #define XMSTR_FREE(a) if(a) XmStringFree(a) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
372 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
373 | static void fsb_destroy(Widget widget) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
374 | XnFileSelectionBox w = (XnFileSelectionBox)widget; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
375 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
376 | // destroy all views |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
377 | for(int i=0;i<w->fsb.numviews;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
378 | FSBView v = w->fsb.view[i]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
379 | v.destroy(widget, v.widget, v.userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
380 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
381 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
382 | STR_FREE(w->fsb.homePath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
383 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
384 | // free filelists |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
385 | filedialog_cleanup_filedata(w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
386 | STR_FREE(w->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
387 | STR_FREE(w->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
388 | STR_FREE(w->fsb.filterStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
389 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
390 | PathBarDestroy(w->fsb.pathBar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
391 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
392 | // free strings |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
393 | STR_FREE(w->fsb.labelListView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
394 | STR_FREE(w->fsb.labelDetailView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
395 | STR_FREE(w->fsb.labelOpenFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
396 | STR_FREE(w->fsb.labelSaveFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
397 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
398 | XMSTR_FREE(w->fsb.labelDirUp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
399 | XMSTR_FREE(w->fsb.labelHome); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
400 | XMSTR_FREE(w->fsb.labelNewFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
401 | XMSTR_FREE(w->fsb.labelFilterButton); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
402 | XMSTR_FREE(w->fsb.labelShowHiddenFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
403 | XMSTR_FREE(w->fsb.labelDirectories); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
404 | XMSTR_FREE(w->fsb.labelFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
405 | XMSTR_FREE(w->fsb.labelRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
406 | XMSTR_FREE(w->fsb.labelDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
407 | XMSTR_FREE(w->fsb.labelOpen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
408 | XMSTR_FREE(w->fsb.labelSave); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
409 | XMSTR_FREE(w->fsb.labelCancel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
410 | XMSTR_FREE(w->fsb.labelHelp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
411 | XMSTR_FREE(w->fsb.labelFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
412 | XMSTR_FREE(w->fsb.labelDirectoryName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
413 | XMSTR_FREE(w->fsb.labelNewFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
414 | STR_FREE(w->fsb.labelDeleteFile); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
415 | STR_FREE(w->fsb.detailHeadings); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
416 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
417 | STR_FREE(w->fsb.dateFormatSameYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
418 | STR_FREE(w->fsb.dateFormatOtherYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
419 | STR_FREE(w->fsb.suffixBytes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
420 | STR_FREE(w->fsb.suffixKB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
421 | STR_FREE(w->fsb.suffixMB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
422 | STR_FREE(w->fsb.suffixGB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
423 | STR_FREE(w->fsb.suffixTB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
424 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
425 | STR_FREE(w->fsb.errorTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
426 | STR_FREE(w->fsb.errorIllegalChar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
427 | STR_FREE(w->fsb.errorRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
428 | STR_FREE(w->fsb.errorFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
429 | STR_FREE(w->fsb.errorDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
430 | STR_FREE(w->fsb.errorOpenDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
431 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
432 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
433 | static void fsb_resize(Widget widget) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
434 | XnFileSelectionBox w = (XnFileSelectionBox)widget; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
435 | (xmFormClassRec.core_class.resize)(widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
436 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
437 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
438 | if(w->fsb.view[w->fsb.selectedview].update == FileListDetailUpdate) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
439 | FileListDetailAdjustColWidth(w->fsb.grid); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
440 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
441 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
442 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
443 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
444 | static void fsb_realize(Widget widget, XtValueMask *mask, XSetWindowAttributes *attributes) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
445 | XnFileSelectionBox w = (XnFileSelectionBox)widget; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
446 | (xmFormClassRec.core_class.realize)(widget, mask, attributes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
447 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
448 | FSBView view = w->fsb.view[w->fsb.selectedview]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
449 | XmProcessTraversal(view.focus, XmTRAVERSE_CURRENT); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
450 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
451 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
452 | if(w->fsb.view[w->fsb.selectedview].update == FileListDetailUpdate) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
453 | FileListDetailAdjustColWidth(w->fsb.grid); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
454 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
455 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
456 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
457 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
458 | static void FSBUpdateTitle(Widget w) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
459 | if(XtParent(w)->core.widget_class == xmDialogShellWidgetClass) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
460 | char *title = FSBDialogTitle(w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
461 | XtVaSetValues(XtParent(w), XmNtitle, title, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
462 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
463 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
464 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
465 | static Boolean fsb_set_values(Widget old, Widget request, Widget neww, ArgList args, Cardinal *num_args) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
466 | Boolean r = False; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
467 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
468 | XnFileSelectionBox o = (XnFileSelectionBox)old; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
469 | XnFileSelectionBox n = (XnFileSelectionBox)neww; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
470 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
471 | int setOkBtnLabel = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
472 | int ismanaged = XtIsManaged(neww); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
473 | Dimension width, height; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
474 | if(!ismanaged) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
475 | width = n->core.width; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
476 | height = n->core.height; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
477 | if(n->fsb.pathBar) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
478 | n->fsb.pathBar->disableResize = True; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
479 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
480 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
481 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
482 | if(o->fsb.selectedview != n->fsb.selectedview) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
483 | int selectedview = n->fsb.selectedview; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
484 | n->fsb.selectedview = o->fsb.selectedview; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
485 | SelectView(n, selectedview); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
486 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
487 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
488 | char *updateDir = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
489 | int selectItem = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
490 | if(o->fsb.selectedPath != n->fsb.selectedPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
491 | STR_FREE(o->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
492 | STRDUP_RES(n->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
493 | XmTextFieldSetString(n->fsb.name, FileName(n->fsb.selectedPath)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
494 | // also update current directory |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
495 | updateDir = ParentPath(n->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
496 | selectItem = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
497 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
498 | if(o->fsb.currentPath != n->fsb.currentPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
499 | STR_FREE(o->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
500 | updateDir = strdup(n->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
501 | n->fsb.currentPath = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
502 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
503 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
504 | if(o->fsb.filterStr != n->fsb.filterStr) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
505 | STR_FREE(o->fsb.filterStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
506 | STRDUP_RES(n->fsb.filterStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
507 | XmTextFieldSetString(XmDropDownGetText(n->fsb.filter), n->fsb.filterStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
508 | if(!updateDir) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
509 | filedialog_update_dir(n, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
510 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
511 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
512 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
513 | if(updateDir) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
514 | filedialog_update_dir(n, updateDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
515 | PathBarSetPath(n->fsb.pathBar, updateDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
516 | free(updateDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
517 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
518 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
519 | if(o->fsb.type != n->fsb.type) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
520 | if(n->fsb.type == FILEDIALOG_OPEN) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
521 | XtVaSetValues(n->fsb.workarea, XmNbottomWidget, n->fsb.separator, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
522 | XtUnmanageChild(n->fsb.name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
523 | XtUnmanageChild(n->fsb.nameLabel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
524 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
525 | XtManageChild(n->fsb.name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
526 | XtManageChild(n->fsb.nameLabel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
527 | XtVaSetValues(n->fsb.workarea, XmNbottomWidget, n->fsb.nameLabel, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
528 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
529 | FSBUpdateTitle(neww); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
530 | setOkBtnLabel = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
531 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
532 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
533 | // label strings |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
534 | int updateTitle = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
535 | if(o->fsb.labelListView != n->fsb.labelListView) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
536 | STR_FREE(o->fsb.labelListView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
537 | STRDUP_RES(n->fsb.labelListView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
538 | XmString label = XmStringCreateLocalized(n->fsb.labelListView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
539 | XtVaSetValues(n->fsb.viewSelectorList, XmNlabelString, label, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
540 | XmStringFree(label); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
541 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
542 | if(o->fsb.labelDetailView != n->fsb.labelDetailView) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
543 | STR_FREE(o->fsb.labelDetailView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
544 | STRDUP_RES(n->fsb.labelDetailView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
545 | XmString label = XmStringCreateLocalized(n->fsb.labelDetailView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
546 | XtVaSetValues(n->fsb.viewSelectorDetail, XmNlabelString, label, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
547 | if(n->fsb.detailToggleButton) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
548 | XtVaSetValues(n->fsb.detailToggleButton, XmNlabelString, label, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
549 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
550 | XmStringFree(label); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
551 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
552 | if(o->fsb.labelOpenFileTitle != n->fsb.labelOpenFileTitle) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
553 | STR_FREE(o->fsb.labelOpenFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
554 | STRDUP_RES(n->fsb.labelOpenFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
555 | updateTitle = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
556 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
557 | if(o->fsb.labelSaveFileTitle != n->fsb.labelSaveFileTitle) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
558 | STR_FREE(o->fsb.labelSaveFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
559 | STRDUP_RES(n->fsb.labelSaveFileTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
560 | updateTitle = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
561 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
562 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
563 | if(o->fsb.labelDirUp != n->fsb.labelDirUp) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
564 | XMSTR_FREE(o->fsb.labelDirUp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
565 | XMS_STRDUP_RES(n->fsb.labelDirUp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
566 | XtVaSetValues(n->fsb.dirUp, XmNlabelString, n->fsb.labelDirUp, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
567 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
568 | if(o->fsb.labelHome != n->fsb.labelHome) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
569 | XMSTR_FREE(o->fsb.labelHome); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
570 | XMS_STRDUP_RES(n->fsb.labelHome); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
571 | XtVaSetValues(n->fsb.dirUp, XmNlabelString, n->fsb.labelHome, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
572 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
573 | if(o->fsb.labelNewFolder != n->fsb.labelNewFolder) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
574 | XMSTR_FREE(o->fsb.labelNewFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
575 | XMS_STRDUP_RES(n->fsb.labelNewFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
576 | XtVaSetValues(n->fsb.newFolder, XmNlabelString, n->fsb.labelNewFolder, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
577 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
578 | if(o->fsb.labelFilterButton != n->fsb.labelFilterButton) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
579 | XMSTR_FREE(o->fsb.labelFilterButton); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
580 | XMS_STRDUP_RES(n->fsb.labelFilterButton); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
581 | XtVaSetValues(n->fsb.filterButton, XmNlabelString, n->fsb.labelFilterButton, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
582 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
583 | if(o->fsb.labelShowHiddenFiles != n->fsb.labelShowHiddenFiles) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
584 | XMSTR_FREE(o->fsb.labelShowHiddenFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
585 | XMS_STRDUP_RES(n->fsb.labelShowHiddenFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
586 | XtVaSetValues(n->fsb.showHiddenButtonW, XmNlabelString, n->fsb.labelShowHiddenFiles, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
587 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
588 | if(o->fsb.labelDirectories != n->fsb.labelDirectories) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
589 | XMSTR_FREE(o->fsb.labelDirectories); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
590 | XMS_STRDUP_RES(n->fsb.labelDirectories); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
591 | XtVaSetValues(n->fsb.lsDirLabel, XmNlabelString, n->fsb.labelDirectories, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
592 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
593 | if(o->fsb.labelFiles != n->fsb.labelFiles) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
594 | XMSTR_FREE(o->fsb.labelFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
595 | XMS_STRDUP_RES(n->fsb.labelFiles); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
596 | XtVaSetValues(n->fsb.lsFileLabel, XmNlabelString, n->fsb.labelFiles, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
597 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
598 | int recreateContextMenu = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
599 | if(o->fsb.labelRename != n->fsb.labelRename) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
600 | XMSTR_FREE(o->fsb.labelRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
601 | XMS_STRDUP_RES(n->fsb.labelRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
602 | recreateContextMenu = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
603 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
604 | if(o->fsb.labelDelete != n->fsb.labelDelete) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
605 | XMSTR_FREE(o->fsb.labelDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
606 | XMS_STRDUP_RES(n->fsb.labelDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
607 | recreateContextMenu = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
608 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
609 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
610 | if(o->fsb.labelOpen != n->fsb.labelOpen) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
611 | XMSTR_FREE(o->fsb.labelOpen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
612 | XMS_STRDUP_RES(n->fsb.labelOpen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
613 | setOkBtnLabel = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
614 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
615 | if(o->fsb.labelSave != n->fsb.labelSave) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
616 | XMSTR_FREE(o->fsb.labelSave); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
617 | XMS_STRDUP_RES(n->fsb.labelSave); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
618 | setOkBtnLabel = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
619 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
620 | if(o->fsb.labelCancel != n->fsb.labelCancel) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
621 | XMSTR_FREE(o->fsb.labelCancel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
622 | XMS_STRDUP_RES(n->fsb.labelCancel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
623 | XtVaSetValues(n->fsb.cancelBtn, XmNlabelString, n->fsb.labelCancel, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
624 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
625 | if(o->fsb.labelHelp != n->fsb.labelHelp) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
626 | XMSTR_FREE(o->fsb.labelHelp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
627 | XMS_STRDUP_RES(n->fsb.labelHelp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
628 | XtVaSetValues(n->fsb.helpBtn, XmNlabelString, n->fsb.labelHelp, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
629 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
630 | if(o->fsb.labelFileName != n->fsb.labelFileName) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
631 | XMSTR_FREE(o->fsb.labelFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
632 | XMS_STRDUP_RES(n->fsb.labelFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
633 | XtVaSetValues(n->fsb.nameLabel, XmNlabelString, n->fsb.labelFileName, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
634 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
635 | if(o->fsb.labelDirectoryName != n->fsb.labelDirectoryName) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
636 | XMSTR_FREE(o->fsb.labelDirectoryName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
637 | XMS_STRDUP_RES(n->fsb.labelDirectoryName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
638 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
639 | if(o->fsb.labelNewFileName != n->fsb.labelNewFileName) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
640 | XMSTR_FREE(o->fsb.labelNewFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
641 | XMS_STRDUP_RES(n->fsb.labelNewFileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
642 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
643 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
644 | if(o->fsb.labelDeleteFile != n->fsb.labelDeleteFile) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
645 | STR_FREE(o->fsb.labelDeleteFile); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
646 | STRDUP_RES(n->fsb.labelDeleteFile); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
647 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
648 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
649 | if(o->fsb.detailHeadings != n->fsb.detailHeadings) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
650 | STR_FREE(o->fsb.detailHeadings); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
651 | STRDUP_RES(n->fsb.detailHeadings); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
652 | XtVaSetValues(n->fsb.grid, XmNsimpleHeadings, n->fsb.detailHeadings, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
653 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
654 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
655 | if(o->fsb.dateFormatSameYear != n->fsb.dateFormatSameYear) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
656 | STR_FREE(o->fsb.dateFormatSameYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
657 | STRDUP_RES(n->fsb.dateFormatSameYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
658 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
659 | if(o->fsb.dateFormatOtherYear != n->fsb.dateFormatOtherYear) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
660 | STR_FREE(o->fsb.dateFormatOtherYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
661 | STRDUP_RES(n->fsb.dateFormatOtherYear); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
662 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
663 | if(o->fsb.suffixBytes != n->fsb.suffixBytes) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
664 | STR_FREE(o->fsb.suffixBytes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
665 | STRDUP_RES(n->fsb.suffixBytes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
666 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
667 | if(o->fsb.suffixMB != n->fsb.suffixMB) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
668 | STR_FREE(o->fsb.suffixMB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
669 | STRDUP_RES(n->fsb.suffixMB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
670 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
671 | if(o->fsb.suffixGB != n->fsb.suffixGB) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
672 | STR_FREE(o->fsb.suffixGB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
673 | STRDUP_RES(n->fsb.suffixGB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
674 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
675 | if(o->fsb.suffixTB != n->fsb.suffixTB) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
676 | STR_FREE(o->fsb.suffixTB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
677 | STRDUP_RES(n->fsb.suffixTB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
678 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
679 | if(o->fsb.errorTitle != n->fsb.errorTitle) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
680 | STR_FREE(o->fsb.errorTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
681 | STRDUP_RES(n->fsb.errorTitle); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
682 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
683 | if(o->fsb.errorIllegalChar != n->fsb.errorIllegalChar) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
684 | STR_FREE(o->fsb.errorIllegalChar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
685 | STRDUP_RES(n->fsb.errorIllegalChar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
686 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
687 | if(o->fsb.errorRename != n->fsb.errorRename) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
688 | STR_FREE(o->fsb.errorRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
689 | STRDUP_RES(n->fsb.errorRename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
690 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
691 | if(o->fsb.errorFolder != n->fsb.errorFolder) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
692 | STR_FREE(o->fsb.errorFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
693 | STRDUP_RES(n->fsb.errorFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
694 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
695 | if(o->fsb.errorDelete != n->fsb.errorDelete) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
696 | STR_FREE(o->fsb.errorDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
697 | STRDUP_RES(n->fsb.errorDelete); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
698 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
699 | if(o->fsb.errorOpenDir != n->fsb.errorOpenDir) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
700 | STR_FREE(o->fsb.errorOpenDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
701 | STRDUP_RES(n->fsb.errorOpenDir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
702 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
703 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
704 | if(updateTitle) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
705 | FSBUpdateTitle(neww); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
706 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
707 | if(recreateContextMenu) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
708 | XtDestroyWidget(n->fsb.listContextMenu); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
709 | XtDestroyWidget(n->fsb.gridContextMenu); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
710 | n->fsb.listContextMenu = CreateContextMenu(n, n->fsb.filelist, FileContextMenuCB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
711 | n->fsb.gridContextMenu = CreateContextMenu(n, n->fsb.grid, FileContextMenuCB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
712 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
713 | if(setOkBtnLabel) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
714 | XtVaSetValues(n->fsb.okBtn, XmNlabelString, n->fsb.type == FILEDIALOG_OPEN ? n->fsb.labelOpen : n->fsb.labelSave, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
715 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
716 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
717 | if(!ismanaged && !n->fsb.disable_set_values) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
718 | n->fsb.disable_set_values = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
719 | XtVaSetValues(neww, XmNwidth, width, XmNheight, height, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
720 | n->fsb.disable_set_values = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
721 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
722 | if(n->fsb.pathBar) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
723 | n->fsb.pathBar->disableResize = False; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
724 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
725 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
726 | if(selectItem) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
727 | if(ismanaged) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
728 | FSBSelectItem(n, FileName(n->fsb.selectedPath)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
729 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
730 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
731 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
732 | Boolean fr = (xmFormClassRec.core_class.set_values)(old, request, neww, args, num_args); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
733 | return fr ? fr : r; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
734 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
735 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
736 | static void fsb_insert_child(Widget child) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
737 | XnFileSelectionBox p = (XnFileSelectionBox)XtParent(child); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
738 | (xmFormClassRec.composite_class.insert_child)(child); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
739 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
740 | if(!p->fsb.gui_created) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
741 | return; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
742 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
743 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
744 | // custom child widget insert |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
745 | XtVaSetValues(child, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
746 | XmNbottomAttachment, XmATTACH_WIDGET, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
747 | XmNbottomWidget, p->fsb.bottom_widget, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
748 | XmNbottomOffset, p->fsb.widgetSpacing, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
749 | XmNleftAttachment, XmATTACH_FORM, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
750 | XmNleftOffset, p->fsb.windowSpacing, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
751 | XmNrightAttachment, XmATTACH_FORM, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
752 | XmNrightAttachment, XmATTACH_FORM, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
753 | XmNrightOffset, p->fsb.windowSpacing, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
754 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
755 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
756 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
757 | XtVaSetValues(p->fsb.listform, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
758 | XmNbottomWidget, child, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
759 | XmNbottomOffset, 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
760 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
761 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
762 | p->fsb.workarea = child; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
763 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
764 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
765 | Boolean fsb_acceptfocus(Widget widget, Time *time) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
766 | return 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
767 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
768 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
769 | static void fsb_mapcb(Widget widget, XtPointer u, XtPointer cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
770 | XnFileSelectionBox w = (XnFileSelectionBox)widget; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
771 | pathbar_resize(w->fsb.pathBar->widget, w->fsb.pathBar, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
772 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
773 | if(w->fsb.type == FILEDIALOG_OPEN) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
774 | FSBView view = w->fsb.view[w->fsb.selectedview]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
775 | XmProcessTraversal(view.focus, XmTRAVERSE_CURRENT); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
776 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
777 | XmProcessTraversal(w->fsb.name, XmTRAVERSE_CURRENT); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
778 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
779 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
780 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
781 | if(w->fsb.selectedPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
782 | FSBSelectItem(w, FileName(w->fsb.selectedPath)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
783 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
784 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
785 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
786 | static void FocusInAP(Widget w, XEvent *event, String *args, Cardinal *nArgs) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
787 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
788 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
789 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
790 | static int apply_filter(XnFileSelectionBox w, const char *pattern, const char *string) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
791 | if(!pattern) return 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
792 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
793 | FSBFilterFunc func = w->fsb.filterFunc ? w->fsb.filterFunc : FSBGlobFilter; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
794 | return func(pattern, string); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
795 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
796 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
797 | static int FSBGlobFilter(const char *a, const char *b) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
798 | return fnmatch(a, b, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
799 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
800 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
801 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
802 | static void errCB(Widget w, XtPointer d, XtPointer cbs) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
803 | XtDestroyWidget(w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
804 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
805 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
806 | static void ErrDialog(XnFileSelectionBox w, const char *title, const char *errmsg) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
807 | Arg args[16]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
808 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
809 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
810 | XmString titleStr = XmStringCreateLocalized((char*)title); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
811 | XmString msg = XmStringCreateLocalized((char*)errmsg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
812 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
813 | XtSetArg(args[n], XmNdialogTitle, titleStr); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
814 | XtSetArg(args[n], XmNselectionLabelString, msg); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
815 | XtSetArg(args[n], XmNokLabelString, w->fsb.labelOk); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
816 | XtSetArg(args[n], XmNcancelLabelString, w->fsb.labelCancel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
817 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
818 | Widget dialog = XmCreatePromptDialog ((Widget)w, "NewFolderPrompt", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
819 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
820 | Widget help = XmSelectionBoxGetChild(dialog, XmDIALOG_HELP_BUTTON); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
821 | XtUnmanageChild(help); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
822 | Widget cancel = XmSelectionBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
823 | XtUnmanageChild(cancel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
824 | Widget text = XmSelectionBoxGetChild(dialog, XmDIALOG_TEXT); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
825 | XtUnmanageChild(text); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
826 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
827 | XtAddCallback(dialog, XmNokCallback, errCB, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
828 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
829 | XtManageChild(dialog); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
830 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
831 | XmStringFree(titleStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
832 | XmStringFree(msg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
833 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
834 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
835 | static void rename_file_cb(Widget w, const char *path, XmSelectionBoxCallbackStruct *cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
836 | XnFileSelectionBox fsb = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
837 | XtVaGetValues(w, XmNuserData, &fsb, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
838 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
839 | char *fileName = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
840 | XmStringGetLtoR(cb->value, XmSTRING_DEFAULT_CHARSET, &fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
841 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
842 | // make sure the new file name doesn't contain a path separator |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
843 | if(strchr(fileName, '/')) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
844 | ErrDialog(fsb, fsb->fsb.errorTitle, fsb->fsb.errorIllegalChar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
845 | XtFree(fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
846 | return; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
847 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
848 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
849 | char *parentPath = ParentPath(path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
850 | char *newPath = ConcatPath(parentPath, fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
851 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
852 | if(rename(path, newPath)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
853 | char errmsg[256]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
854 | snprintf(errmsg, 256, fsb->fsb.errorRename, strerror(errno)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
855 | ErrDialog(fsb, fsb->fsb.errorTitle, errmsg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
856 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
857 | filedialog_update_dir(fsb, parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
858 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
859 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
860 | free(parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
861 | free(newPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
862 | XtFree(fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
863 | XtDestroyWidget(XtParent(w)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
864 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
865 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
866 | static void selectionbox_cancel(Widget w, XtPointer data, XtPointer d) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
867 | XtDestroyWidget(XtParent(w)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
868 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
869 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
870 | static void FSBRename(XnFileSelectionBox fsb, const char *path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
871 | Arg args[16]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
872 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
873 | Widget w = (Widget)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
874 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
875 | char *name = FileName((char*)path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
876 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
877 | XmString filename = XmStringCreateLocalized(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
878 | XtSetArg(args[n], XmNselectionLabelString,fsb->fsb.labelNewFileName); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
879 | XtSetArg(args[n], XmNtextString, filename); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
880 | XtSetArg(args[n], XmNuserData, fsb); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
881 | XtSetArg(args[n], XmNdialogTitle, fsb->fsb.labelRename); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
882 | XtSetArg(args[n], XmNokLabelString, fsb->fsb.labelOk); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
883 | XtSetArg(args[n], XmNcancelLabelString, fsb->fsb.labelCancel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
884 | Widget dialog = XmCreatePromptDialog (w, "RenameFilePrompt", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
885 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
886 | Widget help = XmSelectionBoxGetChild(dialog, XmDIALOG_HELP_BUTTON); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
887 | XtUnmanageChild(help); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
888 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
889 | XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)rename_file_cb, (char*)path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
890 | XtAddCallback(dialog, XmNcancelCallback, (XtCallbackProc)selectionbox_cancel, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
891 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
892 | XmStringFree(filename); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
893 | XtManageChild(dialog); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
894 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
895 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
896 | static void delete_file_cb(Widget w, const char *path, XmSelectionBoxCallbackStruct *cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
897 | XnFileSelectionBox fsb = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
898 | XtVaGetValues(w, XmNuserData, &fsb, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
899 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
900 | if(unlink(path)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
901 | char errmsg[256]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
902 | snprintf(errmsg, 256, fsb->fsb.errorDelete, strerror(errno)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
903 | ErrDialog(fsb, fsb->fsb.errorTitle, errmsg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
904 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
905 | char *parentPath = ParentPath(path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
906 | filedialog_update_dir(fsb, parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
907 | free(parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
908 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
909 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
910 | XtDestroyWidget(XtParent(w)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
911 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
912 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
913 | static void FSBDelete(XnFileSelectionBox fsb, const char *path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
914 | Arg args[16]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
915 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
916 | Widget w = (Widget)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
917 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
918 | char *name = FileName((char*)path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
919 | size_t len = strlen(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
920 | size_t msglen = len + strlen(fsb->fsb.labelDeleteFile) + 4; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
921 | char *msg = malloc(msglen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
922 | snprintf(msg, msglen, fsb->fsb.labelDeleteFile, name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
923 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
924 | XmString prompt = XmStringCreateLocalized(msg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
925 | XtSetArg(args[n], XmNselectionLabelString, prompt); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
926 | XtSetArg(args[n], XmNuserData, fsb); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
927 | XtSetArg(args[n], XmNdialogTitle, fsb->fsb.labelDelete); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
928 | XtSetArg(args[n], XmNokLabelString, fsb->fsb.labelOk); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
929 | XtSetArg(args[n], XmNcancelLabelString, fsb->fsb.labelCancel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
930 | Widget dialog = XmCreatePromptDialog (w, "DeleteFilePrompt", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
931 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
932 | Widget help = XmSelectionBoxGetChild(dialog, XmDIALOG_HELP_BUTTON); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
933 | XtUnmanageChild(help); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
934 | Widget text = XmSelectionBoxGetChild(dialog, XmDIALOG_TEXT); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
935 | XtUnmanageChild(text); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
936 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
937 | XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)delete_file_cb, (char*)path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
938 | XtAddCallback(dialog, XmNcancelCallback, (XtCallbackProc)selectionbox_cancel, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
939 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
940 | free(msg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
941 | XmStringFree(prompt); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
942 | XtManageChild(dialog); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
943 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
944 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
945 | static void FSBSelectItem(XnFileSelectionBox fsb, const char *item) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
946 | FSBView view = fsb->fsb.view[fsb->fsb.selectedview]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
947 | if(view.select) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
948 | view.select((Widget)fsb, view.widget, item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
949 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
950 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
951 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
952 | static char* set_selected_path(XnFileSelectionBox data, XmString item) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
953 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
954 | char *name = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
955 | XmStringGetLtoR(item, XmFONTLIST_DEFAULT_TAG, &name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
956 | if(!name) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
957 | return NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
958 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
959 | char *path = ConcatPath(data->fsb.currentPath, name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
960 | XtFree(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
961 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
962 | if(data->fsb.selectedPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
963 | free(data->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
964 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
965 | data->fsb.selectedPath = path; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
966 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
967 | return path; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
968 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
969 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
970 | // item0: rename |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
971 | // item1: delete |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
972 | static void FileContextMenuCB(Widget item, XtPointer index, XtPointer cd) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
973 | intptr_t i = (intptr_t)index; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
974 | Widget parent = XtParent(item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
975 | XnFileSelectionBox fsb = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
976 | XtVaGetValues(parent, XmNuserData, &fsb, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
977 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
978 | const char *path = fsb->fsb.selectedPath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
979 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
980 | if(i == 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
981 | FSBRename(fsb, path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
982 | } else if(i == 1) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
983 | FSBDelete(fsb, path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
984 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
985 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
986 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
987 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
988 | static Widget CreateContextMenu(XnFileSelectionBox fsb, Widget parent, XtCallbackProc callback) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
989 | return XmVaCreateSimplePopupMenu( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
990 | parent, "popup", callback, XmNpopupEnabled, XmPOPUP_AUTOMATIC, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
991 | XmNuserData, fsb, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
992 | XmVaPUSHBUTTON, fsb->fsb.labelRename, 'R', NULL, NULL, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
993 | XmVaPUSHBUTTON, fsb->fsb.labelDelete, 'D', NULL, NULL, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
994 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
995 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
996 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
997 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
998 | static void FileListUpdate(Widget fsb, Widget view, FileElm *dirs, int dircount, FileElm *files, int filecount, const char *filter, int maxnamelen, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
999 | XnFileSelectionBox data = userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1000 | FileListWidgetAdd(data, data->fsb.filelist, data->fsb.showHidden, filter, files, filecount); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1001 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1002 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1003 | static void FileListSelect(Widget fsb, Widget view, const char *item) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1004 | XnFileSelectionBox w = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1005 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1006 | int numItems = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1007 | XmStringTable items = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1008 | XtVaGetValues(w->fsb.filelist, XmNitemCount, &numItems, XmNitems, &items, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1009 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1010 | for(int i=0;i<numItems;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1011 | char *str = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1012 | XmStringGetLtoR(items[i], XmFONTLIST_DEFAULT_TAG, &str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1013 | if(!strcmp(str, item)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1014 | XmListSelectPos(w->fsb.filelist, i+1, False); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1015 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1016 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1017 | XtFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1018 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1019 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1020 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1021 | static void FileListCleanup(Widget fsb, Widget view, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1022 | XnFileSelectionBox data = userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1023 | XmListDeleteAllItems(data->fsb.filelist); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1024 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1025 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1026 | static void FileListDestroy(Widget fsb, Widget view, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1027 | // unused |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1028 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1029 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1030 | static void FileListActivateCB(Widget w, XnFileSelectionBox data, XmListCallbackStruct *cb) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1031 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1032 | char *path = set_selected_path(data, cb->item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1033 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1034 | data->fsb.end = True; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1035 | data->fsb.status = FILEDIALOG_OK; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1036 | data->fsb.selIsDir = False; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1037 | FileSelectionCallback(data, data->fsb.okCallback, XmCR_OK, data->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1038 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1039 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1040 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1041 | static void FileListSelectCB(Widget w, XnFileSelectionBox data, XmListCallbackStruct *cb) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1042 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1043 | if(data->fsb.type == FILEDIALOG_SAVE) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1044 | char *name = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1045 | XmStringGetLtoR(cb->item, XmFONTLIST_DEFAULT_TAG, &name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1046 | XmTextFieldSetString(data->fsb.name, name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1047 | XtFree(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1048 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1049 | char *path = set_selected_path(data, cb->item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1050 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1051 | data->fsb.selIsDir = False; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1052 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1053 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1054 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1055 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1056 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1057 | static void FileListWidgetAdd(XnFileSelectionBox fsb, Widget w, int showHidden, const char *filter, FileElm *ls, int count) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1058 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1059 | if(count > 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1060 | XmStringTable items = calloc(count, sizeof(XmString)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1061 | int i = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1062 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1063 | for(int j=0;j<count;j++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1064 | FileElm *e = &ls[j]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1065 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1066 | char *name = FileName(e->path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1067 | if((!showHidden && name[0] == '.') || apply_filter(fsb, filter, name)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1068 | continue; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1069 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1070 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1071 | items[i] = XmStringCreateLocalized(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1072 | i++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1073 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1074 | XmListAddItems(w, items, i, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1075 | for(i=0;i<count;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1076 | XmStringFree(items[i]); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1077 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1078 | free(items); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1079 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1080 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1081 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1082 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1083 | static void FileListDetailUpdate(Widget fsb, Widget view, FileElm *dirs, int dircount, FileElm *files, int filecount, const char *filter, int maxnamelen, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1084 | XnFileSelectionBox data = userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1085 | FileListDetailAdd(data, data->fsb.grid, data->fsb.showHidden, filter, files, filecount, maxnamelen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1086 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1087 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1088 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1089 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1090 | * create file size string with kb/mb/gb/tb suffix |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1091 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1092 | static char* size_str(XnFileSelectionBox fsb, FileElm *f) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1093 | char *str = malloc(16); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1094 | uint64_t size = f->size; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1095 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1096 | if(f->isDirectory) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1097 | str[0] = '\0'; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1098 | } else if(size < 0x400) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1099 | snprintf(str, 16, "%d %s", (int)size, fsb->fsb.suffixBytes); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1100 | } else if(size < 0x100000) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1101 | float s = (float)size/0x400; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1102 | int diff = (s*100 - (int)s*100); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1103 | if(diff > 90) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1104 | diff = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1105 | s += 0.10f; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1106 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1107 | if(size < 0x2800 && diff != 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1108 | // size < 10 KiB |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1109 | snprintf(str, 16, "%.1f %s", s, fsb->fsb.suffixKB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1110 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1111 | snprintf(str, 16, "%.0f %s", s, fsb->fsb.suffixKB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1112 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1113 | } else if(size < 0x40000000) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1114 | float s = (float)size/0x100000; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1115 | int diff = (s*100 - (int)s*100); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1116 | if(diff > 90) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1117 | diff = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1118 | s += 0.10f; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1119 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1120 | if(size < 0xa00000 && diff != 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1121 | // size < 10 MiB |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1122 | snprintf(str, 16, "%.1f %s", s, fsb->fsb.suffixMB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1123 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1124 | snprintf(str, 16, "%.0f %s", s, fsb->fsb.suffixMB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1125 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1126 | } else if(size < 0x1000000000ULL) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1127 | float s = (float)size/0x40000000; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1128 | int diff = (s*100 - (int)s*100); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1129 | if(diff > 90) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1130 | diff = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1131 | s += 0.10f; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1132 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1133 | if(size < 0x280000000 && diff != 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1134 | // size < 10 GiB |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1135 | snprintf(str, 16, "%.1f %s", s, fsb->fsb.suffixGB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1136 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1137 | snprintf(str, 16, "%.0f %s", s, fsb->fsb.suffixGB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1138 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1139 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1140 | size /= 1024; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1141 | float s = (float)size/0x40000000; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1142 | int diff = (s*100 - (int)s*100); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1143 | if(diff > 90) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1144 | diff = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1145 | s += 0.10f; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1146 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1147 | if(size < 0x280000000 && diff != 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1148 | // size < 10 TiB |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1149 | snprintf(str, 16, "%.1f %s", s, fsb->fsb.suffixTB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1150 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1151 | snprintf(str, 16, "%.0f %s", s, fsb->fsb.suffixTB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1152 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1153 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1154 | return str; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1155 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1156 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1157 | static char* date_str(XnFileSelectionBox fsb, time_t tm) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1158 | struct tm t; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1159 | struct tm n; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1160 | time_t now = time(NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1161 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1162 | localtime_r(&tm, &t); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1163 | localtime_r(&now, &n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1164 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1165 | char *str = malloc(24); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1166 | if(t.tm_year == n.tm_year) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1167 | strftime(str, 24, fsb->fsb.dateFormatSameYear, &t); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1168 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1169 | strftime(str, 24, fsb->fsb.dateFormatOtherYear, &t); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1170 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1171 | return str; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1172 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1173 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1174 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1175 | static void FileListDetailAdjustColWidth(Widget grid) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1176 | XmLGridColumn column0 = XmLGridGetColumn(grid, XmCONTENT, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1177 | XmLGridColumn column1 = XmLGridGetColumn(grid, XmCONTENT, 1); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1178 | XmLGridColumn column2 = XmLGridGetColumn(grid, XmCONTENT, 2); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1179 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1180 | Dimension col0Width = XmLGridColumnWidthInPixels(column0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1181 | Dimension col1Width = XmLGridColumnWidthInPixels(column1); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1182 | Dimension col2Width = XmLGridColumnWidthInPixels(column2); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1183 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1184 | Dimension totalWidth = col0Width + col1Width + col2Width; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1185 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1186 | Dimension gridWidth = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1187 | Dimension gridShadow = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1188 | XtVaGetValues(grid, XmNwidth, &gridWidth, XmNshadowThickness, &gridShadow, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1189 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1190 | Dimension widthDiff = gridWidth - totalWidth - gridShadow - gridShadow; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1191 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1192 | if(gridWidth > totalWidth) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1193 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1194 | XmNcolumnRangeStart, 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1195 | XmNcolumnRangeEnd, 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1196 | XmNcolumnWidth, col0Width + widthDiff - XmLGridVSBWidth(grid) - 2, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1197 | XmNcolumnSizePolicy, XmCONSTANT, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1198 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1199 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1200 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1201 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1202 | static void FileListDetailAdd(XnFileSelectionBox fsb, Widget grid, int showHidden, const char *filter, FileElm *ls, int count, int maxWidth) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1203 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1204 | XmLGridAddRows(grid, XmCONTENT, 1, count); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1205 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1206 | int row = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1207 | for(int i=0;i<count;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1208 | FileElm *e = &ls[i]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1209 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1210 | char *name = FileName(e->path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1211 | if((!showHidden && name[0] == '.') || (!e->isDirectory && apply_filter(fsb, filter, name))) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1212 | continue; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1213 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1214 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1215 | // name |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1216 | XmString str = XmStringCreateLocalized(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1217 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1218 | XmNcolumn, 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1219 | XmNrow, row, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1220 | XmNcellString, str, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1221 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1222 | // size |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1223 | char *szbuf = size_str(fsb, e); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1224 | str = XmStringCreateLocalized(szbuf); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1225 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1226 | XmNcolumn, 1, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1227 | XmNrow, row, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1228 | XmNcellString, str, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1229 | free(szbuf); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1230 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1231 | // date |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1232 | char *datebuf = date_str(fsb, e->lastModified); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1233 | str = XmStringCreateLocalized(datebuf); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1234 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1235 | XmNcolumn, 2, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1236 | XmNrow, row, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1237 | XmNcellString, str, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1238 | free(datebuf); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1239 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1240 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1241 | XtVaSetValues(grid, XmNrow, row, XmNrowUserData, e, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1242 | row++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1243 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1244 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1245 | // remove unused rows |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1246 | if(count > row) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1247 | XmLGridDeleteRows(grid, XmCONTENT, row, count-row); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1248 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1249 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1250 | if(maxWidth < 16) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1251 | maxWidth = 16; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1252 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1253 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1254 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1255 | XmNcolumnRangeStart, 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1256 | XmNcolumnRangeEnd, 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1257 | XmNcolumnWidth, maxWidth, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1258 | XmNcellAlignment, XmALIGNMENT_LEFT, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1259 | XmNcolumnSizePolicy, XmVARIABLE, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1260 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1261 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1262 | XmNcolumnRangeStart, 1, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1263 | XmNcolumnRangeEnd, 1, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1264 | XmNcolumnWidth, 9, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1265 | XmNcellAlignment, XmALIGNMENT_LEFT, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1266 | XmNcolumnSizePolicy, XmVARIABLE, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1267 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1268 | XtVaSetValues(grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1269 | XmNcolumnRangeStart, 2, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1270 | XmNcolumnRangeEnd, 2, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1271 | XmNcolumnWidth, 16, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1272 | XmNcellAlignment, XmALIGNMENT_RIGHT, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1273 | XmNcolumnSizePolicy, XmVARIABLE, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1274 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1275 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1276 | FileListDetailAdjustColWidth(grid); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1277 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1278 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1279 | static void FileListDetailSelect(Widget fsb, Widget view, const char *item) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1280 | XnFileSelectionBox w = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1281 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1282 | int numRows = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1283 | XtVaGetValues(w->fsb.grid, XmNrows, &numRows, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1284 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1285 | XmLGridColumn col = XmLGridGetColumn(w->fsb.grid, XmCONTENT, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1286 | for(int i=0;i<numRows;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1287 | XmLGridRow row = XmLGridGetRow(w->fsb.grid, XmCONTENT, i); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1288 | FileElm *elm = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1289 | XtVaGetValues(w->fsb.grid, XmNrowPtr, row, XmNcolumnPtr, col, XmNrowUserData, &elm, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1290 | if(elm) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1291 | if(!strcmp(item, FileName(elm->path))) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1292 | XmLGridSelectRow(w->fsb.grid, i, False); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1293 | XmLGridFocusAndShowRow(w->fsb.grid, i+1); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1294 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1295 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1296 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1297 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1298 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1299 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1300 | static void FileListDetailCleanup(Widget fsb, Widget view, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1301 | XnFileSelectionBox data = userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1302 | // cleanup grid |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1303 | Cardinal rows = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1304 | XtVaGetValues(data->fsb.grid, XmNrows, &rows, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1305 | XmLGridDeleteRows(data->fsb.grid, XmCONTENT, 0, rows); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1306 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1307 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1308 | static void FileListDetailDestroy(Widget fsb, Widget view, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1309 | // unused |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1310 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1311 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1312 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1313 | static void create_folder(Widget w, XnFileSelectionBox data, XmSelectionBoxCallbackStruct *cbs) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1314 | char *fileName = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1315 | XmStringGetLtoR(cbs->value, XmSTRING_DEFAULT_CHARSET, &fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1316 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1317 | char *newFolder = ConcatPath(data->fsb.currentPath ? data->fsb.currentPath : "", fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1318 | if(mkdir(newFolder, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1319 | char errmsg[256]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1320 | snprintf(errmsg, 256, data->fsb.errorFolder, strerror(errno)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1321 | ErrDialog(data, data->fsb.errorTitle, errmsg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1322 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1323 | char *p = strdup(data->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1324 | filedialog_update_dir(data, p); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1325 | free(p); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1326 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1327 | free(newFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1328 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1329 | XtDestroyWidget(XtParent(w)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1330 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1331 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1332 | static void new_folder_cancel(Widget w, XnFileSelectionBox data, XtPointer d) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1333 | XtDestroyWidget(XtParent(w)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1334 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1335 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1336 | static void FSBNewFolder(Widget w, XnFileSelectionBox data, XtPointer u) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1337 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1338 | Arg args[16]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1339 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1340 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1341 | XtSetArg(args[n], XmNdialogTitle, data->fsb.labelNewFolder); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1342 | XtSetArg (args[n], XmNselectionLabelString, data->fsb.labelDirectoryName); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1343 | XtSetArg(args[n], XmNokLabelString, data->fsb.labelOk); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1344 | XtSetArg(args[n], XmNcancelLabelString, data->fsb.labelCancel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1345 | Widget dialog = XmCreatePromptDialog (w, "NewFolderPrompt", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1346 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1347 | Widget help = XmSelectionBoxGetChild(dialog, XmDIALOG_HELP_BUTTON); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1348 | XtUnmanageChild(help); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1349 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1350 | XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)create_folder, data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1351 | XtAddCallback(dialog, XmNcancelCallback, (XtCallbackProc)new_folder_cancel, data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1352 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1353 | XtManageChild(dialog); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1354 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1355 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1356 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1357 | static void FSBHome(Widget w, XnFileSelectionBox data, XtPointer u) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1358 | const char *homePath = data->fsb.homePath ? data->fsb.homePath : GetHomeDir(); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1359 | filedialog_update_dir(data, homePath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1360 | PathBarSetPath(data->fsb.pathBar, homePath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1361 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1362 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1363 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1364 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1365 | * file_cmp_field |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1366 | * 0: compare path |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1367 | * 1: compare size |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1368 | * 2: compare mtime |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1369 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1370 | static int file_cmp_field = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1371 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1372 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1373 | * 1 or -1 |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1374 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1375 | static int file_cmp_order = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1376 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1377 | static int filecmp(const void *f1, const void *f2) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1378 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1379 | const FileElm *file1 = f1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1380 | const FileElm *file2 = f2; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1381 | if(file1->isDirectory != file2->isDirectory) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1382 | return file1->isDirectory < file2->isDirectory; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1383 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1384 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1385 | int cmp_field = file_cmp_field; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1386 | int cmp_order = file_cmp_order; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1387 | if(file1->isDirectory) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1388 | cmp_field = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1389 | cmp_order = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1390 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1391 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1392 | int ret = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1393 | switch(cmp_field) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1394 | case 0: { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1395 | ret = strcmp(FileName(file1->path), FileName(file2->path)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1396 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1397 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1398 | case 1: { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1399 | if(file1->size < file2->size) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1400 | ret = -1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1401 | } else if(file1->size == file2->size) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1402 | ret = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1403 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1404 | ret = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1405 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1406 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1407 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1408 | case 2: { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1409 | if(file1->lastModified < file2->lastModified) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1410 | ret = -1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1411 | } else if(file1->lastModified == file2->lastModified) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1412 | ret = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1413 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1414 | ret = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1415 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1416 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1417 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1418 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1419 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1420 | return ret * cmp_order; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1421 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1422 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1423 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1424 | static void free_files(FileElm *ls, int count) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1425 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1426 | for(int i=0;i<count;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1427 | if(ls[i].path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1428 | free(ls[i].path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1429 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1430 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1431 | free(ls); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1432 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1433 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1434 | static void filedialog_cleanup_filedata(XnFileSelectionBox data) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1435 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1436 | free_files(data->fsb.dirs, data->fsb.dircount); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1437 | free_files(data->fsb.files, data->fsb.filecount); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1438 | data->fsb.dirs = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1439 | data->fsb.files = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1440 | data->fsb.dircount = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1441 | data->fsb.filecount = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1442 | data->fsb.maxnamelen = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1443 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1444 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1445 | #define FILE_ARRAY_SIZE 1024 |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1446 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1447 | static void file_array_add(FileElm **files, int *alloc, int *count, FileElm elm) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1448 | int c = *count; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1449 | int a = *alloc; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1450 | if(c >= a) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1451 | a *= 2; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1452 | FileElm *newarray = realloc(*files, sizeof(FileElm) * a); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1453 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1454 | *files = newarray; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1455 | *alloc = a; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1456 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1457 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1458 | (*files)[c] = elm; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1459 | c++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1460 | *count = c; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1461 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1462 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1463 | static int filedialog_update_dir(XnFileSelectionBox data, const char *path) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1464 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1465 | DIR *dir = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1466 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1467 | // try to check first, if we can open the path |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1468 | dir = opendir(path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1469 | if(!dir) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1470 | char errmsg[256]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1471 | snprintf(errmsg, 256, data->fsb.errorOpenDir, strerror(errno)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1472 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1473 | ErrDialog(data, data->fsb.errorTitle, errmsg); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1474 | return 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1475 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1476 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1477 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1478 | FSBView view = data->fsb.view[data->fsb.selectedview]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1479 | view.cleanup((Widget)data, view.widget, view.userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1480 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1481 | if(view.useDirList) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1482 | XmListDeleteAllItems(data->fsb.dirlist); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1483 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1484 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1485 | /* read dir and insert items */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1486 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1487 | int dircount = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1488 | int filecount = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1489 | size_t maxNameLen = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1490 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1491 | FileElm *dirs = calloc(sizeof(FileElm), FILE_ARRAY_SIZE); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1492 | FileElm *files = calloc(sizeof(FileElm), FILE_ARRAY_SIZE); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1493 | int dirs_alloc = FILE_ARRAY_SIZE; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1494 | int files_alloc = FILE_ARRAY_SIZE; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1495 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1496 | filedialog_cleanup_filedata(data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1497 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1498 | /* dir reading complete - set the path textfield */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1499 | XmTextFieldSetString(data->fsb.path, (char*)path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1500 | char *oldPath = data->fsb.currentPath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1501 | data->fsb.currentPath = strdup(path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1502 | if(oldPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1503 | free(oldPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1504 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1505 | path = data->fsb.currentPath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1506 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1507 | struct dirent *ent; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1508 | while((ent = readdir(dir)) != NULL) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1509 | if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1510 | continue; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1511 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1512 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1513 | char *entpath = ConcatPath(path, ent->d_name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1514 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1515 | struct stat s; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1516 | if(stat(entpath, &s)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1517 | free(entpath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1518 | continue; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1519 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1520 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1521 | FileElm new_entry; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1522 | new_entry.path = entpath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1523 | new_entry.isDirectory = S_ISDIR(s.st_mode); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1524 | new_entry.size = (uint64_t)s.st_size; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1525 | new_entry.lastModified = s.st_mtime; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1526 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1527 | size_t nameLen = strlen(ent->d_name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1528 | if(nameLen > maxNameLen) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1529 | maxNameLen = nameLen; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1530 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1531 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1532 | if(new_entry.isDirectory) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1533 | file_array_add(&dirs, &dirs_alloc, &dircount, new_entry); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1534 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1535 | file_array_add(&files, &files_alloc, &filecount, new_entry); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1536 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1537 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1538 | closedir(dir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1539 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1540 | data->fsb.dirs = dirs; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1541 | data->fsb.files = files; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1542 | data->fsb.dircount = dircount; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1543 | data->fsb.filecount = filecount; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1544 | data->fsb.maxnamelen = maxNameLen; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1545 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1546 | // sort file arrays |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1547 | qsort(dirs, dircount, sizeof(FileElm), filecmp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1548 | qsort(files, filecount, sizeof(FileElm), filecmp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1549 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1550 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1551 | Widget filterTF = XmDropDownGetText(data->fsb.filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1552 | char *filter = XmTextFieldGetString(filterTF); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1553 | char *filterStr = filter; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1554 | if(!filter || strlen(filter) == 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1555 | filterStr = "*"; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1556 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1557 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1558 | if(view.useDirList) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1559 | FileListWidgetAdd(data, data->fsb.dirlist, data->fsb.showHidden, NULL, data->fsb.dirs, data->fsb.dircount); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1560 | view.update( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1561 | (Widget)data, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1562 | view.widget, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1563 | NULL, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1564 | 0, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1565 | data->fsb.files, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1566 | data->fsb.filecount, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1567 | filterStr, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1568 | data->fsb.maxnamelen, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1569 | view.userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1570 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1571 | view.update( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1572 | (Widget)data, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1573 | view.widget, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1574 | data->fsb.dirs, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1575 | data->fsb.dircount, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1576 | data->fsb.files, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1577 | data->fsb.filecount, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1578 | filterStr, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1579 | data->fsb.maxnamelen, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1580 | view.userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1581 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1582 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1583 | if(filter) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1584 | XtFree(filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1585 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1586 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1587 | return 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1588 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1589 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1590 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1591 | static void dirlist_activate(Widget w, XnFileSelectionBox data, XmListCallbackStruct *cb) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1592 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1593 | char *path = set_selected_path(data, cb->item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1594 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1595 | if(!filedialog_update_dir(data, path)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1596 | PathBarSetPath(data->fsb.pathBar, path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1597 | data->fsb.selIsDir = TRUE; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1598 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1599 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1600 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1601 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1602 | static void dirlist_select(Widget w, XnFileSelectionBox data, XmListCallbackStruct *cb) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1603 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1604 | char *path = set_selected_path(data, cb->item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1605 | if(path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1606 | data->fsb.selIsDir = TRUE; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1607 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1608 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1609 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1610 | static void filedialog_enable_detailview(Widget w, XnFileSelectionBox data, XmToggleButtonCallbackStruct *tb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1611 | SelectView(data, tb->set); // 0: list, 1: detail |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1612 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1613 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1614 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1615 | static void filedialog_setshowhidden( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1616 | Widget w, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1617 | XnFileSelectionBox data, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1618 | XmToggleButtonCallbackStruct *tb) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1619 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1620 | data->fsb.showHidden = tb->set; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1621 | filedialog_update_dir(data, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1622 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1623 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1624 | static void filedialog_filter(Widget w, XnFileSelectionBox data, XtPointer c) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1625 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1626 | filedialog_update_dir(data, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1627 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1628 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1629 | static void filedialog_update_filter(Widget w, XnFileSelectionBox data, XtPointer c) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1630 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1631 | filedialog_update_dir(data, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1632 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1633 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1634 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1635 | static void filedialog_goup(Widget w, XnFileSelectionBox data, XtPointer d) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1636 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1637 | char *newPath = ParentPath(data->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1638 | filedialog_update_dir(data, newPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1639 | PathBarSetPath(data->fsb.pathBar, newPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1640 | free(newPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1641 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1642 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1643 | static void filedialog_ok(Widget w, XnFileSelectionBox data, XtPointer d) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1644 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1645 | if(data->fsb.type == FILEDIALOG_SAVE) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1646 | char *newName = XmTextFieldGetString(data->fsb.name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1647 | if(newName) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1648 | if(strchr(newName, '/')) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1649 | ErrDialog(data, data->fsb.errorTitle, data->fsb.errorIllegalChar); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1650 | XtFree(newName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1651 | return; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1652 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1653 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1654 | if(strlen(newName) > 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1655 | char *selPath = ConcatPath(data->fsb.currentPath, newName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1656 | if(data->fsb.selectedPath) free(data->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1657 | data->fsb.selectedPath = selPath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1658 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1659 | XtFree(newName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1660 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1661 | data->fsb.selIsDir = False; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1662 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1663 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1664 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1665 | if(data->fsb.selectedPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1666 | if(!data->fsb.selIsDir) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1667 | data->fsb.status = FILEDIALOG_OK; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1668 | data->fsb.end = True; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1669 | FileSelectionCallback(data, data->fsb.okCallback, XmCR_OK, data->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1670 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1671 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1672 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1673 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1674 | static void filedialog_cancel(Widget w, XnFileSelectionBox data, XtPointer d) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1675 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1676 | data->fsb.end = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1677 | data->fsb.status = FILEDIALOG_CANCEL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1678 | FileSelectionCallback(data, data->fsb.cancelCallback, XmCR_CANCEL, data->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1679 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1680 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1681 | static void filedialog_help(Widget w, XnFileSelectionBox data, XtPointer d) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1682 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1683 | FileSelectionCallback(data, data->manager.help_callback, XmCR_HELP, data->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1684 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1685 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1686 | static void FileSelectionCallback(XnFileSelectionBox fsb, XtCallbackList cb, int reason, const char *value) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1687 | XmFileSelectionBoxCallbackStruct cbs; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1688 | memset(&cbs, 0, sizeof(XmFileSelectionBoxCallbackStruct)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1689 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1690 | char *dir = fsb->fsb.currentPath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1691 | size_t dirlen = dir ? strlen(dir) : 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1692 | if(dir && dirlen > 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1693 | char *dir2 = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1694 | if(dir[dirlen-1] != '/') { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1695 | // add a trailing / to the dir string |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1696 | dir2 = malloc(dirlen+2); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1697 | memcpy(dir2, dir, dirlen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1698 | dir2[dirlen] = '/'; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1699 | dir2[dirlen+1] = '\0'; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1700 | dirlen++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1701 | dir = dir2; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1702 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1703 | cbs.dir = XmStringCreateLocalized(dir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1704 | cbs.dir_length = dirlen; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1705 | if(dir2) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1706 | free(dir2); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1707 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1708 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1709 | cbs.dir = XmStringCreateLocalized(""); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1710 | cbs.dir_length = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1711 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1712 | cbs.reason = reason; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1713 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1714 | cbs.value = XmStringCreateLocalized((char*)value); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1715 | cbs.length = strlen(value); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1716 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1717 | XtCallCallbackList((Widget)fsb, cb, (XtPointer)&cbs); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1718 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1719 | XmStringFree(cbs.dir); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1720 | XmStringFree(cbs.value); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1721 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1722 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1723 | static void CreateUI(XnFileSelectionBox w) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1724 | Arg args[32]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1725 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1726 | XmString str; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1727 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1728 | int widget_spacing = w->fsb.widgetSpacing; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1729 | int window_spacing = w->fsb.windowSpacing; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1730 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1731 | Widget form = (Widget)w; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1732 | int type = w->fsb.type; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1733 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1734 | XtVaSetValues((Widget)w, XmNautoUnmanage, False, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1735 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1736 | /* upper part of the gui */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1737 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1738 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1739 | XtSetArg(args[n], XmNlabelString, w->fsb.labelDirUp); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1740 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1741 | XtSetArg(args[n], XmNtopOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1742 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1743 | XtSetArg(args[n], XmNleftOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1744 | XtSetArg(args[n], XmNresizable, True); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1745 | XtSetArg(args[n], XmNarrowDirection, XmARROW_UP); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1746 | w->fsb.dirUp = XmCreatePushButton(form, "DirUp", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1747 | XtManageChild(w->fsb.dirUp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1748 | XtAddCallback(w->fsb.dirUp, XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1749 | (XtCallbackProc)filedialog_goup, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1750 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1751 | // View Option Menu |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1752 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1753 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1754 | XtSetArg(args[n], XmNtopOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1755 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1756 | XtSetArg(args[n], XmNrightOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1757 | XtSetArg(args[n], XmNshadowThickness, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1758 | Widget viewframe = XmCreateForm(form, "vframe", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1759 | XtManageChild(viewframe); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1760 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1761 | w->fsb.viewMenu = XmCreatePulldownMenu(viewframe, "menu", NULL, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1762 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1763 | Widget view; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1764 | if(w->fsb.showViewMenu) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1765 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1766 | XtSetArg(args[n], XmNsubMenuId, w->fsb.viewMenu); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1767 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1768 | XtSetArg(args[n], XmNmarginHeight, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1769 | XtSetArg(args[n], XmNmarginWidth, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1770 | view = XmCreateOptionMenu(viewframe, "option_menu", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1771 | XtManageChild(view); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1772 | w->fsb.viewOption = view; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1773 | w->fsb.detailToggleButton = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1774 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1775 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1776 | str = XmStringCreateLocalized(w->fsb.labelDetailView); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1777 | XtSetArg(args[n], XmNlabelString, str); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1778 | XtSetArg(args[n], XmNfillOnSelect, True); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1779 | XtSetArg(args[n], XmNindicatorOn, False); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1780 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1781 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1782 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1783 | if(w->fsb.selectedview == 1) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1784 | XtSetArg(args[n], XmNset, 1); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1785 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1786 | w->fsb.detailToggleButton = XmCreateToggleButton(viewframe, "ToggleDetailView", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1787 | XtManageChild(w->fsb.detailToggleButton); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1788 | view = w->fsb.detailToggleButton; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1789 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1790 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1791 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1792 | w->fsb.detailToggleButton, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1793 | XmNvalueChangedCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1794 | (XtCallbackProc)filedialog_enable_detailview, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1795 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1796 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1797 | w->fsb.viewOption = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1798 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1799 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1800 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1801 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1802 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1803 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1804 | XtSetArg(args[n], XmNrightWidget, view); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1805 | XtSetArg(args[n], XmNmarginHeight, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1806 | XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1807 | XtSetArg(args[n], XmNlabelString, w->fsb.labelNewFolder); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1808 | w->fsb.newFolder = XmCreatePushButton(viewframe, "NewFolder", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1809 | XtManageChild(w->fsb.newFolder); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1810 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1811 | w->fsb.newFolder, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1812 | XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1813 | (XtCallbackProc)FSBNewFolder, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1814 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1815 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1816 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1817 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1818 | XtSetArg(args[n], XmNlabelString, w->fsb.labelHome); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1819 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1820 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1821 | XtSetArg(args[n], XmNrightWidget, w->fsb.newFolder); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1822 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1823 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1824 | w->fsb.home = XmCreatePushButton(viewframe, "Home", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1825 | XtManageChild(w->fsb.home); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1826 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1827 | w->fsb.home, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1828 | XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1829 | (XtCallbackProc)FSBHome, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1830 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1831 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1832 | // match visual appearance of detailToggleButton with the other buttons |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1833 | if(w->fsb.detailToggleButton) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1834 | Dimension highlight, shadow; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1835 | XtVaGetValues(w->fsb.newFolder, XmNshadowThickness, &shadow, XmNhighlightThickness, &highlight, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1836 | XtVaSetValues(w->fsb.detailToggleButton, XmNshadowThickness, shadow, XmNhighlightThickness, highlight, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1837 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1838 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1839 | // pathbar |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1840 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1841 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1842 | XtSetArg(args[n], XmNtopOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1843 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1844 | XtSetArg(args[n], XmNleftWidget, w->fsb.dirUp); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1845 | XtSetArg(args[n], XmNleftOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1846 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1847 | XtSetArg(args[n], XmNrightWidget, viewframe); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1848 | XtSetArg(args[n], XmNrightOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1849 | XtSetArg(args[n], XmNshadowType, XmSHADOW_IN); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1850 | Widget pathBarFrame = XmCreateFrame(form, "pathbar_frame", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1851 | XtManageChild(pathBarFrame); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1852 | w->fsb.pathBar = CreatePathBar(pathBarFrame, args, 0); |
|
927
b8c0f718b141
move default path elm func to common
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
925
diff
changeset
|
1853 | w->fsb.pathBar->getpathelm = ui_default_pathelm_func; |
|
925
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1854 | w->fsb.pathBar->updateDir = (updatedir_callback)filedialog_update_dir; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1855 | w->fsb.pathBar->updateDirData = w; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1856 | XtManageChild(w->fsb.pathBar->widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1857 | w->fsb.path = XmCreateTextField(form, "textfield", args, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1858 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1859 | XtVaSetValues(w->fsb.dirUp, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, pathBarFrame, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1860 | if(!w->fsb.showViewMenu) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1861 | XtVaSetValues(viewframe, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, pathBarFrame, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1862 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1863 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1864 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1865 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1866 | XtSetArg(args[n], XmNleftOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1867 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1868 | XtSetArg(args[n], XmNtopWidget, pathBarFrame); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1869 | XtSetArg(args[n], XmNtopOffset, 2*widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1870 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1871 | XtSetArg(args[n], XmNrightOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1872 | w->fsb.filterForm = XmCreateForm(form, "filterform", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1873 | XtManageChild(w->fsb.filterForm); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1874 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1875 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1876 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1877 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1878 | XtSetArg(args[n], XmNlabelString, w->fsb.labelDirectories); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1879 | w->fsb.lsDirLabel = XmCreateLabel(w->fsb.filterForm, "labelDirs", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1880 | XtManageChild(w->fsb.lsDirLabel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1881 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1882 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1883 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1884 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1885 | XtSetArg(args[n], XmNleftPosition, 35); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1886 | XtSetArg(args[n], XmNleftOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1887 | XtSetArg(args[n], XmNlabelString, w->fsb.labelFiles); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1888 | w->fsb.lsFileLabel = XmCreateLabel(w->fsb.filterForm, "labelFiles", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1889 | XtManageChild(w->fsb.lsFileLabel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1890 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1891 | if(w->fsb.showHiddenButton) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1892 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1893 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1894 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1895 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1896 | XtSetArg(args[n], XmNlabelString, w->fsb.labelShowHiddenFiles); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1897 | XtSetArg(args[n], XmNset, w->fsb.showHidden); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1898 | w->fsb.showHiddenButtonW = XmCreateToggleButton(w->fsb.filterForm, "showHidden", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1899 | XtManageChild(w->fsb.showHiddenButtonW); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1900 | XtAddCallback(w->fsb.showHiddenButtonW, XmNvalueChangedCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1901 | (XtCallbackProc)filedialog_setshowhidden, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1902 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1903 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1904 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1905 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1906 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1907 | XtSetArg(args[n], XmNlabelString, w->fsb.labelFilterButton); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1908 | if(w->fsb.showHiddenButton) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1909 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1910 | XtSetArg(args[n], XmNrightWidget, w->fsb.showHiddenButtonW); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1911 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1912 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1913 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1914 | w->fsb.filterButton = XmCreatePushButton(w->fsb.filterForm, "filedialog_filter", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1915 | XtManageChild(w->fsb.filterButton); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1916 | XtAddCallback(w->fsb.filterButton, XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1917 | (XtCallbackProc)filedialog_filter, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1918 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1919 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1920 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1921 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1922 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1923 | XtSetArg(args[n], XmNleftWidget, w->fsb.lsFileLabel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1924 | XtSetArg(args[n], XmNleftOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1925 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1926 | XtSetArg(args[n], XmNrightWidget, w->fsb.filterButton); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1927 | XtSetArg(args[n], XmNrightOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1928 | XtSetArg(args[n], XmNshowLabel, False); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1929 | XtSetArg(args[n], XmNuseTextField, True); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1930 | XtSetArg(args[n], XmNverify, False); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1931 | w->fsb.filter = XmCreateDropDown(w->fsb.filterForm, "filedialog_filter_textfield", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1932 | XtManageChild(w->fsb.filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1933 | XmTextFieldSetString(XmDropDownGetText(w->fsb.filter), w->fsb.filterStr); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1934 | XtAddCallback(XmDropDownGetText(w->fsb.filter), XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1935 | (XtCallbackProc)filedialog_filter, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1936 | XtAddCallback(w->fsb.filter, XmNupdateTextCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1937 | (XtCallbackProc)filedialog_update_filter, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1938 | Widget filterList = XmDropDownGetList(w->fsb.filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1939 | str = XmStringCreateSimple("*"); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1940 | XmListAddItem(filterList, str, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1941 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1942 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1943 | /* lower part */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1944 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1945 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1946 | XtSetArg(args[n], XmNbottomOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1947 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1948 | XtSetArg(args[n], XmNleftOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1949 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1950 | XtSetArg(args[n], XmNrightOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1951 | XtSetArg(args[n], XmNtopOffset, widget_spacing * 2); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1952 | Widget buttons = XmCreateForm(form, "buttons", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1953 | XtManageChild(buttons); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1954 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1955 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1956 | str = type == FILEDIALOG_OPEN ? w->fsb.labelOpen : w->fsb.labelSave; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1957 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1958 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1959 | XtSetArg(args[n], XmNlabelString, str); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1960 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1961 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1962 | XtSetArg(args[n], XmNrightPosition, 14); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1963 | w->fsb.okBtn = XmCreatePushButton(buttons, "filedialog_open", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1964 | XtManageChild(w->fsb.okBtn); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1965 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1966 | XtAddCallback(w->fsb.okBtn, XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1967 | (XtCallbackProc)filedialog_ok, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1968 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1969 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1970 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1971 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1972 | XtSetArg(args[n], XmNlabelString, w->fsb.labelHelp); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1973 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1974 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1975 | XtSetArg(args[n], XmNleftPosition, 86); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1976 | w->fsb.helpBtn = XmCreatePushButton(buttons, "filedialog_help", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1977 | XtManageChild(w->fsb.helpBtn); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1978 | XtAddCallback(w->fsb.helpBtn, XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1979 | (XtCallbackProc)filedialog_help, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1980 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1981 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1982 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1983 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1984 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1985 | XtSetArg(args[n], XmNleftPosition, 43); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1986 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1987 | XtSetArg(args[n], XmNrightPosition, 57); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1988 | XtSetArg(args[n], XmNlabelString, w->fsb.labelCancel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1989 | w->fsb.cancelBtn = XmCreatePushButton(buttons, "filedialog_cancel", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1990 | XtManageChild(w->fsb.cancelBtn); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1991 | XtAddCallback(w->fsb.cancelBtn, XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1992 | (XtCallbackProc)filedialog_cancel, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1993 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1994 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1995 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1996 | XtSetArg(args[n], XmNbottomWidget, buttons); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1997 | XtSetArg(args[n], XmNbottomOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1998 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1999 | XtSetArg(args[n], XmNleftOffset, 1); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2000 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2001 | XtSetArg(args[n], XmNrightOffset, 1); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2002 | w->fsb.separator = XmCreateSeparator(form, "ofd_separator", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2003 | XtManageChild(w->fsb.separator); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2004 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2005 | Widget bottomWidget = w->fsb.separator; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2006 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2007 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2008 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2009 | XtSetArg(args[n], XmNbottomWidget, w->fsb.separator); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2010 | XtSetArg(args[n], XmNbottomOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2011 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2012 | XtSetArg(args[n], XmNleftOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2013 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2014 | XtSetArg(args[n], XmNrightOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2015 | w->fsb.name = XmCreateTextField(form, "textfield", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2016 | XtAddCallback(w->fsb.name, XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2017 | (XtCallbackProc)filedialog_ok, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2018 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2019 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2020 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2021 | XtSetArg(args[n], XmNbottomWidget, w->fsb.name); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2022 | XtSetArg(args[n], XmNbottomOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2023 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2024 | XtSetArg(args[n], XmNleftOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2025 | XtSetArg(args[n], XmNlabelString, w->fsb.labelFileName); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2026 | w->fsb.nameLabel = XmCreateLabel(form, "label", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2027 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2028 | if(type == FILEDIALOG_SAVE) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2029 | bottomWidget = w->fsb.nameLabel; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2030 | XtManageChild(w->fsb.name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2031 | XtManageChild(w->fsb.nameLabel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2032 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2033 | w->fsb.bottom_widget = bottomWidget; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2034 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2035 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2036 | // middle |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2037 | // form for dir/file lists |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2038 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2039 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2040 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2041 | XtSetArg(args[n], XmNtopWidget, w->fsb.filterForm); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2042 | XtSetArg(args[n], XmNtopOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2043 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2044 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2045 | XtSetArg(args[n], XmNbottomWidget, bottomWidget); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2046 | XtSetArg(args[n], XmNleftOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2047 | XtSetArg(args[n], XmNrightOffset, window_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2048 | XtSetArg(args[n], XmNbottomOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2049 | XtSetArg(args[n], XmNwidth, 580); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2050 | XtSetArg(args[n], XmNheight, 400); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2051 | w->fsb.listform = XmCreateForm(form, "fds_listform", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2052 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2053 | // dir/file lists |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2054 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2055 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2056 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2057 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2058 | XtSetArg(args[n], XmNtopWidget, w->fsb.lsDirLabel); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2059 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2060 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2061 | XtSetArg(args[n], XmNrightPosition, 35); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2062 | w->fsb.dirlist = XmCreateScrolledList(w->fsb.listform, "dirlist", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2063 | Dimension width, height; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2064 | XtMakeResizeRequest(w->fsb.dirlist, 150, 200, &width, &height); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2065 | XtManageChild(w->fsb.dirlist); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2066 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2067 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2068 | w->fsb.dirlist, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2069 | XmNdefaultActionCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2070 | (XtCallbackProc)dirlist_activate, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2071 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2072 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2073 | w->fsb.dirlist, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2074 | XmNbrowseSelectionCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2075 | (XtCallbackProc)dirlist_select, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2076 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2077 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2078 | // FileList |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2079 | XnFileSelectionBoxAddView( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2080 | (Widget)w, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2081 | w->fsb.labelListView, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2082 | CreateListView, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2083 | FileListUpdate, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2084 | FileListSelect, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2085 | FileListCleanup, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2086 | FileListDestroy, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2087 | True, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2088 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2089 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2090 | // Detail FileList |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2091 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2092 | XnFileSelectionBoxAddView( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2093 | (Widget)w, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2094 | w->fsb.labelDetailView, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2095 | CreateDetailView, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2096 | FileListDetailUpdate, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2097 | FileListDetailSelect, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2098 | FileListDetailCleanup, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2099 | FileListDetailDestroy, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2100 | True, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2101 | w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2102 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2103 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2104 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2105 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2106 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2107 | XtSetArg(args[n], XmNleftWidget, w->fsb.dirlist); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2108 | XtSetArg(args[n], XmNleftOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2109 | //XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2110 | //XtSetArg(args[n], XmNbottomWidget, w->fsb.filelist); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2111 | XtSetArg(args[n], XmNbottomOffset, widget_spacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2112 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2113 | XtSetArg(args[n], XmNlabelString, w->fsb.labelFiles); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2114 | w->fsb.lsFileLabel = XmCreateLabel(w->fsb.listform, "label", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2115 | XtManageChild(w->fsb.lsFileLabel); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2116 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2117 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2118 | XtManageChild(w->fsb.listform); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2119 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2120 | int selview = w->fsb.selectedview; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2121 | if(selview < 2) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2122 | XtManageChild(w->fsb.view[selview].widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2123 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2124 | w->fsb.selectedview = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2125 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2126 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2127 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2128 | if(w->fsb.selectedPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2129 | char *parentPath = ParentPath(w->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2130 | filedialog_update_dir(w, parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2131 | PathBarSetPath(w->fsb.pathBar, parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2132 | free(parentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2133 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2134 | if(w->fsb.type == FILEDIALOG_SAVE) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2135 | XmTextFieldSetString(w->fsb.name, FileName(w->fsb.selectedPath)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2136 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2137 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2138 | char cwd[PATH_MAX]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2139 | const char *currentPath = w->fsb.currentPath; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2140 | if(!currentPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2141 | if(getcwd(cwd, PATH_MAX)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2142 | currentPath = cwd; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2143 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2144 | currentPath = GetHomeDir(); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2145 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2146 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2147 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2148 | filedialog_update_dir(w, currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2149 | PathBarSetPath(w->fsb.pathBar, w->fsb.currentPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2150 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2151 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2152 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2153 | w->fsb.selectedview = selview; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2154 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2155 | XtVaSetValues((Widget)w, XmNcancelButton, w->fsb.cancelBtn, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2156 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2157 | w->fsb.gui_created = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2158 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2159 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2160 | static char* FSBDialogTitle(Widget widget) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2161 | XnFileSelectionBox w = (XnFileSelectionBox)widget; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2162 | if(w->fsb.type == FILEDIALOG_OPEN) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2163 | return w->fsb.labelOpenFileTitle; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2164 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2165 | return w->fsb.labelSaveFileTitle; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2166 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2167 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2168 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2169 | static FSBViewWidgets CreateView(XnFileSelectionBox w, FSBViewCreateProc create, void *userData, Boolean useDirList) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2170 | Arg args[64]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2171 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2172 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2173 | XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2174 | XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2175 | if(useDirList) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2176 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2177 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2178 | XtSetArg(args[n], XmNleftWidget, w->fsb.dirlist); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2179 | XtSetArg(args[n], XmNleftOffset, w->fsb.widgetSpacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2180 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2181 | XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2182 | XtSetArg(args[n], XmNtopOffset, w->fsb.widgetSpacing); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2183 | XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2184 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2185 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2186 | return create(w->fsb.listform, args, n, userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2187 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2188 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2189 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2190 | typedef struct FSBViewSelection { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2191 | XnFileSelectionBox fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2192 | int index; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2193 | } FSBViewSelection; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2194 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2195 | static void SelectView(XnFileSelectionBox f, int view) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2196 | FSBView current = f->fsb.view[f->fsb.selectedview]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2197 | FSBView newview = f->fsb.view[view]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2198 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2199 | XtUnmanageChild(current.widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2200 | if(newview.useDirList != current.useDirList) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2201 | if(current.useDirList) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2202 | XtUnmanageChild(f->fsb.listform); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2203 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2204 | XtManageChild(f->fsb.listform); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2205 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2206 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2207 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2208 | current.cleanup((Widget)f, current.widget, current.userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2209 | XtManageChild(newview.widget); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2210 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2211 | f->fsb.selectedview = view; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2212 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2213 | filedialog_update_dir(f, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2214 | XmProcessTraversal(newview.focus, XmTRAVERSE_CURRENT); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2215 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2216 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2217 | static void SelectViewCallback(Widget w, FSBViewSelection *data, XtPointer u) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2218 | SelectView(data->fsb, data->index); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2219 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2220 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2221 | static void SelectViewItemDestroy(Widget w, FSBViewSelection *data, XtPointer u) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2222 | free(data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2223 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2224 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2225 | static void AddViewMenuItem(XnFileSelectionBox w, const char *name, int viewIndex) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2226 | Arg args[4]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2227 | int n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2228 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2229 | XmString label = XmStringCreateLocalized((char*)name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2230 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2231 | XtSetArg(args[n], XmNlabelString, label); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2232 | XtSetArg(args[1], XmNpositionIndex, w->fsb.selectedview == w->fsb.numviews ? 0 : w->fsb.numviews+1); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2233 | Widget item = XmCreatePushButton(w->fsb.viewMenu, "menuitem", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2234 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2235 | if(viewIndex == 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2236 | w->fsb.viewSelectorList = item; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2237 | } else if(viewIndex == 1) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2238 | w->fsb.viewSelectorDetail = item; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2239 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2240 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2241 | XtManageChild(item); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2242 | XmStringFree(label); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2243 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2244 | FSBViewSelection *data = malloc(sizeof(FSBViewSelection)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2245 | data->fsb = w; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2246 | data->index = viewIndex; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2247 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2248 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2249 | item, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2250 | XmNactivateCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2251 | (XtCallbackProc)SelectViewCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2252 | data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2253 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2254 | item, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2255 | XmNdestroyCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2256 | (XtCallbackProc)SelectViewItemDestroy, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2257 | data); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2258 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2259 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2260 | static FSBViewWidgets CreateListView(Widget parent, ArgList args, int n, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2261 | XnFileSelectionBox fsb = (XnFileSelectionBox)userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2262 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2263 | XtSetArg(args[n], XmNshadowThickness, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2264 | Widget frame = XmCreateFrame(parent, "filelistframe", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2265 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2266 | fsb->fsb.filelist = XmCreateScrolledList(frame, "filelist", NULL, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2267 | XtManageChild(fsb->fsb.filelist); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2268 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2269 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2270 | fsb->fsb.filelist, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2271 | XmNdefaultActionCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2272 | (XtCallbackProc)FileListActivateCB, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2273 | userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2274 | XtAddCallback( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2275 | fsb->fsb.filelist, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2276 | XmNbrowseSelectionCallback, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2277 | (XtCallbackProc)FileListSelectCB, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2278 | userData); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2279 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2280 | fsb->fsb.listContextMenu = CreateContextMenu(fsb, fsb->fsb.filelist, FileContextMenuCB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2281 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2282 | FSBViewWidgets widgets; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2283 | widgets.view = frame; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2284 | widgets.focus = fsb->fsb.filelist; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2285 | return widgets; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2286 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2287 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2288 | #ifdef FSB_ENABLE_DETAIL |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2289 | static void set_path_from_row(XnFileSelectionBox data, int row) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2290 | FileElm *elm = NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2291 | XmLGridRow rowPtr = XmLGridGetRow(data->fsb.grid, XmCONTENT, row); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2292 | XtVaGetValues(data->fsb.grid, XmNrowPtr, rowPtr, XmNrowUserData, &elm, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2293 | if(!elm) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2294 | fprintf(stderr, "error: no row data\n"); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2295 | return; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2296 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2297 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2298 | char *path = strdup(elm->path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2299 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2300 | data->fsb.selIsDir = False; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2301 | if(data->fsb.type == FILEDIALOG_SAVE) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2302 | XmTextFieldSetString(data->fsb.name, FileName(path)); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2303 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2304 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2305 | if(data->fsb.selectedPath) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2306 | free(data->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2307 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2308 | data->fsb.selectedPath = path; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2309 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2310 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2311 | static void grid_select(Widget w, XnFileSelectionBox data, XmLGridCallbackStruct *cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2312 | set_path_from_row(data, cb->row); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2313 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2314 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2315 | static void grid_activate(Widget w, XnFileSelectionBox data, XmLGridCallbackStruct *cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2316 | set_path_from_row(data, cb->row); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2317 | data->fsb.end = True; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2318 | data->fsb.status = FILEDIALOG_OK; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2319 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2320 | FileSelectionCallback(data, data->fsb.okCallback, XmCR_OK, data->fsb.selectedPath); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2321 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2322 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2323 | static void grid_key_pressed(Widget w, XnFileSelectionBox data, XmLGridCallbackStruct *cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2324 | char chars[16]; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2325 | KeySym keysym; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2326 | int nchars; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2327 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2328 | nchars = XLookupString(&cb->event->xkey, chars, 15, &keysym, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2329 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2330 | if(nchars == 0) return; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2331 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2332 | // if data->showHidden is 0, data->files contains more items than the grid |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2333 | // this means SelectedRow might not be the correct index for data->files |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2334 | // we have to count files manually and increase 'row', if the file |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2335 | // is actually displayed in the grid |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2336 | int row = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2337 | int selectedRow = XmLGridGetSelectedRow(w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2338 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2339 | int match = -1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2340 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2341 | for(int i=0;i<data->fsb.filecount;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2342 | const char *name = FileName(data->fsb.files[i].path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2343 | if(!data->fsb.showHidden && name[0] == '.') continue; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2344 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2345 | size_t namelen = strlen(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2346 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2347 | size_t cmplen = namelen < nchars ? namelen : nchars; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2348 | if(!memcmp(name, chars, cmplen)) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2349 | if(row <= selectedRow) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2350 | if(match == -1) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2351 | match = row; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2352 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2353 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2354 | match = row; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2355 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2356 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2357 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2358 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2359 | row++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2360 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2361 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2362 | if(match > -1) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2363 | XmLGridSelectRow(w, match, True); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2364 | XmLGridFocusAndShowRow(w, match+1); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2365 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2366 | XBell(XtDisplay(w), 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2367 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2368 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2369 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2370 | static void grid_header_clicked(Widget w, XnFileSelectionBox data, XmLGridCallbackStruct *cb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2371 | int new_cmp_field = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2372 | switch(cb->column) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2373 | case 0: { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2374 | new_cmp_field = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2375 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2376 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2377 | case 1: { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2378 | new_cmp_field = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2379 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2380 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2381 | case 2: { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2382 | new_cmp_field = 2; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2383 | break; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2384 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2385 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2386 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2387 | if(new_cmp_field == file_cmp_field) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2388 | file_cmp_order = -file_cmp_order; // revert sort order |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2389 | } else { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2390 | file_cmp_field = new_cmp_field; // change file cmp order to new field |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2391 | file_cmp_order = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2392 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2393 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2394 | int sort_type = file_cmp_order == 1 ? XmSORT_ASCENDING : XmSORT_DESCENDING; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2395 | XmLGridSetSort(data->fsb.grid, file_cmp_field, sort_type); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2396 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2397 | qsort(data->fsb.files, data->fsb.filecount, sizeof(FileElm), filecmp); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2398 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2399 | // refresh widget |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2400 | filedialog_update_dir(data, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2401 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2402 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2403 | static FSBViewWidgets CreateDetailView(Widget parent, ArgList args, int n, void *userData) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2404 | XnFileSelectionBox w = userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2405 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2406 | XtSetArg(args[n], XmNshadowThickness, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2407 | Widget gridcontainer = XmCreateFrame(parent, "gridcontainer", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2408 | XtManageChild(gridcontainer); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2409 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2410 | n = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2411 | XtSetArg(args[n], XmNcolumns, 3); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2412 | XtSetArg(args[n], XmNheadingColumns, 0); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2413 | XtSetArg(args[n], XmNheadingRows, 1); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2414 | XtSetArg(args[n], XmNallowColumnResize, 1); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2415 | XtSetArg(args[n], XmNsimpleHeadings, w->fsb.detailHeadings); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2416 | XtSetArg(args[n], XmNhorizontalSizePolicy, XmCONSTANT); n++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2417 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2418 | w->fsb.grid = XmLCreateGrid(gridcontainer, "grid", args, n); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2419 | XmLGridSetIgnoreModifyVerify(w->fsb.grid, True); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2420 | XtManageChild(w->fsb.grid); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2421 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2422 | XtVaSetValues( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2423 | w->fsb.grid, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2424 | XmNcellDefaults, True, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2425 | XtVaTypedArg, XmNblankBackground, XmRString, "white", 6, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2426 | XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2427 | NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2428 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2429 | XtAddCallback(w->fsb.grid, XmNselectCallback, (XtCallbackProc)grid_select, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2430 | XtAddCallback(w->fsb.grid, XmNactivateCallback, (XtCallbackProc)grid_activate, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2431 | XtAddCallback(w->fsb.grid, XmNheaderClickCallback, (XtCallbackProc)grid_header_clicked, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2432 | XtAddCallback(w->fsb.grid, XmNgridKeyPressedCallback, (XtCallbackProc)grid_key_pressed, w); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2433 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2434 | // context menu |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2435 | w->fsb.gridContextMenu = CreateContextMenu(w, w->fsb.grid, FileContextMenuCB); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2436 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2437 | FSBViewWidgets widgets; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2438 | widgets.view = gridcontainer; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2439 | widgets.focus = w->fsb.grid; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2440 | return widgets; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2441 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2442 | #endif |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2443 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2444 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2445 | /* ------------------------------ Path Utils ------------------------------ */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2446 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2447 | const char* GetHomeDir(void) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2448 | char *home = getenv("HOME"); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2449 | if(!home) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2450 | home = getenv("USERPROFILE"); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2451 | if(!home) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2452 | home = "/"; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2453 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2454 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2455 | return home; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2456 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2457 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2458 | static char* ConcatPath(const char *parent, const char *name) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2459 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2460 | size_t parentlen = strlen(parent); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2461 | size_t namelen = strlen(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2462 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2463 | size_t pathlen = parentlen + namelen + 2; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2464 | char *path = malloc(pathlen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2465 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2466 | memcpy(path, parent, parentlen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2467 | if(parentlen > 0 && parent[parentlen-1] != '/') { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2468 | path[parentlen] = '/'; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2469 | parentlen++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2470 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2471 | if(name[0] == '/') { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2472 | name++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2473 | namelen--; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2474 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2475 | memcpy(path+parentlen, name, namelen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2476 | path[parentlen+namelen] = '\0'; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2477 | return path; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2478 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2479 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2480 | static char* FileName(char *path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2481 | int si = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2482 | int osi = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2483 | int i = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2484 | int p = 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2485 | char c; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2486 | while((c = path[i]) != 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2487 | if(c == '/') { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2488 | osi = si; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2489 | si = i; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2490 | p = 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2491 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2492 | i++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2493 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2494 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2495 | char *name = path + si + p; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2496 | if(name[0] == 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2497 | name = path + osi + p; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2498 | if(name[0] == 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2499 | return path; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2500 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2501 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2502 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2503 | return name; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2504 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2505 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2506 | static char* ParentPath(const char *path) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2507 | char *name = FileName((char*)path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2508 | size_t namelen = strlen(name); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2509 | size_t pathlen = strlen(path); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2510 | size_t parentlen = pathlen - namelen; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2511 | if(parentlen == 0) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2512 | parentlen++; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2513 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2514 | char *parent = malloc(parentlen + 1); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2515 | memcpy(parent, path, parentlen); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2516 | parent[parentlen] = '\0'; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2517 | return parent; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2518 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2519 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2520 | // unused at the moment, maybe reactivate if more illegal characters |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2521 | // are defined |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2522 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2523 | static int CheckFileName(const char *fileName) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2524 | size_t len = strlen(fileName); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2525 | for(int i=0;i<len;i++) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2526 | if(fileName[i] == '/') { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2527 | return 0; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2528 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2529 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2530 | return 1; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2531 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2532 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2533 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2534 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2535 | /* ------------------------------ public API ------------------------------ */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2536 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2537 | Widget XnCreateFileSelectionDialog( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2538 | Widget parent, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2539 | String name, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2540 | ArgList arglist, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2541 | Cardinal argcount) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2542 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2543 | Widget dialog = XmCreateDialogShell(parent, "FileDialog", NULL, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2544 | Widget fsb = XnCreateFileSelectionBox(dialog, name, arglist, argcount); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2545 | char *title = FSBDialogTitle(fsb); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2546 | XtVaSetValues(dialog, XmNtitle, title, NULL); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2547 | return fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2548 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2549 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2550 | Widget XnCreateFileSelectionBox( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2551 | Widget parent, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2552 | String name, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2553 | ArgList arglist, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2554 | Cardinal argcount) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2555 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2556 | Widget fsb = XtCreateWidget(name, xnFsbWidgetClass, parent, arglist, argcount); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2557 | return fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2558 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2559 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2560 | void XnFileSelectionBoxAddView( |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2561 | Widget fsb, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2562 | const char *name, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2563 | FSBViewCreateProc create, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2564 | FSBViewUpdateProc update, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2565 | FSBViewSelectProc select, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2566 | FSBViewCleanupProc cleanup, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2567 | FSBViewDestroyProc destroy, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2568 | Boolean useDirList, |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2569 | void *userData) |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2570 | { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2571 | XnFileSelectionBox f = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2572 | if(f->fsb.numviews >= FSB_MAX_VIEWS) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2573 | fprintf(stderr, "XnFileSelectionBox: too many views\n"); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2574 | return; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2575 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2576 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2577 | FSBView view; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2578 | view.update = update; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2579 | view.select = select; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2580 | view.cleanup = cleanup; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2581 | view.destroy = destroy; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2582 | view.useDirList = useDirList; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2583 | view.userData = userData; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2584 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2585 | FSBViewWidgets widgets = CreateView(f, create, userData, useDirList); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2586 | view.widget = widgets.view; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2587 | view.focus = widgets.focus; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2588 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2589 | AddViewMenuItem(f, name, f->fsb.numviews); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2590 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2591 | f->fsb.view[f->fsb.numviews++] = view; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2592 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2593 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2594 | /* |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2595 | void XnFileSelectionBoxSetDirList(Widget fsb, const char **dirlist, size_t nelm) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2596 | XnFileSelectionBox f = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2597 | PathBarSetDirList(f->fsb.pathBar, dirlist, nelm); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2598 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2599 | */ |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2600 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2601 | Widget XnFileSelectionBoxWorkArea(Widget fsb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2602 | XnFileSelectionBox f = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2603 | return f->fsb.workarea; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2604 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2605 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2606 | Widget XnFileSelectionBoxGetChild(Widget fsb, enum XnFSBChild child) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2607 | XnFileSelectionBox w = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2608 | switch(child) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2609 | case XnFSB_DIR_UP_BUTTON: return w->fsb.dirUp; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2610 | case XnFSB_HOME_BUTTON: return w->fsb.home; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2611 | case XnFSB_NEW_FOLDER_BUTTON: return w->fsb.newFolder; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2612 | case XnFSB_DETAIL_TOGGLE_BUTTON: return w->fsb.detailToggleButton; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2613 | case XnFSB_VIEW_OPTION_BUTTON: return w->fsb.viewOption; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2614 | case XnFSB_FILTER_DROPDOWN: return w->fsb.filter; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2615 | case XnFSB_FILTER_BUTTON: return w->fsb.filterButton; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2616 | case XnFSB_SHOW_HIDDEN_TOGGLE_BUTTON: return w->fsb.showHiddenButtonW; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2617 | case XnFSB_DIRECTORIES_LABEL: return w->fsb.lsDirLabel; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2618 | case XnFSB_FILES_LABEL: return w->fsb.lsFileLabel; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2619 | case XnFSB_DIRLIST: return w->fsb.dirlist; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2620 | case XnFSB_FILELIST: return w->fsb.filelist; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2621 | case XnFSB_GRID: return w->fsb.grid; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2622 | case XnFSB_OK_BUTTON: return w->fsb.okBtn; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2623 | case XnFSB_CANCEL_BUTTON: return w->fsb.cancelBtn; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2624 | case XnFSB_HELP_BUTTON: return w->fsb.helpBtn; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2625 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2626 | return NULL; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2627 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2628 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2629 | void XnFileSelectionBoxDeleteFilters(Widget fsb) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2630 | XnFileSelectionBox w = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2631 | Widget filterList = XmDropDownGetList(w->fsb.filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2632 | XmListDeleteAllItems(filterList); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2633 | } |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2634 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2635 | void XnFileSelectionBoxAddFilter(Widget fsb, const char *filter) { |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2636 | XnFileSelectionBox w = (XnFileSelectionBox)fsb; |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2637 | Widget filterList = XmDropDownGetList(w->fsb.filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2638 | |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2639 | XmString str = XmStringCreateSimple((char*)filter); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2640 | XmListAddItem(filterList, str, 0); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2641 | XmStringFree(str); |
|
df27741d02b5
implement ui_openfiledialog (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2642 | } |