ui/gtk/tree.c

changeset 142
46448d38885c
parent 140
c03c338a7dcf
child 146
dd0ae1c62a72
--- a/ui/gtk/tree.c	Fri Nov 10 18:04:40 2017 +0100
+++ b/ui/gtk/tree.c	Sat Nov 11 08:34:06 2017 +0100
@@ -46,7 +46,7 @@
     return ui_listview(obj, list, ui_strmodel_getvalue, f, udata);
 }
 
-UIWIDGET ui_listview_var(UiObject *obj, UiVar *var, ui_model_getvalue_f getvalue, ui_callback f, void *udata) {
+UIWIDGET ui_listview_var(UiObject *obj, UiVar *var, ui_getvaluefunc getvalue, ui_callback f, void *udata) {
     // create treeview
     GtkWidget *view = gtk_tree_view_new();
     GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
@@ -64,17 +64,17 @@
     // TODO: implement for gtk2
 #endif
     
-    UiModelInfo *modelinfo = ui_model_info(obj->ctx, UI_STRING, "", -1);
-    modelinfo->getvalue = getvalue;
+    UiModel *model = ui_model_info(obj->ctx, UI_STRING, "", -1);
+    model->getvalue = getvalue;
     UiList *list = var->value;
-    UiListModel *model = ui_list_model_new(var, modelinfo);
-    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(model));
+    UiListModel *listmodel = ui_list_model_new(var, model);
+    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(listmodel));
     
-    UiListView *listview = ucx_mempool_malloc(obj->ctx->mempool, sizeof(UiListView));
+    UiListView *listview = malloc(sizeof(UiListView));
     listview->ctx = obj->ctx;
     listview->widget = view;
     listview->var = var;
-    listview->modelinfo = modelinfo;
+    listview->model = model;
     g_signal_connect(
                 view,
                 "destroy",
@@ -118,14 +118,14 @@
     return scroll_area;
 }
 
