ui/gtk/toolbar.c

changeset 27
77b09bb52ca0
parent 3
c1a75454b444
child 33
458831c574f4
equal deleted inserted replaced
26:a137277f9173 27:77b09bb52ca0
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);
134 G_CALLBACK(ui_button_clicked), 151 G_CALLBACK(ui_button_clicked),
135 event); 152 event);
136 } 153 }
137 154
138 gtk_toolbar_insert(tb, button, -1); 155 gtk_toolbar_insert(tb, button, -1);
156
157 if(item->groups) {
158 uic_add_group_widget(obj->ctx, button, item->groups);
159 }
139 } 160 }

mercurial