50 item->userdata = udata; |
50 item->userdata = udata; |
51 |
51 |
52 ucx_map_cstr_put(toolbar_items, name, item); |
52 ucx_map_cstr_put(toolbar_items, name, item); |
53 } |
53 } |
54 |
54 |
55 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *ud) { |
55 void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *userdata) { |
|
56 ui_toolitem_stgr(name, stockid, f, userdata, -1); |
|
57 } |
|
58 |
|
59 void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *userdata, ...) { |
56 UiStToolItem *item = malloc(sizeof(UiStToolItem)); |
60 UiStToolItem *item = malloc(sizeof(UiStToolItem)); |
57 item->item.add_to = (ui_toolbar_add_f)add_toolitem_st_widget; |
61 item->item.add_to = (ui_toolbar_add_f)add_toolitem_st_widget; |
58 item->stockid = stockid; |
62 item->stockid = stockid; |
59 item->callback = f; |
63 item->callback = f; |
60 item->userdata = ud; |
64 item->userdata = userdata; |
|
65 |
|
66 // add groups |
|
67 va_list ap; |
|
68 va_start(ap, userdata); |
|
69 int group; |
|
70 while((group = va_arg(ap, int)) != -1) { |
|
71 item->groups = ucx_list_append(item->groups, (void*)(intptr_t)group); |
|
72 } |
|
73 va_end(ap); |
61 |
74 |
62 ucx_map_cstr_put(toolbar_items, name, item); |
75 ucx_map_cstr_put(toolbar_items, name, item); |
63 } |
76 } |
64 |
77 |
65 void ui_toolbar_add_default(char *name) { |
78 void ui_toolbar_add_default(char *name) { |
112 G_CALLBACK(ui_button_clicked), |
125 G_CALLBACK(ui_button_clicked), |
113 event); |
126 event); |
114 } |
127 } |
115 |
128 |
116 gtk_toolbar_insert(tb, button, -1); |
129 gtk_toolbar_insert(tb, button, -1); |
|
130 |
|
131 if(item->groups) { |
|
132 uic_add_group_widget(obj->ctx, button, item->groups); |
|
133 } |
117 } |
134 } |
118 |
135 |
119 void add_toolitem_st_widget(GtkToolbar *tb, UiStToolItem *item, UiObject *obj) { |
136 void add_toolitem_st_widget(GtkToolbar *tb, UiStToolItem *item, UiObject *obj) { |
120 GtkToolItem *button = gtk_tool_button_new_from_stock(item->stockid); |
137 GtkToolItem *button = gtk_tool_button_new_from_stock(item->stockid); |
121 gtk_tool_item_set_homogeneous(button, FALSE); |
138 gtk_tool_item_set_homogeneous(button, FALSE); |