ui/gtk/toolkit.c

changeset 115
e57ca2747782
parent 113
dde28a806552
--- a/ui/gtk/toolkit.c	Sun Dec 07 20:00:33 2025 +0100
+++ b/ui/gtk/toolkit.c	Sat Dec 13 15:58:58 2025 +0100
@@ -39,6 +39,7 @@
 #include "../common/menu.h"
 #include "../common/toolbar.h"
 #include "../common/threadpool.h"
+#include "../common/app.h"
 
 #include <cx/string.h>
 #include <cx/printf.h>
@@ -51,13 +52,6 @@
 
 static const char *application_name;
 
-static ui_callback   startup_func;
-static void          *startup_data;
-static ui_callback   open_func;
-void                 *open_data;
-static ui_callback   exit_func;
-void                 *exit_data;
-
 static ui_callback   appclose_fnc;
 static void          *appclose_udata;
 
@@ -95,30 +89,13 @@
     return application_name;
 }
 
-void ui_onstartup(ui_callback f, void *userdata) {
-    startup_func = f;
-    startup_data = userdata;
-}
-
-void ui_onopen(ui_callback f, void *userdata) {
-    open_func = f;
-    open_data = userdata;
-}
-
-void ui_onexit(ui_callback f, void *userdata) {
-    exit_func = f;
-    exit_data = userdata;
-}
-
 void ui_app_exit_on_shutdown(UiBool exitapp) {
     exit_on_shutdown = exitapp;
 }
 
 #ifdef UI_APPLICATION
 static void app_startup(GtkApplication* app, gpointer userdata) {
-    if(startup_func) {
-        startup_func(NULL, startup_data);
-    }
+    uic_application_startup(NULL);
 }
 
 static void app_activate(GtkApplication* app, gpointer userdata) {
@@ -126,9 +103,7 @@
 }
 
 static void app_shutdown(GtkApplication *app, gpointer userdata) {
-    if(exit_func) {
-        exit_func(NULL, exit_data);
-    }
+    uic_application_exit(NULL);
     ui_app_save_settings();
 }
 
@@ -148,13 +123,9 @@
     
     free(appid.ptr);
 #else
-    if(startup_func) {
-        startup_func(NULL, startup_data);
-    }
+    uic_application_startup(NULL);
     gtk_main();
-    if(exit_func) {
-        exit_func(NULL, exit_data);
-    }
+    uic_application_exit(NULL);
     ui_app_save_settings();
 #endif
     if(exit_on_shutdown) {
@@ -164,7 +135,7 @@
 
 #ifndef UI_GTK2
 void ui_app_quit() {
-    g_application_quit(G_APPLICATION(app));
+    g_application_quit(G_APPLICATION(app)); // TODO: fix, does not work
 }
 
 GtkApplication* ui_get_application() {
@@ -175,7 +146,7 @@
 void ui_show(UiObject *obj) {
     gboolean visible = gtk_widget_is_visible(obj->widget);
     
-    uic_check_group_widgets(obj->ctx);
+    uic_check_state_widgets(obj->ctx);
 #if GTK_MAJOR_VERSION >= 4
     gtk_window_present(GTK_WINDOW(obj->widget));
 #elif GTK_MAJOR_VERSION <= 3
@@ -263,14 +234,14 @@
 #endif
 }
 
-void ui_set_visible(UIWIDGET widget, int visible) {
+void ui_set_visible(UIWIDGET widget, UiBool visible) {
 #if GTK_MAJOR_VERSION >= 4
     gtk_widget_set_visible(widget, visible);
 #else
     if(visible) {
-        gtk_widget_set_no_show_all(widget, FALSE);
         gtk_widget_show_all(widget);
     } else {
+        gtk_widget_set_no_show_all(widget, FALSE);
         gtk_widget_hide(widget);
     }
 #endif
@@ -346,6 +317,11 @@
 
 #if GTK_MAJOR_VERSION == 4
 static const char *ui_gtk_css = 
+".ui-entry-box {\n"
+"  background-color: alpha(currentColor, 0.1);"
+"  border-radius: 6px;"
+"  padding: 7px;"
+"}\n"
 "#path-textfield-box {\n"
 "  background-color: alpha(currentColor, 0.1);"
 "  border-radius: 6px;"
@@ -529,17 +505,17 @@
     }
 }
 
-void ui_set_widget_groups(UiContext *ctx, GtkWidget *widget, const int *groups) {
-    if(!groups) {
+void ui_set_widget_states(UiContext *ctx, GtkWidget *widget, const int *states) {
+    if(!states) {
         return;
     }
-    size_t ngroups = uic_group_array_size(groups);
-    ui_set_widget_ngroups(ctx, widget, groups, ngroups);
+    size_t nstates = uic_state_array_size(states);
+    ui_set_widget_nstates(ctx, widget, states, nstates);
 }
 
-void ui_set_widget_ngroups(UiContext *ctx, GtkWidget *widget, const int *groups, size_t ngroups) {
-    if(ngroups > 0) {
-        uic_add_group_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, groups, ngroups);
+void ui_set_widget_nstates(UiContext *ctx, GtkWidget *widget, const int *states, size_t nstates) {
+    if(nstates > 0) {
+        uic_add_state_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, states, nstates);
         ui_set_enabled(widget, FALSE);
     }
 }
@@ -548,14 +524,14 @@
     if(!states) {
         return;
     }
-    size_t nstates = uic_group_array_size(states);
+    size_t nstates = uic_state_array_size(states);
     ui_set_widget_nvisibility_states(ctx, widget, states, nstates);
 }
 
 
 void ui_set_widget_nvisibility_states(UiContext *ctx, GtkWidget *widget, const int *states, size_t ngroups) {
     if(ngroups > 0) {
-        uic_add_group_widget_i(ctx, widget, (ui_enablefunc)ui_set_visible, states, ngroups);
+        uic_add_state_widget_i(ctx, widget, (ui_enablefunc)ui_set_visible, states, ngroups);
         ui_set_visible(widget, FALSE);
     }
 }

mercurial