ui/gtk/container.c

branch
newapi
changeset 331
cdad8b7e83db
parent 330
d615aa36c98e
--- a/ui/gtk/container.c	Tue Oct 08 22:19:24 2024 +0200
+++ b/ui/gtk/container.c	Tue Oct 08 22:53:27 2024 +0200
@@ -332,10 +332,6 @@
 }
 
 
-void ui_select_tab(UIWIDGET tabview, int tab) {
-    gtk_notebook_set_current_page(GTK_NOTEBOOK(tabview), tab);
-}
-
 void ui_notebook_tab_select(UIWIDGET tabview, int tab) {
     gtk_notebook_set_current_page(GTK_NOTEBOOK(tabview), tab);
 }
@@ -364,6 +360,28 @@
     i->value = gtk_notebook_get_current_page(nb);
 }
 
+
+void ui_stack_tab_select(UIWIDGET tabview, int tab) {
+    
+}
+
+void ui_stack_tab_remove(UIWIDGET tabview, int tab) {
+    
+}
+
+void ui_stack_tab_add(UIWIDGET widget, int index, const char *name, UIWIDGET child) {
+    GtkStackPage *page = gtk_stack_add_titled(GTK_STACK(widget), child, name, name);
+}
+
+int64_t ui_stack_get(UiInteger *i) {
+    
+}
+
+void ui_stack_set(UiInteger *i, int64_t value) {
+    
+}
+
+
 UiGtkTabView* ui_widget_get_tabview_data(UIWIDGET tabview) {
     return g_object_get_data(G_OBJECT(tabview), "ui_tabview");
 }
@@ -382,19 +400,37 @@
     ui_tabview_set_func setfunc = NULL;
     
     GtkWidget *widget = NULL;
+    GtkWidget *data_widget = NULL;
     switch(args.tabview) {
         case UI_TABVIEW_DOC: {
             // TODO
             break;
         }
         case UI_TABVIEW_NAVIGATION_SIDE: {
+#if GTK_CHECK_VERSION(3, 10, 0)
+            widget = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+            GtkWidget *sidebar = gtk_stack_sidebar_new();
+            BOX_ADD(widget, sidebar);
+            GtkWidget *stack = gtk_stack_new();
+            gtk_stack_set_transition_type (GTK_STACK(stack), GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN);
+            gtk_stack_sidebar_set_stack(GTK_STACK_SIDEBAR(sidebar), GTK_STACK(stack));
+            BOX_ADD_EXPAND(widget, stack);
+            data->select_tab = ui_stack_tab_select;
+            data->remove_tab = ui_stack_tab_remove;
+            data->add_tab = ui_stack_tab_add;
+            getfunc = ui_stack_get;
+            setfunc = ui_stack_set;
+            data_widget = stack;
+#else
             // TODO
+#endif
             break;
         }
         case UI_TABVIEW_DEFAULT: /* fall through */
         case UI_TABVIEW_NAVIGATION_TOP: /* fall through */
         case UI_TABVIEW_NAVIGATION_TOP2: {
             widget = gtk_notebook_new();
+            data_widget = widget;
             data->select_tab = ui_notebook_tab_select;
             data->remove_tab = ui_notebook_tab_remove;
             data->add_tab = ui_notebook_tab_add;
@@ -419,7 +455,7 @@
     }
     
     g_object_set_data(G_OBJECT(widget), "ui_tabview", data);
-    data->widget = widget;
+    data->widget = data_widget;
     data->subcontainer = args.subcontainer;
     
     UI_APPLY_LAYOUT1(current, args);
@@ -441,7 +477,7 @@
         return;
     }
     
-    UiObject *newobj = ui_tabview_add(data->widget, title, -1);
+    UiObject *newobj = ui_tabview_add(current->widget, title, -1);
     current->next = newobj;
 }
 

mercurial