ui/motif/window.c

changeset 925
df27741d02b5
parent 924
6c6e97e06009
child 926
32b16cbca280
equal deleted inserted replaced
924:6c6e97e06009 925:df27741d02b5
35 #include "container.h" 35 #include "container.h"
36 #include "../ui/window.h" 36 #include "../ui/window.h"
37 #include "../common/context.h" 37 #include "../common/context.h"
38 38
39 #include "Grid.h" 39 #include "Grid.h"
40 #include "Fsb.h"
40 41
41 #include <cx/mempool.h> 42 #include <cx/mempool.h>
42 43
43 static int nwindows = 0; 44 static int nwindows = 0;
44 45
140 } 141 }
141 142
142 UiObject* ui_simple_window(const char *title, void *window_data) { 143 UiObject* ui_simple_window(const char *title, void *window_data) {
143 return create_window(title, window_data, TRUE); 144 return create_window(title, window_data, TRUE);
144 } 145 }
146
147 static void filedialog_event(UiEventData *event, int result, UiFileList flist) {
148 UiEvent evt;
149 evt.obj = event->obj;
150 evt.document = evt.obj->ctx->document;
151 evt.window = evt.obj->window;
152 evt.intval = result;
153
154 evt.eventdata = &flist;
155 evt.eventdatatype = UI_EVENT_DATA_FILE_LIST;
156
157 if(event->callback) {
158 event->callback(&evt, event->userdata);
159 }
160 }
161
162 static void filedialog_select(
163 Widget widget,
164 UiEventData *data,
165 XmFileSelectionBoxCallbackStruct *selection)
166 {
167 UiFileList flist;
168
169 char *value = NULL;
170 XmStringGetLtoR(selection->value, XmSTRING_DEFAULT_CHARSET, &value);
171 flist.files = &value;
172 flist.nfiles = 1;
173
174 filedialog_event(data, 1, flist);
175
176 XtFree(value);
177
178 XtUnmanageChild(widget);
179 XtDestroyWidget(widget);
180 }
181
182 static void filedialog_cancel(
183 Widget widget,
184 UiEventData *data,
185 XmFileSelectionBoxCallbackStruct *selection)
186 {
187 UiFileList flist;
188 flist.files = NULL;
189 flist.nfiles = 0;
190 filedialog_event(data, 0, flist);
191
192 XtUnmanageChild(widget);
193 XtDestroyWidget(widget);
194 }
195
196 void ui_openfiledialog(UiObject *obj, unsigned int mode, ui_callback file_selected_callback, void *cbdata) {
197 Widget dialog = XnCreateFileSelectionDialog(obj->widget, "dialog", NULL, 0);
198
199 UiEventData *data = malloc(sizeof(UiEventData));
200 memset(data, 0, sizeof(UiEventData));
201 data->obj = obj;
202 data->callback = file_selected_callback;
203 data->userdata = cbdata;
204
205 XtAddCallback(dialog, XmNokCallback, (XtCallbackProc)filedialog_select, data);
206 XtAddCallback(dialog, XmNcancelCallback, (XtCallbackProc)filedialog_cancel, data);
207 //XtAddCallback(dialog, XmNhelpCallback, (XtCallbackProc)filedialog_help, wd);
208
209 XtManageChild(dialog);
210 }
211
212 void ui_savefiledialog(UiObject *obj, const char *name, ui_callback file_selected_callback, void *cbdata) {
213
214 }

mercurial