| 32 #include "container.h" |
32 #include "container.h" |
| 33 |
33 |
| 34 #include "list.h" |
34 #include "list.h" |
| 35 #include "../common/object.h" |
35 #include "../common/object.h" |
| 36 |
36 |
| 37 UIWIDGET ui_listview_create(UiObject* obj, UiListArgs args) { |
37 UIWIDGET ui_listview_create(UiObject* obj, UiListArgs *args) { |
| 38 Arg xargs[16]; |
38 Arg xargs[16]; |
| 39 int n = 0; |
39 int n = 0; |
| 40 |
40 |
| 41 UiContainerPrivate *ctn = ui_obj_container(obj); |
41 UiContainerPrivate *ctn = ui_obj_container(obj); |
| 42 UI_APPLY_LAYOUT(ctn->layout, args); |
42 UI_APPLY_LAYOUT(ctn->layout, args); |
| 43 |
43 |
| 44 if(args.multiselection) { |
44 if(args->multiselection) { |
| 45 XtSetArg(xargs[n], XmNselectionPolicy, XmEXTENDED_SELECT); n++; |
45 XtSetArg(xargs[n], XmNselectionPolicy, XmEXTENDED_SELECT); n++; |
| 46 } else { |
46 } else { |
| 47 XtSetArg(xargs[n], XmNselectionPolicy, XmSINGLE_SELECT); n++; |
47 XtSetArg(xargs[n], XmNselectionPolicy, XmSINGLE_SELECT); n++; |
| 48 } |
48 } |
| 49 |
49 |
| 50 char *name = args.name ? (char*)args.name : "listview"; |
50 char *name = args->name ? (char*)args->name : "listview"; |
| 51 Widget parent = ctn->prepare(ctn, xargs, &n); |
51 Widget parent = ctn->prepare(ctn, xargs, &n); |
| 52 Widget widget = XmCreateScrolledList(parent, name, xargs, n); |
52 Widget widget = XmCreateScrolledList(parent, name, xargs, n); |
| 53 XtManageChild(widget); |
53 XtManageChild(widget); |
| 54 |
54 |
| 55 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.list, args.varname, UI_VAR_LIST); |
55 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); |
| 56 |
56 |
| 57 UiListView *listview = malloc(sizeof(UiListView)); |
57 UiListView *listview = malloc(sizeof(UiListView)); |
| 58 memset(listview, 0, sizeof(UiListView)); |
58 memset(listview, 0, sizeof(UiListView)); |
| 59 listview->obj = obj; |
59 listview->obj = obj; |
| 60 listview->widget = widget; |
60 listview->widget = widget; |
| 61 listview->getvalue = args.getvalue ? args.getvalue : ui_strmodel_getvalue; |
61 listview->getvalue = args->getvalue ? args->getvalue : ui_strmodel_getvalue; |
| 62 listview->var = var; |
62 listview->var = var; |
| 63 listview->onactivate = args.onactivate; |
63 listview->onactivate = args->onactivate; |
| 64 listview->onactivatedata = args.onactivatedata; |
64 listview->onactivatedata = args->onactivatedata; |
| 65 listview->onselection = args.onselection; |
65 listview->onselection = args->onselection; |
| 66 listview->onselectiondata = args.onselectiondata; |
66 listview->onselectiondata = args->onselectiondata; |
| 67 |
67 |
| 68 if(var) { |
68 if(var) { |
| 69 UiList *list = var->value; |
69 UiList *list = var->value; |
| 70 list->obj = listview; |
70 list->obj = listview; |
| 71 list->update = ui_listview_update; |
71 list->update = ui_listview_update; |
| 225 if(listview->onselection) { |
225 if(listview->onselection) { |
| 226 listview->onselection(&event, listview->onselectiondata); |
226 listview->onselection(&event, listview->onselectiondata); |
| 227 } |
227 } |
| 228 } |
228 } |
| 229 |
229 |
| 230 UIWIDGET ui_combobox_create(UiObject* obj, UiListArgs args) { |
230 UIWIDGET ui_combobox_create(UiObject* obj, UiListArgs *args) { |
| 231 Arg xargs[16]; |
231 Arg xargs[16]; |
| 232 int n = 0; |
232 int n = 0; |
| 233 |
233 |
| 234 UiContainerPrivate *ctn = ui_obj_container(obj); |
234 UiContainerPrivate *ctn = ui_obj_container(obj); |
| 235 UI_APPLY_LAYOUT(ctn->layout, args); |
235 UI_APPLY_LAYOUT(ctn->layout, args); |
| 236 |
236 |
| 237 char *name = args.name ? (char*)args.name : "dropdown"; |
237 char *name = args->name ? (char*)args->name : "dropdown"; |
| 238 Widget parent = ctn->prepare(ctn, xargs, &n); |
238 Widget parent = ctn->prepare(ctn, xargs, &n); |
| 239 Widget widget = XmCreateDropDownList(parent, name, xargs, n); |
239 Widget widget = XmCreateDropDownList(parent, name, xargs, n); |
| 240 XtManageChild(widget); |
240 XtManageChild(widget); |
| 241 |
241 |
| 242 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.list, args.varname, UI_VAR_LIST); |
242 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); |
| 243 |
243 |
| 244 UiListView *listview = malloc(sizeof(UiListView)); |
244 UiListView *listview = malloc(sizeof(UiListView)); |
| 245 memset(listview, 0, sizeof(UiListView)); |
245 memset(listview, 0, sizeof(UiListView)); |
| 246 listview->obj = obj; |
246 listview->obj = obj; |
| 247 listview->widget = widget; |
247 listview->widget = widget; |
| 248 listview->getvalue = args.getvalue ? args.getvalue : ui_strmodel_getvalue; |
248 listview->getvalue = args->getvalue ? args->getvalue : ui_strmodel_getvalue; |
| 249 listview->var = var; |
249 listview->var = var; |
| 250 listview->onactivate = args.onactivate; |
250 listview->onactivate = args->onactivate; |
| 251 listview->onactivatedata = args.onactivatedata; |
251 listview->onactivatedata = args->onactivatedata; |
| 252 listview->onselection = args.onselection; |
252 listview->onselection = args->onselection; |
| 253 listview->onselectiondata = args.onselectiondata; |
253 listview->onselectiondata = args->onselectiondata; |
| 254 |
254 |
| 255 if(var) { |
255 if(var) { |
| 256 UiList *list = var->value; |
256 UiList *list = var->value; |
| 257 list->obj = listview; |
257 list->obj = listview; |
| 258 list->update = ui_listview_update; |
258 list->update = ui_listview_update; |