ui/gtk/toolbar.c

changeset 140
c03c338a7dcf
parent 116
480354705c2f
child 142
46448d38885c
--- a/ui/gtk/toolbar.c	Tue Jan 24 18:46:47 2017 +0100
+++ b/ui/gtk/toolbar.c	Fri Nov 10 17:17:14 2017 +0100
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 2014 Olaf Wintermann. All rights reserved.
+ * Copyright 2017 Olaf Wintermann. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -164,8 +164,11 @@
         void *udata)
 {
     UiToolbarComboBox *cb = malloc(sizeof(UiToolbarComboBox));
-    cb->item.add_to = (ui_toolbar_add_f)add_toolbar_combobox;  
-    cb->list = list;
+    cb->item.add_to = (ui_toolbar_add_f)add_toolbar_combobox;
+    UiVar *var = malloc(sizeof(UiVar));
+    var->value = list;
+    var->type = UI_VAR_SPECIAL;
+    cb->var = var;
     cb->getvalue = getvalue;
     cb->callback = f;
     cb->userdata = udata;
@@ -357,9 +360,7 @@
 void add_toolbar_combobox(GtkToolbar *tb, UiToolbarComboBox *cb, UiObject *obj) {
     UiModelInfo *modelinfo = ui_model_info(obj->ctx, UI_STRING, "", -1);
     modelinfo->getvalue = cb->getvalue;
-    UiListPtr *listptr = ucx_mempool_malloc(obj->ctx->mempool, sizeof(UiListPtr));
-    listptr->list = cb->list;
-    UiListModel *model = ui_list_model_new(listptr, modelinfo);
+    UiListModel *model = ui_list_model_new(cb->var, modelinfo);
     
     GtkWidget *combobox = ui_create_combobox(obj, model, cb->callback, cb->userdata);
     GtkToolItem *item = gtk_tool_item_new();
@@ -368,6 +369,16 @@
 }
 
 void add_toolbar_combobox_nv(GtkToolbar *tb, UiToolbarComboBoxNV *cb, UiObject *obj) {
-    // TODO
+    UiVar *var = uic_create_var(obj->ctx, cb->listname, UI_VAR_LIST);
+    if(var) {
+        UiModelInfo *modelinfo = ui_model_info(obj->ctx, UI_STRING, "", -1);
+        modelinfo->getvalue = cb->getvalue;
+        UiListModel *model = ui_list_model_new(var, modelinfo);
+        
+        GtkWidget *combobox = ui_create_combobox(obj, model, cb->callback, cb->userdata);
+        GtkToolItem *item = gtk_tool_item_new();
+        gtk_container_add(GTK_CONTAINER(item), combobox);
+        gtk_toolbar_insert(tb, item, -1);
+    }
 }
 

mercurial