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