From 965574594a1afd50fd1575c995b5bff8e87873b1 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Feb 2026 11:06:25 +0600 Subject: [PATCH] Added interface update connect function; Changed standard window structure --- libublsettingsui-gtk3.css | 5 + libublsettingsui-gtk3.glade | 207 +++++++++--------- ...libublsettingsui-gtk3-standard-callbacks.c | 13 ++ source/libublsettingsui-gtk3.c | 5 +- source/libublsettingsui-gtk3.h | 5 + 5 files changed, 124 insertions(+), 111 deletions(-) diff --git a/libublsettingsui-gtk3.css b/libublsettingsui-gtk3.css index a706226..e0ff429 100644 --- a/libublsettingsui-gtk3.css +++ b/libublsettingsui-gtk3.css @@ -130,4 +130,9 @@ background:transparent; .marginright image{ margin-right: 2px; +} + +.bgimage{ + background-image: url('resource:///com/ublinux/images/libublsettingsui-gtk3-banner.png'); + background-repeat: no-repeat; } \ No newline at end of file diff --git a/libublsettingsui-gtk3.glade b/libublsettingsui-gtk3.glade index 64d838c..cced5de 100644 --- a/libublsettingsui-gtk3.glade +++ b/libublsettingsui-gtk3.glade @@ -1,5 +1,5 @@ - - - True - False - center - - - True - False - 5 - 5 - 5 - 6 - 6 - 64 - com.ublinux.libublsettingsui-gtk3 - - - False - True - 0 - - - - - True - False - - - True - False - - - True - False - center - vertical - - - 255 - True - False - end - TEMPLATE Manager - 0 - - - - - - - - True - True - 0 - - - - - 255 - True - False - start - TEMPLATE management app - True - 0 - - - - - - - - True - True - 1 - - - - - False - True - 0 - - - - - True - True - 0 - - - - - True - True - 1 - - - True False @@ -324,20 +221,112 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False vertical - - 81 + True False + center + + + True + False + 5 + 5 + 5 + 6 + 6 + 64 + com.ublinux.libublsettingsui-gtk3 + + + False + True + 0 + + - + True False - start + + + True + False + + + True + False + center + vertical + + + 255 + True + False + end + TEMPLATE Manager + 0 + + + + + + + + True + True + 0 + + + + + 255 + True + False + TEMPLATE management app + True + word-char + False + 0 + + + + + + + + True + True + 1 + + + + + False + True + 0 + + + + + True + True + 0 + + - -1 + True + True + 1 + False diff --git a/source/libublsettingsui-gtk3-standard-callbacks.c b/source/libublsettingsui-gtk3-standard-callbacks.c index 41236ed..d0ab683 100644 --- a/source/libublsettingsui-gtk3-standard-callbacks.c +++ b/source/libublsettingsui-gtk3-standard-callbacks.c @@ -1,5 +1,7 @@ #include "libublsettingsui-gtk3.h" +void *__interface_update_function = NULL; +void *__interface_update_data = NULL; char *config_get_default_command = NULL; char *config_get_global_command = NULL; char *config_get_local_command = NULL; @@ -61,17 +63,23 @@ int __yon_load_proceed(YON_CONFIG_TYPE type){ void __on_config_local_load(GtkWidget *){ __yon_load_proceed(YON_CONFIG_LOCAL); template_config->load_mode=1; + if (__interface_update_function) + ((void (*)(void*))__interface_update_function)(__interface_update_data); } void __on_config_global_load(GtkWidget *){ __yon_load_proceed(YON_CONFIG_GLOBAL); template_config->load_mode=0; + if (__interface_update_function) + ((void (*)(void*))__interface_update_function)(__interface_update_data); } void __on_config_custom_load(GtkWidget *){ __yon_load_proceed(YON_CONFIG_CUSTOM); template_config->load_mode=3; + if (__interface_update_function) + ((void (*)(void*))__interface_update_function)(__interface_update_data); } void __on_config_global_local_save(){ @@ -90,6 +98,11 @@ void __on_config_custom_save(){ yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_custom_command,NULL); } +void yon_ubl_settings_set_interface_update_function(void*target_func, gpointer func_data){ + __interface_update_function = target_func; + __interface_update_data = func_data; +} + void yon_ubl_settings_window_set_standard_callbacks(template_main_window *widgets, char *get_global_command, char *get_local_command,char *get_custom_command, char *get_default_command, char *get_global_only_command, char *get_local_only_command){ if (!yon_char_is_empty(get_global_command)){ g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(__on_config_global_load),NULL); diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 8d384d6..56ceae6 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -85,7 +85,6 @@ void on_open_documentation_confirmation(GtkWidget *self, char *link){ g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(yon_open_browser),yon_char_new(_(link))); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - } else { yon_open_browser(self,_(link)); } @@ -586,7 +585,6 @@ template_main_window *yon_ubl_window_setup(){ textdomain (template_ui_LocaleName); // setlocale(LC_ALL,""); template_main_window *widgets = setup_window(); - yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,ui_banner_path); textdomain(template_ui_LocaleName); if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel)){ if (getuid()!=0) @@ -604,6 +602,9 @@ template_main_window *yon_ubl_window_setup(){ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); + GtkCssProvider *css_lib=gtk_css_provider_new(); + gtk_css_provider_load_from_resource(css_lib,"/com/ublinux/css/libublsettingsui-gtk3.css"); + gtk_style_context_add_provider(gtk_widget_get_style_context(widgets->HeadBox),GTK_STYLE_PROVIDER(css_lib),GTK_STYLE_PROVIDER_PRIORITY_USER); return widgets; } diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 8ac7342..ee9c0ba 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -367,6 +367,11 @@ template_app_info yon_ubl_get_app_info(); void yon_ubl_settings_window_set_standard_callbacks(template_main_window *widgets, char *get_global_command, char *get_local_command,char *get_custom_command, char *get_default_command, char *get_global_only_command, char *get_local_only_command); +/// @brief Set an interface update function for common loading callbacks +/// @param target_func function to connect +/// @param func_data data for passing into function +void yon_ubl_settings_set_interface_update_function(void*target_func, gpointer func_data); + void yon_window_remove_exit_config_check(template_main_window *widgets); void yon_window_set_exit_config_check(template_main_window *widgets, GCallback data_callback_function);