From bd91820abc403a1fc39e3b762ce8539c3f971a52 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 27 Jan 2025 12:16:12 +0600 Subject: [PATCH] Added combo box parameter for settings window --- libublsettingsui-gtk3-config-window.glade | 52 ++------------------ source/libublsettingsui-gtk3-config-window.c | 44 ++++++++++++----- source/libublsettingsui-gtk3.h | 2 + 3 files changed, 40 insertions(+), 58 deletions(-) diff --git a/libublsettingsui-gtk3-config-window.glade b/libublsettingsui-gtk3-config-window.glade index 0d8f160..d9300b5 100644 --- a/libublsettingsui-gtk3-config-window.glade +++ b/libublsettingsui-gtk3-config-window.glade @@ -3,22 +3,6 @@ - - True - False - com.ublinux.libublsettingsui-gtk3.cancel-symbolic - - - - True - False - com.ublinux.libublsettingsui-gtk3.accept-symbolic - - 450 200 @@ -68,6 +52,10 @@ True False + 5 + 5 + 5 + 5 vertical 5 @@ -103,6 +91,7 @@ True False + True True @@ -121,37 +110,6 @@ com.ublinux.libublsettingsui-gtk3 - - - Cancel - True - True - True - image1 - - - - 1 - - - - - Apply - True - True - True - image2 - - - - end - 2 - - diff --git a/source/libublsettingsui-gtk3-config-window.c b/source/libublsettingsui-gtk3-config-window.c index 5ba92a4..0c40b22 100644 --- a/source/libublsettingsui-gtk3-config-window.c +++ b/source/libublsettingsui-gtk3-config-window.c @@ -1,5 +1,7 @@ #include "libublsettingsui-gtk3.h" +void on_confuguration_combo_box_changed(GtkComboBox *self, char *id); + typedef struct { char *id; GtkWidget *Box; @@ -50,7 +52,14 @@ yon_configuration_combo_parameter *yon_configuration_combo_box_parameter_new(cha for (int i=0;parameters[i]&¶meters[i+1];i+=2){ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(parameter->ComboBox),parameters[i],parameters[i+1]); } - gtk_combo_box_set_active(GTK_COMBO_BOX(parameter->ComboBox),0); + char *value = NULL; + yon_window_config_get_parameter("settings",id,&value,YON_TYPE_STRING); + if (!yon_char_is_empty(value)){ + gtk_combo_box_set_active_id(GTK_COMBO_BOX(parameter->ComboBox),value); + } else { + gtk_combo_box_set_active(GTK_COMBO_BOX(parameter->ComboBox),0); + } + g_signal_connect(G_OBJECT(parameter->ComboBox),"changed",G_CALLBACK(on_confuguration_combo_box_changed),id); gtk_widget_show_all(parameter->Box); return parameter; } @@ -58,6 +67,7 @@ yon_configuration_combo_parameter *yon_configuration_combo_box_parameter_new(cha typedef struct yon_configuration_parameters { dictionary_fields(yon_configuration_parameters); char *label; + char *value; enum CONFIGURATION_PARAMETER_TYPE type; } yon_configuration_parameters; @@ -68,7 +78,6 @@ ubl_settings_window *yon_ubl_settings_window_new(){ window->WorkZoneBox = yon_gtk_builder_get_widget(builder,"WorkZoneBox"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); - g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); return window; } @@ -134,15 +143,6 @@ void yon_ubl_settings_window_init(GtkMenu *menu){ g_signal_connect(G_OBJECT(menu_item),"activate",G_CALLBACK(__yon_on_ubl_settings_window_open),NULL); } -void *yon_ubl_settings_window_get(char *id){ - yon_configuration_parameters *current = (yon_configuration_parameters*)yon_dictionary_get((dictionary**)&__yon_settings_parameters,id); - if (current){ - return current->data; - } else { - return NULL; - } -} - yon_configuration_parameters *yon_configuration_parameter_new() { yon_configuration_parameters *dict = malloc(sizeof(yon_configuration_parameters)); @@ -150,6 +150,8 @@ yon_configuration_parameters *yon_configuration_parameter_new() dict->key = NULL; dict->next = NULL; dict->prev = NULL; + dict->data = NULL; + dict->value = NULL; dict->first = (struct yon_configuration_parameters*)dict; dict->data_type = DICTIONARY_OTHER_TYPE; return dict; @@ -162,6 +164,8 @@ yon_configuration_parameters *yon_configuration_parameter_append(yon_configurati targetdict->next->prev = (struct yon_configuration_parameters*)targetdict; targetdict->next->first = targetdict->first; targetdict->next->data_type = DICTIONARY_OTHER_TYPE; + targetdict->next->data = NULL; + targetdict->next->value = NULL; return targetdict->next; } @@ -212,4 +216,22 @@ void yon_configuration_window_add_combo_box_parameter(enum CONFIGURATION_PARAMET parameter->type = CONFIGURATION_PARAMETER_COMBO_BOX; } +} + +char *yon_settings_configuration_get(char *id){ + yon_configuration_parameters *cur = (yon_configuration_parameters*)yon_dictionary_get((dictionary**)&__yon_settings_parameters,id); + if (cur){ + return cur->value; + } + return NULL; +} + +void on_confuguration_combo_box_changed(GtkComboBox *self, char *id){ + yon_configuration_parameters *cur = (yon_configuration_parameters*)yon_dictionary_get((dictionary**)&__yon_settings_parameters,id); + if (cur){ + cur->value = yon_char_new((char*)gtk_combo_box_get_active_id(self)); + if (yon_window_config_check_init()){ + yon_window_config_add_instant_parameter(id,"settings",cur->value,YON_TYPE_STRING); + } + } } \ No newline at end of file diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 3e978e3..3537e80 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -269,6 +269,8 @@ typedef struct { GtkWidget *CancelButton; } ubl_settings_window; +char *yon_settings_configuration_get(char *id); + #define VERSION_LABEL yon_char_unite(_("Version:")," ",!yon_char_is_empty(template_app_information.app_version)?template_app_information.app_version:"","\n",NULL) #define HELP_LABEL(rest) yon_char_unite(template_app_information.app_tech_name,_(" version:")," ", !yon_char_is_empty(template_app_information.app_version)?template_app_information.app_version:"","\n",template_app_information.app_title,"\n",_("Usage:"), " ",template_app_information.app_tech_name," ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n\t--clear-config\t\t\t",_("Reset application settings"),"\n",!yon_char_is_empty(rest)?rest:NULL,NULL)