142 } |
143 } |
143 va_end(ap); |
144 va_end(ap); |
144 |
145 |
145 ucx_map_cstr_put(toolbar_items, name, item); |
146 ucx_map_cstr_put(toolbar_items, name, item); |
146 } |
147 } |
|
148 |
|
149 void ui_toolbar_combobox( |
|
150 char *name, |
|
151 UiList *list, |
|
152 ui_model_getvalue_f getvalue, |
|
153 ui_callback f, |
|
154 void *udata) |
|
155 { |
|
156 UiToolbarComboBox *cb = malloc(sizeof(UiToolbarComboBox)); |
|
157 cb->item.add_to = (ui_toolbar_add_f)add_toolbar_combobox; |
|
158 cb->list = list; |
|
159 cb->getvalue = getvalue; |
|
160 cb->callback = f; |
|
161 cb->userdata = udata; |
|
162 |
|
163 ucx_map_cstr_put(toolbar_items, name, cb); |
|
164 } |
|
165 |
|
166 void ui_toolbar_combobox_str( |
|
167 char *name, |
|
168 UiList *list, |
|
169 ui_callback f, |
|
170 void *udata) |
|
171 { |
|
172 ui_toolbar_combobox(name, list, ui_strmodel_getvalue, f, udata); |
|
173 } |
|
174 |
|
175 void ui_toolbar_combobox_nv( |
|
176 char *name, |
|
177 char *listname, |
|
178 ui_model_getvalue_f getvalue, |
|
179 ui_callback f, |
|
180 void *udata) |
|
181 { |
|
182 UiToolbarComboBoxNV *cb = malloc(sizeof(UiToolbarComboBoxNV)); |
|
183 cb->item.add_to = (ui_toolbar_add_f)add_toolbar_combobox; |
|
184 cb->listname = listname; |
|
185 cb->getvalue = getvalue; |
|
186 cb->callback = f; |
|
187 cb->userdata = udata; |
|
188 |
|
189 ucx_map_cstr_put(toolbar_items, name, cb); |
|
190 } |
|
191 |
147 |
192 |
148 void ui_toolbar_add_default(char *name) { |
193 void ui_toolbar_add_default(char *name) { |
149 char *s = strdup(name); |
194 char *s = strdup(name); |
150 defaults = ucx_list_append(defaults, s); |
195 defaults = ucx_list_append(defaults, s); |
151 } |
196 } |
285 } |
330 } |
286 |
331 |
287 void add_toolitem_st_toggle_widget(Widget parent, UiStToolItem *item, UiObject *obj) { |
332 void add_toolitem_st_toggle_widget(Widget parent, UiStToolItem *item, UiObject *obj) { |
288 |
333 |
289 } |
334 } |
|
335 |
|
336 void add_toolbar_combobox(Widget tb, UiToolbarComboBox *item, UiObject *obj) { |
|
337 UiListPtr *listptr = ucx_mempool_malloc( |
|
338 obj->ctx->mempool, |
|
339 sizeof(UiListPtr)); |
|
340 UiListView *listview = ucx_mempool_malloc( |
|
341 obj->ctx->mempool, |
|
342 sizeof(UiListView)); |
|
343 listptr->list = item->list; |
|
344 |
|
345 Arg args[8]; |
|
346 XtSetArg(args[0], XmNshadowThickness, 1); |
|
347 XtSetArg(args[1], XmNindicatorOn, XmINDICATOR_NONE); |
|
348 XtSetArg(args[2], XmNtraversalOn, FALSE); |
|
349 XtSetArg(args[3], XmNwidth, 120); |
|
350 Widget combobox = XmCreateDropDownList(tb, "toolbar_combobox", args, 4); |
|
351 XtManageChild(combobox); |
|
352 listview->widget = combobox; |
|
353 listview->list = listptr; |
|
354 listview->getvalue = item->getvalue; |
|
355 |
|
356 ui_listview_update(NULL, listview); |
|
357 |
|
358 listptr->list->observers = ui_add_observer( |
|
359 listptr->list->observers, |
|
360 (ui_callback)ui_listview_update, |
|
361 listview); |
|
362 |
|
363 if(item->callback) { |
|
364 // TODO: |
|
365 |
|
366 } |
|
367 } |
|
368 |
|
369 void add_toolbar_combobox_nv(Widget tb, UiToolbarComboBoxNV *item, UiObject *obj) { |
|
370 |
|
371 } |