41 |
42 |
42 void ui_toolbar_init() { |
43 void ui_toolbar_init() { |
43 toolbar_items = ucx_map_new(16); |
44 toolbar_items = ucx_map_new(16); |
44 } |
45 } |
45 |
46 |
46 void ui_toolitem(char *name, char *label, ui_callback f, void *udata) { |
47 void ui_toolitem(char *name, char *label, ui_callback f, void *userdata) { |
47 UiToolItem *item = malloc(sizeof(UiToolItem)); |
48 UiToolItem *item = malloc(sizeof(UiToolItem)); |
48 item->item.add_to = (ui_toolbar_add_f)add_toolitem_widget; |
49 item->item.add_to = (ui_toolbar_add_f)add_toolitem_widget; |
49 item->label = label; |
50 item->label = label; |
50 item->callback = f; |
51 item->callback = f; |
51 item->userdata = udata; |
52 item->userdata = userdata; |
|
53 item->groups = NULL; |
52 |
54 |
53 ucx_map_cstr_put(toolbar_items, name, item); |
55 ucx_map_cstr_put(toolbar_items, name, item); |
54 } |
56 } |
55 |
57 |
56 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *ud) { |
58 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *userdata) { |
|
59 ui_toolitem_stgr(name, stockid, f, userdata, -1); |
|
60 } |
|
61 |
|
62 void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *userdata, ...) { |
57 UiStToolItem *item = malloc(sizeof(UiStToolItem)); |
63 UiStToolItem *item = malloc(sizeof(UiStToolItem)); |
58 item->item.add_to = (ui_toolbar_add_f)add_toolitem_st_widget; |
64 item->item.add_to = (ui_toolbar_add_f)add_toolitem_st_widget; |
59 item->stockid = stockid; |
65 item->stockid = stockid; |
60 item->callback = f; |
66 item->callback = f; |
61 item->userdata = ud; |
67 item->userdata = userdata; |
|
68 item->groups = NULL; |
|
69 |
|
70 // add groups |
|
71 va_list ap; |
|
72 va_start(ap, userdata); |
|
73 int group; |
|
74 while((group = va_arg(ap, int)) != -1) { |
|
75 item->groups = ucx_list_append(item->groups, (void*)(intptr_t)group); |
|
76 } |
|
77 va_end(ap); |
62 |
78 |
63 ucx_map_cstr_put(toolbar_items, name, item); |
79 ucx_map_cstr_put(toolbar_items, name, item); |
64 } |
80 } |
65 |
81 |
66 void ui_toolbar_add_default(char *name) { |
82 void ui_toolbar_add_default(char *name) { |
126 (XtCallbackProc)ui_push_button_callback, |
142 (XtCallbackProc)ui_push_button_callback, |
127 event); |
143 event); |
128 } |
144 } |
129 |
145 |
130 XtManageChild(button); |
146 XtManageChild(button); |
|
147 |
|
148 if(item->groups) { |
|
149 uic_add_group_widget(obj->ctx, button, item->groups); |
|
150 } |
131 } |
151 } |
132 |
152 |
133 void add_toolitem_st_widget(Widget parent, UiStToolItem *item, UiObject *obj) { |
153 void add_toolitem_st_widget(Widget parent, UiStToolItem *item, UiObject *obj) { |
134 Arg args[4]; |
154 Arg args[4]; |
135 |
155 |