ui/gtk/toolbar.c

changeset 27
77b09bb52ca0
parent 3
c1a75454b444
child 33
458831c574f4
--- a/ui/gtk/toolbar.c	Sat Apr 05 15:53:41 2014 +0200
+++ b/ui/gtk/toolbar.c	Sat Apr 05 18:41:30 2014 +0200
@@ -52,12 +52,25 @@
     ucx_map_cstr_put(toolbar_items, name, item);
 }
 
-void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *ud) {
+void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *userdata) {
+    ui_toolitem_stgr(name, stockid, f, userdata, -1);
+}
+
+void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *userdata, ...) {
     UiStToolItem *item = malloc(sizeof(UiStToolItem));
     item->item.add_to = (ui_toolbar_add_f)add_toolitem_st_widget;
     item->stockid = stockid;
     item->callback = f;
-    item->userdata = ud;
+    item->userdata = userdata;
+    
+    // add groups
+    va_list ap;
+    va_start(ap, userdata);
+    int group;
+    while((group = va_arg(ap, int)) != -1) {
+        item->groups = ucx_list_append(item->groups, (void*)(intptr_t)group);
+    }
+    va_end(ap);
     
     ucx_map_cstr_put(toolbar_items, name, item);
 }
@@ -114,6 +127,10 @@
     }
     
     gtk_toolbar_insert(tb, button, -1);
+    
+    if(item->groups) {
+        uic_add_group_widget(obj->ctx, button, item->groups);
+    }
 }
 
 void add_toolitem_st_widget(GtkToolbar *tb, UiStToolItem *item, UiObject *obj) {
@@ -136,4 +153,8 @@
     }
     
     gtk_toolbar_insert(tb, button, -1);
+    
+    if(item->groups) {
+        uic_add_group_widget(obj->ctx, button, item->groups);
+    }
 }

mercurial