-UIWIDGET ui_listview(UiObject *obj, UiList *list, ui_model_getvalue_f getvalue, ui_callback f, void *udata) {
+UIWIDGET ui_listview(UiObject *obj, UiList *list, ui_getvaluefunc getvalue, ui_callback f, void *udata) {
     UiVar *var = malloc(sizeof(UiVar));
     var->value = list;
     var->type = UI_VAR_SPECIAL;
     return ui_listview_var(obj, var, getvalue, f, udata);
 }
 
-UIWIDGET ui_listview_nv(UiObject *obj, char *varname, ui_model_getvalue_f getvalue, ui_callback f, void *udata) {
+UIWIDGET ui_listview_nv(UiObject *obj, char *varname, ui_getvaluefunc getvalue, ui_callback f, void *udata) {
     UiVar *var = uic_create_var(obj->ctx, varname, UI_VAR_LIST);
     if(var) {
         return ui_listview_var(obj, var, getvalue, f, udata);
@@ -136,15 +136,15 @@
 }
 
 
-UIWIDGET ui_table_var(UiObject *obj, UiVar *var, UiModelInfo *modelinfo) {
+UIWIDGET ui_table_var(UiObject *obj, UiVar *var, UiModel *model, UiListCallbacks cb) {
     // create treeview
     GtkWidget *view = gtk_tree_view_new();
     int addi = 0;
-    for(int i=0;i<modelinfo->columns;i++) {
+    for(int i=0;i<model->columns;i++) {
         GtkTreeViewColumn *column = NULL;
-        if(modelinfo->types[i] == UI_ICON_TEXT) {
+        if(model->types[i] == UI_ICON_TEXT) {
             column = gtk_tree_view_column_new();
-            gtk_tree_view_column_set_title(column, modelinfo->titles[i]);
+            gtk_tree_view_column_set_title(column, model->titles[i]);
             
             GtkCellRenderer *iconrenderer = gtk_cell_renderer_pixbuf_new();
             GtkCellRenderer *textrenderer = gtk_cell_renderer_text_new();
@@ -160,7 +160,7 @@
         } else {
             GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
             column = gtk_tree_view_column_new_with_attributes(
-                modelinfo->titles[i],
+                model->titles[i],
                 renderer,
                 "text",
                 i + addi,
@@ -178,8 +178,8 @@
 #endif
     
     UiList *list = var->value;
-    UiListModel *model = ui_list_model_new(var, modelinfo);
-    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(model));
+    UiListModel *listmodel = ui_list_model_new(var, model);
+    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(listmodel));
     
     // add TreeView as observer to the UiList to update the TreeView if the
     // data changes
@@ -187,7 +187,7 @@
     tableview->ctx = obj->ctx;
     tableview->widget = view;
     tableview->var = var;
-    tableview->modelinfo = modelinfo;
+    tableview->model = model;
     g_signal_connect(
                 view,
                 "destroy",
@@ -201,17 +201,17 @@
     // add callback
     UiTreeEventData *event = ui_malloc(obj->ctx, sizeof(UiTreeEventData));
     event->obj = obj;
-    event->activate = modelinfo->activate;
-    event->selection = modelinfo->selection;
-    event->userdata = modelinfo->userdata;
-    if(modelinfo->activate) {
+    event->activate = cb.activate;
+    event->selection = cb.selection;
+    event->userdata = cb.userdata;
+    if(cb.activate) {
         g_signal_connect(
                 view,
                 "row-activated",
                 G_CALLBACK(ui_listview_activate_event),
                 event);
     }
-    if(modelinfo->selection) {
+    if(cb.selection) {
         GtkTreeSelection *selection = gtk_tree_view_get_selection(
                 GTK_TREE_VIEW(view));
         g_signal_connect(
@@ -243,17 +243,17 @@
     return scroll_area;
 }
 
-UIWIDGET ui_table(UiObject *obj, UiList *list, UiModelInfo *modelinfo) {
+UIWIDGET ui_table(UiObject *obj, UiList *list, UiModel *model, UiListCallbacks cb) {
     UiVar *var = malloc(sizeof(UiVar));
     var->value = list;
     var->type = UI_VAR_SPECIAL;
-    return ui_table_var(obj, var, modelinfo);
+    return ui_table_var(obj, var, model, cb);
 }
 
-UIWIDGET ui_table_nv(UiObject *obj, char *varname, UiModelInfo *modelinfo) {
+UIWIDGET ui_table_nv(UiObject *obj, char *varname, UiModel *model, UiListCallbacks cb) {
     UiVar *var = uic_create_var(obj->ctx, varname, UI_VAR_LIST);
     if(var) {
-        return ui_table_var(obj, var, modelinfo);
+        return ui_table_var(obj, var, model, cb);
     } else {
         // TODO: error
     }
@@ -262,7 +262,7 @@
 
 void ui_listview_update(UiList *list, int i) {
     UiListView *view = list->obj;
-    UiListModel *model = ui_list_model_new(view->var, view->modelinfo);
+    UiListModel *model = ui_list_model_new(view->var, view->model);
     gtk_tree_view_set_model(GTK_TREE_VIEW(view->widget), GTK_TREE_MODEL(model));
     // TODO: free old model
 }
@@ -355,14 +355,14 @@
     return ui_combobox(obj, list, ui_strmodel_getvalue, f, udata);
 }
 
-UIWIDGET ui_combobox(UiObject *obj, UiList *list, ui_model_getvalue_f getvalue, ui_callback f, void *udata) {
+UIWIDGET ui_combobox(UiObject *obj, UiList *list, ui_getvaluefunc getvalue, ui_callback f, void *udata) {
     UiVar *var = malloc(sizeof(UiVar));
     var->value = list;
     var->type = UI_VAR_SPECIAL;
     return ui_combobox_var(obj, var, getvalue, f, udata);
 }
 
-UIWIDGET ui_combobox_nv(UiObject *obj, char *varname, ui_model_getvalue_f getvalue, ui_callback f, void *udata) {
+UIWIDGET ui_combobox_nv(UiObject *obj, char *varname, ui_getvaluefunc getvalue, ui_callback f, void *udata) {
     UiVar *var = uic_create_var(obj->ctx, varname, UI_VAR_LIST);
     if(var) {
         return ui_combobox_var(obj, var, getvalue, f, udata);
@@ -372,13 +372,12 @@
     return NULL;
 }
 
-UIWIDGET ui_combobox_var(UiObject *obj, UiVar *var, ui_model_getvalue_f getvalue, ui_callback f, void *udata) {
-    UiModelInfo *modelinfo = ui_model_info(obj->ctx, UI_STRING, "", -1);
-    modelinfo->getvalue = getvalue;
-    UiList *list = var->value;
-    UiListModel *model = ui_list_model_new(var, modelinfo);
+UIWIDGET ui_combobox_var(UiObject *obj, UiVar *var, ui_getvaluefunc getvalue, ui_callback f, void *udata) {
+    UiModel *model = ui_model_info(obj->ctx, UI_STRING, "", -1);
+    model->getvalue = getvalue;
+    UiListModel *listmodel = ui_list_model_new(var, model);
     
-    GtkWidget *combobox = ui_create_combobox(obj, model, f, udata);
+    GtkWidget *combobox = ui_create_combobox(obj, listmodel, f, udata);
     UiContainer *ct = uic_get_current_container(obj);
     ct->add(ct, combobox, FALSE);
 }
@@ -390,7 +389,7 @@
     uicbox->ctx = obj->ctx;
     uicbox->widget = combobox;
     uicbox->var = model->var;
-    uicbox->modelinfo = model->info;
+    uicbox->model = model->info;
     
     g_signal_connect(
                 combobox,
@@ -443,7 +442,7 @@
 
 void ui_combobox_modelupdate(UiList *list, int i) {
     UiListView *view = list->obj;
-    UiListModel *model = ui_list_model_new(view->var, view->modelinfo);
+    UiListModel *model = ui_list_model_new(view->var, view->model);
     gtk_combo_box_set_model(GTK_COMBO_BOX(view->widget), GTK_TREE_MODEL(model));
 }
 

mercurial