From 80827ec0adc01d67b6040386a17d1d8fc3991f1e Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 27 Nov 2025 13:17:03 +0600 Subject: [PATCH 1/2] Added Options window; Added configuration file option --- gresource.xml | 1 + locale/ubl-settings-manager.pot | 87 ++++++++----- locale/ubl-settings-manager_ru.po | 86 ++++++++----- source/CMakeLists.txt | 2 + source/ubl-settings-manager-config-chooser.c | 95 ++++++++++++++ source/ubl-settings-manager-theme-gnome.c | 7 ++ source/ubl-settings-manager.c | 15 +++ source/ubl-settings-manager.h | 6 +- source/ubl-strings.h | 5 +- ubl-settings-manager-config.glade | 124 +++++++++++++++++++ 10 files changed, 361 insertions(+), 67 deletions(-) create mode 100644 source/ubl-settings-manager-config-chooser.c create mode 100644 ubl-settings-manager-config.glade diff --git a/gresource.xml b/gresource.xml index d804f02..ed574e2 100644 --- a/gresource.xml +++ b/gresource.xml @@ -9,6 +9,7 @@ ubl-settings-manager-theme-main-section.glade ubl-settings-manager-settings-sections.glade ubl-settings-manager-section-element.glade + ubl-settings-manager-config.glade ubl-settings-manager.css diff --git a/locale/ubl-settings-manager.pot b/locale/ubl-settings-manager.pot index 2f4db84..89c1fc1 100644 --- a/locale/ubl-settings-manager.pot +++ b/locale/ubl-settings-manager.pot @@ -17,129 +17,150 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" - -#: source/ubl-strings.h:3 +#: source/ubl-strings.h:1 msgid "Settings manager for the system" msgstr "" -#: source/ubl-strings.h:4 -msgid "About Settings manager for the system" +#: source/ubl-strings.h:2 +msgid "About UBLinux Settings Manager" msgstr "" -#: source/ubl-strings.h:6 +#: source/ubl-strings.h:4 msgid "" "https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-" "manager" msgstr "" -#: source/ubl-strings.h:8 +#: source/ubl-strings.h:6 msgid "Settings manager for UBLinux" msgstr "" -#: source/ubl-strings.h:9 +#: source/ubl-strings.h:7 msgid "Back to settings" msgstr "" -#: source/ubl-strings.h:10 +#: source/ubl-strings.h:8 msgid "Config loading failed!\n" msgstr "" -#: source/ubl-strings.h:11 +#: source/ubl-strings.h:9 msgid "Double click selection" msgstr "" -#: source/ubl-strings.h:12 +#: source/ubl-strings.h:10 msgid "Sections management" msgstr "" -#: source/ubl-strings.h:13 +#: source/ubl-strings.h:11 msgid "Understood" msgstr "" -#: source/ubl-strings.h:14 +#: source/ubl-strings.h:12 msgid "Settings" msgstr "" -#: source/ubl-strings.h:15 +#: source/ubl-strings.h:13 msgid "Apply" msgstr "" -#: source/ubl-strings.h:16 +#: source/ubl-strings.h:14 msgid "Close" msgstr "" -#: source/ubl-strings.h:17 +#: source/ubl-strings.h:15 msgid "Cancel" msgstr "" -#: source/ubl-strings.h:18 +#: source/ubl-strings.h:16 msgid "About..." msgstr "" -#: source/ubl-strings.h:19 +#: source/ubl-strings.h:17 msgid "Documentation" msgstr "" -#: source/ubl-strings.h:20 +#: source/ubl-strings.h:18 msgid "Window theme" msgstr "" -#: source/ubl-strings.h:21 +#: source/ubl-strings.h:19 msgid "Icon size" msgstr "" -#: source/ubl-strings.h:22 +#: source/ubl-strings.h:20 msgid "All settings" msgstr "" -#: source/ubl-strings.h:23 +#: source/ubl-strings.h:21 msgid "Failed to load theme" msgstr "" -#: source/ubl-strings.h:24 +#: source/ubl-strings.h:22 msgid "Main theme" msgstr "" -#: source/ubl-strings.h:25 +#: source/ubl-strings.h:23 msgid "GNOME theme" msgstr "" -#: source/ubl-strings.h:26 +#: source/ubl-strings.h:24 msgid "Default" msgstr "" -#: source/ubl-strings.h:27 +#: source/ubl-strings.h:25 msgid "Section name" msgstr "" -#: source/ubl-strings.h:28 +#: source/ubl-strings.h:26 msgid "Identifier" msgstr "" -#: source/ubl-strings.h:29 +#: source/ubl-strings.h:27 msgid "Add section" msgstr "" -#: source/ubl-strings.h:30 +#: source/ubl-strings.h:28 msgid "Clear fields" msgstr "" -#: source/ubl-strings.h:31 +#: source/ubl-strings.h:29 msgid "Remove section" msgstr "" -#: source/ubl-strings.h:32 +#: source/ubl-strings.h:30 source/ubl-settings-manager-settings-sections.c:108 +#: source/ubl-settings-manager.c:138 msgid "Personal" msgstr "" -#: source/ubl-strings.h:33 +#: source/ubl-strings.h:31 source/ubl-settings-manager-settings-sections.c:113 +#: source/ubl-settings-manager.c:144 msgid "Hardware" msgstr "" -#: source/ubl-strings.h:34 +#: source/ubl-strings.h:32 source/ubl-settings-manager-settings-sections.c:118 +#: source/ubl-settings-manager.c:150 msgid "System" msgstr "" -#: source/ubl-strings.h:35 +#: source/ubl-strings.h:33 source/ubl-settings-manager-settings-sections.c:123 +#: source/ubl-settings-manager.c:156 msgid "Misc" msgstr "" + +#: source/ubl-strings.h:34 +msgid "" +"Select the configuration file that the applications will use to save the " +"settings. The selected file will be sent to the applications as an argument." +msgstr "" + +#: source/ubl-strings.h:35 +msgid "Configuration file:" +msgstr "" + +#: source/ubl-strings.h:36 +msgid "Attention! Configuration mode was enabled" +msgstr "" + +#: source/ubl-strings.h:36 +msgid "Configuration will be saved in configuration file" +msgstr "" diff --git a/locale/ubl-settings-manager_ru.po b/locale/ubl-settings-manager_ru.po index bef399b..c80af04 100644 --- a/locale/ubl-settings-manager_ru.po +++ b/locale/ubl-settings-manager_ru.po @@ -17,15 +17,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-strings.h:3 +#: source/ubl-strings.h:1 msgid "Settings manager for the system" msgstr "Диспетчер настроек" -#: source/ubl-strings.h:4 -msgid "About Settings manager for the system" +#: source/ubl-strings.h:2 +msgid "About UBLinux Settings Manager" msgstr "О приложении Диспетчер настроек" -#: source/ubl-strings.h:6 +#: source/ubl-strings.h:4 msgid "" "https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-" "manager" @@ -33,114 +33,136 @@ msgstr "" "https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-" "manager" -#: source/ubl-strings.h:8 +#: source/ubl-strings.h:6 msgid "Settings manager for UBLinux" msgstr "Диспетчер настроек UBLinux" -#: source/ubl-strings.h:9 +#: source/ubl-strings.h:7 msgid "Back to settings" msgstr "Назад к настройкам" -#: source/ubl-strings.h:10 +#: source/ubl-strings.h:8 msgid "Config loading failed!\n" msgstr "Ошибка загрузки конфигурации!\n" -#: source/ubl-strings.h:11 +#: source/ubl-strings.h:9 msgid "Double click selection" msgstr "Открывать приложения двойным нажатием" -#: source/ubl-strings.h:12 +#: source/ubl-strings.h:10 msgid "Sections management" msgstr "Настройка разделов" -#: source/ubl-strings.h:13 +#: source/ubl-strings.h:11 msgid "Understood" msgstr "Понятно" -#: source/ubl-strings.h:14 +#: source/ubl-strings.h:12 msgid "Settings" msgstr "Настройки" -#: source/ubl-strings.h:15 +#: source/ubl-strings.h:13 msgid "Apply" msgstr "Применить" -#: source/ubl-strings.h:16 +#: source/ubl-strings.h:14 msgid "Close" msgstr "Закрыть" -#: source/ubl-strings.h:17 +#: source/ubl-strings.h:15 msgid "Cancel" msgstr "Отменить" -#: source/ubl-strings.h:18 +#: source/ubl-strings.h:16 msgid "About..." msgstr "О программе..." -#: source/ubl-strings.h:19 +#: source/ubl-strings.h:17 msgid "Documentation" msgstr "Справка" -#: source/ubl-strings.h:20 +#: source/ubl-strings.h:18 msgid "Window theme" msgstr "Выбор темы" -#: source/ubl-strings.h:21 +#: source/ubl-strings.h:19 msgid "Icon size" msgstr "Размер иконок" -#: source/ubl-strings.h:22 +#: source/ubl-strings.h:20 msgid "All settings" msgstr "Все настройки" -#: source/ubl-strings.h:23 +#: source/ubl-strings.h:21 msgid "Failed to load theme" msgstr "Ошибка загрузки темы" -#: source/ubl-strings.h:24 +#: source/ubl-strings.h:22 msgid "Main theme" msgstr "Основная тема" -#: source/ubl-strings.h:25 +#: source/ubl-strings.h:23 msgid "GNOME theme" msgstr "GNOME тема" -#: source/ubl-strings.h:26 +#: source/ubl-strings.h:24 msgid "Default" msgstr "По умолчанию" -#: source/ubl-strings.h:27 +#: source/ubl-strings.h:25 msgid "Section name" msgstr "Название раздела" -#: source/ubl-strings.h:28 +#: source/ubl-strings.h:26 msgid "Identifier" msgstr "Идентификатор" -#: source/ubl-strings.h:29 +#: source/ubl-strings.h:27 msgid "Add section" msgstr "Добавить раздел" -#: source/ubl-strings.h:30 +#: source/ubl-strings.h:28 msgid "Clear fields" msgstr "Очистить поля" -#: source/ubl-strings.h:31 +#: source/ubl-strings.h:29 msgid "Remove section" msgstr "Удалить раздел" -#: source/ubl-strings.h:32 +#: source/ubl-strings.h:30 source/ubl-settings-manager-settings-sections.c:108 +#: source/ubl-settings-manager.c:138 msgid "Personal" msgstr "Личные" -#: source/ubl-strings.h:33 +#: source/ubl-strings.h:31 source/ubl-settings-manager-settings-sections.c:113 +#: source/ubl-settings-manager.c:144 msgid "Hardware" msgstr "Оборудование" -#: source/ubl-strings.h:34 +#: source/ubl-strings.h:32 source/ubl-settings-manager-settings-sections.c:118 +#: source/ubl-settings-manager.c:150 msgid "System" msgstr "Система" -#: source/ubl-strings.h:35 +#: source/ubl-strings.h:33 source/ubl-settings-manager-settings-sections.c:123 +#: source/ubl-settings-manager.c:156 msgid "Misc" msgstr "Прочее" + +#: source/ubl-strings.h:34 +msgid "" +"Select the configuration file that the applications will use to save the " +"settings. The selected file will be sent to the applications as an argument." +msgstr "Выберите файл конфигурации, который приложения будут использовать для сохранения настроек. Выбранный файл будет отправлен приложениям в качестве аргумента." + +#: source/ubl-strings.h:35 +msgid "Configuration file:" +msgstr "Файл конфигурации:" + +#: source/ubl-strings.h:36 +msgid "Attention! Configuration mode was enabled" +msgstr "Внимание! Включен режим конфигурации!" + +#: source/ubl-strings.h:36 +msgid "Configuration will be saved in configuration file" +msgstr "Конфигурация будет сохранена в файл конфигурации" diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index ebb3650..0f40b51 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -39,6 +39,7 @@ set(DEPENDFILES ../ubl-settings-manager-settings-sections.glade ../ubl-settings-manager-theme-main-section.glade ../ubl-settings-manager-section-element.glade + ../ubl-settings-manager-config.glade ../gresource.xml ../manager-banner.png ../ubl-settings-manager.css @@ -83,6 +84,7 @@ set(SOURCE_FILES ubl-settings-manager-theme-main.c ubl-settings-manager-app-sections.c ubl-settings-manager-settings-sections.c + ubl-settings-manager-config-chooser.c ubl-settings-manager-misc.c ubl-settings-manager.h ubl-strings.h diff --git a/source/ubl-settings-manager-config-chooser.c b/source/ubl-settings-manager-config-chooser.c new file mode 100644 index 0000000..aae2fc7 --- /dev/null +++ b/source/ubl-settings-manager-config-chooser.c @@ -0,0 +1,95 @@ +#include "ubl-settings-manager.h" + +struct config_chooser { + GtkWidget *RootBox; + GtkWidget *PathEntry; + GtkWidget *PathButton; + GtkWidget *ClearButton; +}; + +void on_config_destroy(GtkWidget *, struct config_chooser *parameter); +void on_config_destroy(GtkWidget *, struct config_chooser *parameter){ + free(parameter); +} + +void on_config_chooser_opened(GtkWidget *, struct config_chooser *parameter); +void on_config_chooser_opened(GtkWidget *, struct config_chooser *parameter){ + filechooser_window *window = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SAVE); + yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,CHOOSE_FILE_LABEL,icon_path,"file_chooser"); + GtkFileFilter *ini_filter = gtk_file_filter_new(); + GtkFileFilter *yaml_filter = gtk_file_filter_new(); + GtkFileFilter *json_filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(ini_filter,"*.ini"); + gtk_file_filter_set_name(ini_filter,"*.ini"); + gtk_file_filter_add_pattern(yaml_filter,"*.yaml"); + gtk_file_filter_set_name(yaml_filter,"*.yaml"); + gtk_file_filter_add_pattern(json_filter,"*.json"); + gtk_file_filter_set_name(json_filter,"*.json"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->MainFileChooser),ini_filter); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->MainFileChooser),yaml_filter); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->MainFileChooser),json_filter); + if (yon_file_chooser_start(window) != GTK_RESPONSE_CANCEL){ + char *full_name = NULL; + gtk_entry_set_text(GTK_ENTRY(parameter->PathEntry),window->last_success_selection); + GtkFileFilter *cur_filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(window->MainFileChooser)); + + if ((cur_filter == ini_filter&&!strstr(window->last_success_selection,".ini"))){ + full_name = yon_char_append(window->last_success_selection,".ini"); + } else if ((cur_filter == yaml_filter&&!strstr(window->last_success_selection,".yaml"))){ + full_name = yon_char_append(window->last_success_selection,".yaml"); + } else if ((cur_filter == json_filter&&!strstr(window->last_success_selection,".json"))){ + full_name = yon_char_append(window->last_success_selection,".json"); + } else { + full_name = yon_char_new(window->last_success_selection); + } + if (access(full_name,F_OK)){ + yon_launch(ubconfig_file_create(full_name)); + } + } +} + +void on_config_chooser_clear(GtkWidget *,struct config_chooser *parameter); +void on_config_chooser_clear(GtkWidget *,struct config_chooser *parameter){ + yon_window_config_erase_instant_parameter("file",yon_configuration_window_section); + gtk_entry_set_text(GTK_ENTRY(parameter->PathEntry),""); +} + +GtkWidget *yon_config_chooser_new( char *){ + struct config_chooser *parameter = malloc(sizeof(struct config_chooser)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_config); + + parameter->RootBox = yon_gtk_builder_get_widget(builder,"RootBox"); + parameter->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); + parameter->PathButton = yon_gtk_builder_get_widget(builder,"PathButton"); + parameter->ClearButton = yon_gtk_builder_get_widget(builder,"ClearButton"); + + g_object_set_data(G_OBJECT(parameter->RootBox),"data_struct",parameter); + g_signal_connect(G_OBJECT(parameter->PathButton),"clicked",G_CALLBACK(on_config_chooser_opened),parameter); + g_signal_connect(G_OBJECT(parameter->ClearButton),"clicked",G_CALLBACK(on_config_chooser_clear),parameter); + g_signal_connect(G_OBJECT(parameter->RootBox),"destroy",G_CALLBACK(on_config_destroy),parameter); + return parameter->RootBox; +} + +void yon_config_chooser_update(GtkWidget *root){ + struct config_chooser *parameter = g_object_get_data(G_OBJECT(root),"data_struct"); + char *target; + if (!yon_window_config_get_parameter(yon_configuration_window_section,"file",&target,YON_TYPE_STRING)){ + target = NULL; + } + if (target){ + gtk_entry_set_text(GTK_ENTRY(parameter->PathEntry),target); + } + +} + +void yon_config_chooser_save(GtkWidget *root){ + struct config_chooser *parameter = g_object_get_data(G_OBJECT(root),"data_struct"); + char *path = (char*)gtk_entry_get_text(GTK_ENTRY(parameter->PathEntry)); + if (!yon_char_is_empty(path)){ + yon_window_config_add_instant_parameter("file",yon_configuration_window_section,path,YON_TYPE_STRING); + yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(main_config.widgets->StatusBox),"config_mode",CONFIG_MODE_LABEL(path),BACKGROUND_IMAGE_INFO_TYPE); + } else { + yon_window_config_erase_instant_parameter("file",yon_configuration_window_section); + yon_ubl_status_box_despawn_infinite(GTK_CONTAINER(main_config.widgets->StatusBox)); + } +} \ No newline at end of file diff --git a/source/ubl-settings-manager-theme-gnome.c b/source/ubl-settings-manager-theme-gnome.c index 41d4b80..ba6c1ac 100644 --- a/source/ubl-settings-manager-theme-gnome.c +++ b/source/ubl-settings-manager-theme-gnome.c @@ -39,6 +39,13 @@ void on_gnome_activate(GtkWidget *,GtkListBoxRow *self, gnome_theme_struct *them command_args = yon_char_unite("--socket-id=",main_socket_id,NULL); } + char *file_param = NULL; + if (yon_window_config_get_parameter(yon_configuration_window_section,"file",&file_param,YON_TYPE_STRING)){ + char *file_arg = yon_char_unite("--file ",file_param,NULL); + char *temp = yon_char_append_element(command_args,file_arg," "); + if (!yon_char_is_empty(command_args)) free(command_args); + command_args = temp; + } yon_launch_app_with_arguments(command,command_args); } diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c index 93a243c..b140159 100644 --- a/source/ubl-settings-manager.c +++ b/source/ubl-settings-manager.c @@ -164,6 +164,10 @@ void yon_interface_update(main_window *widgets){ widgets->current_theme->list_update_func(widgets->current_theme); } +void on_main_exit(GtkWidget *, GdkEvent *, main_window *){ + yon_window_config_erase_instant_parameter("file",yon_configuration_window_section); + gtk_main_quit(); +} main_window *yon_main_window_setup(){ main_window *widgets = malloc(sizeof(main_window)); @@ -191,14 +195,25 @@ main_window *yon_main_window_setup(){ yon_gtk_window_setup(GTK_WINDOW(widgets->Window),NULL,TITLE_LABEL,icon_path,NULL); yon_apps_init(); + g_signal_connect(G_OBJECT(widgets->Window),"delete-event",G_CALLBACK(on_main_exit),widgets); g_signal_connect(G_OBJECT(widgets->MainMenuItemSettings),"activate",G_CALLBACK(on_settings_open),widgets); g_signal_connect(G_OBJECT(widgets->BannerButton),"clicked",G_CALLBACK(on_reveal_banner),widgets); g_signal_connect(G_OBJECT(widgets->MainMenuItemDocumentation),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); g_signal_connect(G_OBJECT(widgets->MainMenuItemAbout),"activate",G_CALLBACK(on_about),version_application); + yon_window_config_setup(GTK_WINDOW(widgets->Window)); char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_load(path); + + yon_ubl_settings_window_init(GTK_MENU(gtk_widget_get_parent(widgets->MainMenuItemAbout))); + + struct yon_configuration_window_custom_parameter *parameter = malloc(sizeof(struct yon_configuration_window_custom_parameter)); + parameter->custom_parameter_create_func = yon_config_chooser_new; + parameter->custom_parameter_save_value_func = yon_config_chooser_save; + parameter->custom_parameter_update_func = yon_config_chooser_update; + yon_configuration_window_add_custom_parameter("file",parameter); + free(path); config_init(); yon_config_update(); diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h index c2b09c4..c898cf9 100644 --- a/source/ubl-settings-manager.h +++ b/source/ubl-settings-manager.h @@ -39,6 +39,7 @@ #define glade_path_settings "/com/ublinux/ui/ubl-settings-manager-settings.glade" #define glade_path_settings_section "/com/ublinux/ui/ubl-settings-manager-settings-sections.glade" #define glade_path_section_element "/com/ublinux/ui/ubl-settings-manager-section-element.glade" +#define glade_path_config "/com/ublinux/ui/ubl-settings-manager-config.glade" #define CssPath "/com/ublinux/css/ubl-settings-manager.css" #define GlobalConfigPath "/etc/xdg/ubl-settings-manager/ubl-settings-manager.conf" #define UserConfigPath "/.config/ubl-settings-manager/ubl-settings-manager.conf" @@ -251,5 +252,8 @@ void on_main_activate(GtkFlowBox* , GtkFlowBoxChild* child, main_theme_struct *t void yon_main_section_setup(main_theme_struct *theme, app_section *section); void yon_main_theme_resize(main_theme_struct *theme); int yon_main_update(main_theme_struct *theme); - +GtkWidget *yon_config_chooser_new( char*); +void yon_config_chooser_update(GtkWidget *root); +void yon_config_chooser_save(GtkWidget *root); +void on_main_exit(GtkWidget *, GdkEvent *, main_window *widgets); #endif \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 7dfa12a..0690c2e 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -30,4 +30,7 @@ #define PERSONAL_SECTION_LABEL _("Personal") #define HARDWARE_SECTION_LABEL _("Hardware") #define SYSTEM_SECTION_LABEL _("System") -#define MISC_SECTION_LABEL _("Misc") \ No newline at end of file +#define MISC_SECTION_LABEL _("Misc") +#define CONFIG_FILE_DESCRIPTION_LABEL _("Select the configuration file that the applications will use to save the settings. The selected file will be sent to the applications as an argument.") +#define CONFIG_FILE_LABEL _("Configuration file:") +#define CONFIG_MODE_LABEL(path) yon_char_unite(_("Attention! Configuration mode was enabled"),"\n",_("Configuration will be saved in configuration file")," ",path,NULL) \ No newline at end of file diff --git a/ubl-settings-manager-config.glade b/ubl-settings-manager-config.glade new file mode 100644 index 0000000..0b9ae23 --- /dev/null +++ b/ubl-settings-manager-config.glade @@ -0,0 +1,124 @@ + + + + + + + True + False + com.ublinux.libublsettingsui-gtk3.zoom-symbolic + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + 5 + + + True + False + vertical + 15 + + + True + False + Select the configuration file that the applications will use to save the settings. The selected file will be sent to the applications as an argument. + True + 0 + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Configuration file: + + + False + True + 0 + + + + + True + True + + + True + True + 1 + + + + + True + True + True + image2 + + + + False + True + 2 + + + + + True + True + True + image1 + + + + False + True + 3 + + + + + False + True + 2 + + + + + + + + + + + + True + False + com.ublinux.libublsettingsui-gtk3.trash-symbolic + + From 42433cd51fe925a433d27d92deb86dfb124a8169 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 27 Nov 2025 16:31:58 +0600 Subject: [PATCH 2/2] Fixed Misc option --- source/ubl-settings-manager-theme-gnome.c | 15 +++++++++++++++ source/ubl-settings-manager.c | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-manager-theme-gnome.c b/source/ubl-settings-manager-theme-gnome.c index ba6c1ac..8895316 100644 --- a/source/ubl-settings-manager-theme-gnome.c +++ b/source/ubl-settings-manager-theme-gnome.c @@ -46,6 +46,8 @@ void on_gnome_activate(GtkWidget *,GtkListBoxRow *self, gnome_theme_struct *them if (!yon_char_is_empty(command_args)) free(command_args); command_args = temp; } + yon_debug_output("%s ",command); + yon_debug_output("%s\n",command_args); yon_launch_app_with_arguments(command,command_args); } @@ -83,6 +85,19 @@ gnome_section *yon_gnome_section_new(){ void yon_gnome_section_setup_apps(gnome_section *cur_section, const char *target){ apps *cur_app = yon_apps_get((char*)target); + { + if (cur_section->section->categories_size==1&&!strcmp(cur_section->section->categories[0],"X-UBL-SettingsManager")) { + int found_else = 0; + for (int i=0;icategories_size;i++){ + if (strstr(cur_app->Categories[i],"X-UBL-")&&strcmp(cur_app->Categories[i],"X-UBL-SettingsManager")){ + found_else = 1; + } + } + + if (found_else) return; + } + } + GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), !yon_char_is_empty(cur_app->Icon)?cur_app->Icon:icon_path, main_config.apps_icon_size,1,GTK_ICON_LOOKUP_FORCE_SIZE); GtkWidget *Image = NULL; if (info){ diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c index b140159..682d13b 100644 --- a/source/ubl-settings-manager.c +++ b/source/ubl-settings-manager.c @@ -154,7 +154,7 @@ void yon_interface_update(main_window *widgets){ { app_section *cur_section = yon_app_section_new(); cur_section->name = yon_char_new(_("Misc")); - cur_section->categories = yon_char_parsed_new(&cur_section->categories_size,"X-UBL-SettingsManager;",NULL); + cur_section->categories = yon_char_parsed_new(&cur_section->categories_size,"X-UBL-SettingsManager",NULL); yon_dictionary_add_or_create_if_exists_with_data(main_config.sections,cur_section->name,cur_section); } }