From 76c3f6d1e1343e316f7e8d4ca20a94485fb32b55 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 12 May 2025 17:36:48 +0600 Subject: [PATCH 1/8] Fixed custom config saving --- source/libublsettingsui-gtk3-standard-callbacks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libublsettingsui-gtk3-standard-callbacks.c b/source/libublsettingsui-gtk3-standard-callbacks.c index 75bda32..41236ed 100644 --- a/source/libublsettingsui-gtk3-standard-callbacks.c +++ b/source/libublsettingsui-gtk3-standard-callbacks.c @@ -105,7 +105,7 @@ void yon_ubl_settings_window_set_standard_callbacks(template_main_window *widget } if (!yon_char_is_empty(get_global_command)){ g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(__on_config_custom_load),NULL); - g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(__on_config_custom_load),NULL); + g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(__on_config_custom_save),NULL); config_get_custom_command = yon_char_new(get_custom_command); config_set_custom_command = yon_char_replace_single(get_custom_command,"get","set"); } -- 2.35.1 From e7b855dd2244205de041bdd5d039814cde0dcb3c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 12 May 2025 17:36:57 +0600 Subject: [PATCH 2/8] Added new icons --- ...ux.libublsettingsui-gtk3.down-symbolic.svg | 37 +++++++++++++ ...x.libublsettingsui-gtk3.pause-symbolic.svg | 55 +++++++++++++++++++ ...inux.libublsettingsui-gtk3.up-symbolic.svg | 37 +++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 icons/actions/com.ublinux.libublsettingsui-gtk3.down-symbolic.svg create mode 100644 icons/actions/com.ublinux.libublsettingsui-gtk3.pause-symbolic.svg create mode 100644 icons/actions/com.ublinux.libublsettingsui-gtk3.up-symbolic.svg diff --git a/icons/actions/com.ublinux.libublsettingsui-gtk3.down-symbolic.svg b/icons/actions/com.ublinux.libublsettingsui-gtk3.down-symbolic.svg new file mode 100644 index 0000000..aae7004 --- /dev/null +++ b/icons/actions/com.ublinux.libublsettingsui-gtk3.down-symbolic.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/icons/actions/com.ublinux.libublsettingsui-gtk3.pause-symbolic.svg b/icons/actions/com.ublinux.libublsettingsui-gtk3.pause-symbolic.svg new file mode 100644 index 0000000..831dd0a --- /dev/null +++ b/icons/actions/com.ublinux.libublsettingsui-gtk3.pause-symbolic.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + diff --git a/icons/actions/com.ublinux.libublsettingsui-gtk3.up-symbolic.svg b/icons/actions/com.ublinux.libublsettingsui-gtk3.up-symbolic.svg new file mode 100644 index 0000000..1a1d8ed --- /dev/null +++ b/icons/actions/com.ublinux.libublsettingsui-gtk3.up-symbolic.svg @@ -0,0 +1,37 @@ + + + + + + + -- 2.35.1 From 6206c34c6b83f6b1f0ad0282dfe114edc7b264b5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 14 May 2025 14:31:34 +0600 Subject: [PATCH 3/8] Localisation fixes --- libublsettingsui-gtk3-service-control.glade | 4 ++-- libublsettingsui-gtk3.pot | 4 ++-- libublsettingsui-gtk3_ru.po | 6 +++--- source/CMakeLists.txt | 1 - source/libublsettingsui-gtk3.h | 5 +++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libublsettingsui-gtk3-service-control.glade b/libublsettingsui-gtk3-service-control.glade index fc2eb74..daae9cb 100644 --- a/libublsettingsui-gtk3-service-control.glade +++ b/libublsettingsui-gtk3-service-control.glade @@ -282,7 +282,7 @@ 5 - Disable + Disable autolaunch True True True @@ -297,7 +297,7 @@ - Enable + Enable autolaunch True True True diff --git a/libublsettingsui-gtk3.pot b/libublsettingsui-gtk3.pot index d4e06d4..ba54224 100644 --- a/libublsettingsui-gtk3.pot +++ b/libublsettingsui-gtk3.pot @@ -352,11 +352,11 @@ msgid "Restart" msgstr "" #: source/libublsettingsui-gtk3.h:486 -msgid "Enable" +msgid "Enable autolaunch" msgstr "" #: source/libublsettingsui-gtk3.h:487 -msgid "Disable" +msgid "Disable autolaunch" msgstr "" #: source/libublsettingsui-gtk3.h:489 diff --git a/libublsettingsui-gtk3_ru.po b/libublsettingsui-gtk3_ru.po index 67811f7..4b146cd 100644 --- a/libublsettingsui-gtk3_ru.po +++ b/libublsettingsui-gtk3_ru.po @@ -359,12 +359,12 @@ msgid "Restart" msgstr "Перезапустить" #: source/libublsettingsui-gtk3.h:486 -msgid "Enable" +msgid "Enable autolaunch" msgstr "Включить автозапуск" #: source/libublsettingsui-gtk3.h:487 -msgid "Disable" -msgstr "Отключить" +msgid "Disable autolaunch" +msgstr "Отключить автозапуск" #: source/libublsettingsui-gtk3.h:489 #, c-format diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 0b2b0e7..9aeefed 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -77,7 +77,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection") - add_library(${PROJECT_NAME} SHARED libublsettingsui-gtk3.c libublsettingsui-gtk3-save.c diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 822bf0b..83ccd35 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -497,8 +497,9 @@ yon_app_chooser_window *yon_app_chooser_window_new(int multiple_choise); #define _SERVICE_START_BUTTON_LABEL _("Start") #define _SERVICE_STOP_BUTTON_LABEL _("Stop") #define _SERVICE_RESTART_BUTTON_LABEL _("Restart") - #define _SERVICE_ENABLE_BUTTON_LABEL _("Enable") - #define _SERVICE_DISABLE_BUTTON_LABEL _("Disable") + + #define _SERVICE_ENABLE_BUTTON_LABEL _("Enable autolaunch") + #define _SERVICE_DISABLE_BUTTON_LABEL _("Disable autolaunch") #define _SERVICE_HEAD_LABEL(target) g_strdup_printf(yon_char_get_localised_from_lib(_("\"%s\" service configuration")), target) #define _SERVICE_TITLE_LABEL(target) g_strdup_printf(yon_char_get_localised_from_lib(_("\"%s\" service:")), target) -- 2.35.1 From 9b21e1f09bcc08227a6b6467ac19fc89bad6833d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 14 May 2025 16:06:11 +0600 Subject: [PATCH 4/8] App chooser window changes --- libublsettingsui-gtk3-app-chooser.glade | 1 - source/libublsettingsui-gtk3-app-chooser.c | 15 ++++++++++++++- source/libublsettingsui-gtk3.h | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libublsettingsui-gtk3-app-chooser.glade b/libublsettingsui-gtk3-app-chooser.glade index bf8e48b..4d75105 100644 --- a/libublsettingsui-gtk3-app-chooser.glade +++ b/libublsettingsui-gtk3-app-chooser.glade @@ -174,7 +174,6 @@ True False - True True diff --git a/source/libublsettingsui-gtk3-app-chooser.c b/source/libublsettingsui-gtk3-app-chooser.c index a005eae..542e643 100644 --- a/source/libublsettingsui-gtk3-app-chooser.c +++ b/source/libublsettingsui-gtk3-app-chooser.c @@ -137,7 +137,7 @@ void on_app_chooser_accept(GtkWidget *, yon_app_chooser_window *window){ for_iter(model,&iter){ int status; char *name; - gtk_tree_model_get(GTK_TREE_MODEL(window->treestore),&iter,0,&status,1,&name,-1); + gtk_tree_model_get(GTK_TREE_MODEL(window->treestore),&iter,0,&status,6,&name,-1); if (status){ yon_char_parsed_add_or_create_if_exists(window->final->chosen_apps,&window->final->size,name); } @@ -152,6 +152,19 @@ void on_app_chooser_accept(GtkWidget *, yon_app_chooser_window *window){ gtk_widget_destroy(window->MainWindow); } +int yon_app_chooser_window_select(yon_app_chooser_window *window,config_str selection,int size){ + GtkTreeIter iter; + for(int i=0;itreestore),&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->treestore),&iter,6,&target,-1); + if (!yon_char_is_empty(target)&&!yon_char_is_empty(selection[i])&&!strcmp(target,selection[i])){ + gtk_tree_store_set(window->treestore,&iter,0,1,-1); + } + } + } +} + yon_app_chooser_window *yon_app_chooser_window_new(int multiple_choise){ yon_app_chooser_window *window = new(yon_app_chooser_window); GtkBuilder *builder = gtk_builder_new_from_resource(ui_glade_path_app_chooser); diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 83ccd35..fec78cf 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -384,6 +384,7 @@ service_window *yon_service_window_new(char *name, char *start_command, char *check_active_command, char *check_enable_command); void yon_service_window_run(service_window *window); +int yon_app_chooser_window_select(yon_app_chooser_window *window,config_str selection,int size); config_str yon_app_chooser_window_run(yon_app_chooser_window *window, int *size); yon_app_chooser_window *yon_app_chooser_window_new(int multiple_choise); -- 2.35.1 From 176c415d4c8dc27906906ad1882f27304dc9fddd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 May 2025 11:19:09 +0600 Subject: [PATCH 5/8] App chooser execution file name change --- source/libublsettingsui-gtk3-app-chooser.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/libublsettingsui-gtk3-app-chooser.c b/source/libublsettingsui-gtk3-app-chooser.c index 542e643..e0d8e07 100644 --- a/source/libublsettingsui-gtk3-app-chooser.c +++ b/source/libublsettingsui-gtk3-app-chooser.c @@ -61,15 +61,18 @@ int yon_app_chooser_convert_apps(yon_app_chooser_window *window){ window->apps_convert = NULL; for (int i=0;iapps_size;i++){ if (g_key_file_load_from_file(file,window->apps[i],G_KEY_FILE_KEEP_TRANSLATIONS,NULL)){ + char *exec_temp = yon_char_new(window->apps[i]); + free(yon_char_divide(exec_temp,yon_char_find_last(exec_temp,'/'))); struct application *app = new(struct application); memset(app,0,sizeof(struct application)); app->name = g_key_file_get_locale_string(file,"Desktop Entry","Name",setlocale(LC_ALL,NULL),NULL); app->description = g_key_file_get_locale_string(file,"[Desktop Entry","Comment",setlocale(LC_ALL,NULL),NULL); app->tags = g_key_file_get_string(file,"Desktop Entry","Categories",NULL); - app->execute = g_key_file_get_string(file,"Desktop Entry","Exec",NULL); + app->execute = yon_char_divide_search(exec_temp,".",-1); app->icon = g_key_file_get_string(file,"Desktop Entry","Icon",NULL); app->path = yon_char_new(window->apps[i]); yon_dictionary_add_or_create_if_exists_with_data(window->apps_convert,app->name,app); + free(exec_temp); } } if (window->apps_convert) return 1; else return 0; -- 2.35.1 From 018ced41b088e5d8f98d98899590f7cf701f62b6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 20 May 2025 18:11:56 +0600 Subject: [PATCH 6/8] Fixes --- ...ngsui-gtk3.checkbox-attention-symbolic.svg | 152 ++++++++++++++++++ ...tingsui-gtk3.checkbox-checked-symbolic.svg | 148 +++++++++++++++++ ...ibublsettingsui-gtk3.checkbox-symbolic.svg | 142 ++++++++++++++++ source/libublsettingsui-gtk3-app-chooser.c | 2 +- source/libublsettingsui-gtk3.c | 4 +- 5 files changed, 445 insertions(+), 3 deletions(-) create mode 100644 icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-attention-symbolic.svg create mode 100644 icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-checked-symbolic.svg create mode 100644 icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-symbolic.svg diff --git a/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-attention-symbolic.svg b/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-attention-symbolic.svg new file mode 100644 index 0000000..38ef542 --- /dev/null +++ b/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-attention-symbolic.svg @@ -0,0 +1,152 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + diff --git a/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-checked-symbolic.svg b/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-checked-symbolic.svg new file mode 100644 index 0000000..afeca62 --- /dev/null +++ b/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-checked-symbolic.svg @@ -0,0 +1,148 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + diff --git a/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-symbolic.svg b/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-symbolic.svg new file mode 100644 index 0000000..88400f8 --- /dev/null +++ b/icons/status/com.ublinux.libublsettingsui-gtk3.checkbox-symbolic.svg @@ -0,0 +1,142 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + diff --git a/source/libublsettingsui-gtk3-app-chooser.c b/source/libublsettingsui-gtk3-app-chooser.c index e0d8e07..389acc1 100644 --- a/source/libublsettingsui-gtk3-app-chooser.c +++ b/source/libublsettingsui-gtk3-app-chooser.c @@ -68,7 +68,7 @@ int yon_app_chooser_convert_apps(yon_app_chooser_window *window){ app->name = g_key_file_get_locale_string(file,"Desktop Entry","Name",setlocale(LC_ALL,NULL),NULL); app->description = g_key_file_get_locale_string(file,"[Desktop Entry","Comment",setlocale(LC_ALL,NULL),NULL); app->tags = g_key_file_get_string(file,"Desktop Entry","Categories",NULL); - app->execute = yon_char_divide_search(exec_temp,".",-1); + app->execute = yon_char_divide(exec_temp,yon_char_find_last(exec_temp,'.')); app->icon = g_key_file_get_string(file,"Desktop Entry","Icon",NULL); app->path = yon_char_new(window->apps[i]); yon_dictionary_add_or_create_if_exists_with_data(window->apps_convert,app->name,app); diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 43e1a0d..ae7b9f4 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -527,7 +527,7 @@ void __yon_config_init(){ template_config->lock_load_global=0; template_config->lock_save_global=0; template_config->lock_save_local=0; - template_config->load_mode=1; + template_config->load_mode=YON_CONFIG_LOCAL; } template_main_window *yon_ubl_window_setup(){ @@ -543,7 +543,7 @@ template_main_window *yon_ubl_window_setup(){ yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } textdomain(template_app_information.app_locale); - template_config->load_mode=1; + template_config->load_mode=YON_CONFIG_LOCAL; if(template_config) yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,template_config->socket_id,template_config->load_socket_id,template_config->save_socket_id); yon_window_config_setup(GTK_WINDOW(widgets->Window)); -- 2.35.1 From 560576aa57ba4e2aee7956f7e0c6a735c336d225 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 21 May 2025 09:38:06 +0600 Subject: [PATCH 7/8] Localisation change --- libublsettingsui-gtk3_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libublsettingsui-gtk3_ru.po b/libublsettingsui-gtk3_ru.po index 4b146cd..79ec1ef 100644 --- a/libublsettingsui-gtk3_ru.po +++ b/libublsettingsui-gtk3_ru.po @@ -369,7 +369,7 @@ msgstr "Отключить автозапуск" #: source/libublsettingsui-gtk3.h:489 #, c-format msgid "\"%s\" service configuration" -msgstr "Управление сервисом \"%s\"" +msgstr "Управление службой \"%s\"" #: source/libublsettingsui-gtk3.h:490 #, c-format -- 2.35.1 From 491594667592a2766e878a887a7819683cfca30c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 21 May 2025 11:37:31 +0600 Subject: [PATCH 8/8] Test fix for crash and saving bug --- source/libublsettingsui-gtk3-save.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/source/libublsettingsui-gtk3-save.c b/source/libublsettingsui-gtk3-save.c index 9cac806..109a2e0 100644 --- a/source/libublsettingsui-gtk3-save.c +++ b/source/libublsettingsui-gtk3-save.c @@ -106,9 +106,21 @@ config_str yon_loaded_config_convert_to_save_command(struct loaded_config *targe } else { parameters_for_current_command = yon_char_unite(current->key,"=\'",(char*)current->data,"\'",NULL); } - dictionary *sections_dict = (dictionary*)sections; - yon_dictionary_add_or_create_if_exists_with_data(sections_dict,current->section,parameters_for_current_command); - sections = realloc(sections_dict,sizeof(struct yon_temp_command_sections)); + dictionary *sections_dict = NULL; + if (sections) sections_dict = yon_dictionary_get_last((dictionary*)sections); + sections = malloc(sizeof(struct yon_temp_command_sections)); + sections->data=parameters_for_current_command; + sections->first=sections; + sections->key=yon_char_new(current->section); + sections->next=NULL; + sections->prev=NULL; + sections->status=0; + if (sections_dict){ + sections_dict->next = (dictionary*)sections; + sections->prev=(struct yon_temp_command_sections*)sections_dict; + sections->first=(struct yon_temp_command_sections*)sections_dict->first; + } + // yon_dictionary_add_or_create_if_exists_with_data(sections_dict,current->section,parameters_for_current_command); sections->status=yon_config_get_status(current->key); } -- 2.35.1