From 5dd85cb2a1145e07f822e0da2eb296a967563441 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 17 Mar 2026 16:24:10 +0600 Subject: [PATCH 01/24] Fixed users, bootloader users and network connections saving --- source/ubinstall-gtk-bootloader.c | 7 +++++-- source/ubinstall-gtk-network.c | 27 ++++++++++++++++++++++----- source/ubinstall-gtk-users.c | 10 +++++++--- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index d8cbaa3..73a6aed 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -42,9 +42,9 @@ int yon_bootloader_save(main_window *widgets){ yon_char_parsed_free(user_parameters,param_size); int size; config_str parameters = yon_config_get_save_parameters_by_key(&size,GRUB_TIMEOUT_parameter,AUTOLOGINUSER_parameter,GRUB_SUPERUSERS_parameter,NULL); - if (parameters){ + if (parameters||user_parameters){ char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command," --target system remove [autoinstall] ",GRUB_PASSWORD_parameter_all,"; ",ubconfig_dull_command,"--target system ",command_parameters, " ", user_string, NULL); + char *command = yon_char_unite(ubconfig_dull_command,"--target system remove [autoinstall] ",GRUB_PASSWORD_parameter_all,"; ",ubconfig_dull_command,"--target system ",command_parameters, " ", user_string, NULL); if (!system(yon_debug_output("%s\n",command))){} free(command); yon_char_parsed_free(parameters,size); @@ -443,6 +443,8 @@ void yon_bootloader_interface_update(main_window *widgets){ for (int i=0;iNetworkNTPServerSwitch))){ @@ -235,6 +239,16 @@ int yon_network_save(main_window *widgets){ yon_config_remove_by_key(hostname_parameter); } + { + int size; + config_str users = yon_config_get_all_by_key(NETWORK_parameter_search,&size); + for (int i=0;iNetworkConnectionsBox)); GList *iter; for (iter=list;iter;iter=iter->next){ @@ -290,17 +304,19 @@ int yon_network_save(main_window *widgets){ } } if (!main_config.configure_mode){ - int connect_size; + int connect_size=0; + int param_size=0; - config_str connections = yon_config_get_all_by_key(NETWORK_parameter_search,&connect_size); - char *connections_string = yon_char_parsed_to_string(connections,connect_size," "); + config_str connections = yon_config_get_all_keys_by_key(NETWORK_parameter_search,&connect_size); + config_str connection_parameters = yon_config_get_save_parameters_by_list(¶m_size,connections,connect_size); yon_char_parsed_free(connections,connect_size); int size; config_str parameters = yon_config_get_save_parameters_by_key(&size,DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL); - if (parameters){ + if (parameters||connection_parameters){ char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters, " ", connections_string,NULL); + char *connections_string = yon_char_parsed_to_string(connection_parameters,param_size," -- "); + char *command = yon_char_unite(ubconfig_dull_command,"--target system remove [autoinstall] ",NETWORK_parameter_all,"; ", ubconfig_dull_command,"--target system ",yon_char_return_if_exist(command_parameters,""), " ", connections_string,NULL); if (!system(yon_debug_output("%s\n",command))){} free(command); yon_char_parsed_free(parameters,size); @@ -392,6 +408,7 @@ void yon_network_init(main_window *widgets){ for (int i=0;i Date: Tue, 17 Mar 2026 18:05:47 +0600 Subject: [PATCH 02/24] Fixed packages repeating --- locale/ubinstall-gtk_ru.po | 2 +- source/ubinstall-gtk-components.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 47afa9a..0c0a737 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -991,7 +991,7 @@ msgstr "Загрузчик" #: source/ubl-strings.h:281 msgid "Network" -msgstr "Настройка сетевых интерфейсов" +msgstr "Сеть" #: source/ubl-strings.h:282 msgid "Enable VNC server" diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 88d724c..32cc8e4 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -16,7 +16,7 @@ int yon_kernel_save(main_window *widgets){ kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ char *append_str = yon_char_replace(row->modules," ",","); - yon_config_append_element(packages_parameter,append_str,","); + yon_config_append_elements(packages_parameter,append_str,","); free(append_str); active_size++; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){ @@ -59,7 +59,7 @@ int yon_kernel_addon_save(main_window *widgets){ for(GList *iter = list;iter;iter = iter->next){ kernel_addon_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ - yon_config_append_element(packages_parameter,row->modules,","); + yon_config_append_elements(packages_parameter,row->modules,","); } else { char *append_str = yon_char_replace(row->modules," ",","); yon_config_remove_elements(packages_parameter,row->modules,","); @@ -339,7 +339,7 @@ int yon_software_save(main_window *widgets){ int status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck)); if (status){ if (!yon_char_check_element(config_val,target,",")){ - yon_config_append_element(packages_parameter,target,","); + yon_config_append_elements(packages_parameter,target,","); } } else{ char *append_str = yon_char_replace(target," ",","); -- 2.35.1 From d708588fec1b6576caa70dfcf30d4d0b9de10c74 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 10:15:43 +0600 Subject: [PATCH 03/24] Kernel page shows installed kernels --- source/ubinstall-gtk-kernel.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 5f5484c..997b92c 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -3,7 +3,7 @@ void on_kernel_install_enabled(GtkWidget *, kernel_row *row){ int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck)); gtk_widget_set_sensitive(row->EnableRadio,active); - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))&>k_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(main_config.kernel_unchosen_radio),1); } } @@ -225,6 +225,10 @@ void yon_kernel_setup(main_window *widgets){ } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); } + if (yon_packages_check_installed(parsed[1])||yon_packages_check_installed(package)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); + gtk_widget_set_sensitive(row->InstallCheck,0); + } if (!yon_char_is_empty(enabled)&&!strcmp(package,enabled)){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->EnableRadio),1); } -- 2.35.1 From 4fd229398b008ec589353fe5203a93538bd87134 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 10:16:11 +0600 Subject: [PATCH 04/24] Enabled kernel can be unchecked --- source/ubinstall-gtk-kernel.c | 11 +++++++++++ source/ubinstall-gtk.h | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 997b92c..39e9483 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -8,6 +8,16 @@ void on_kernel_install_enabled(GtkWidget *, kernel_row *row){ } } +gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row *row){ + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){ + g_signal_handlers_block_by_func(G_OBJECT(self),"toggled",row); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(main_config.kernel_unchosen_radio),1); + g_signal_handlers_unblock_by_func(G_OBJECT(self),"toggled",row); + return 1; + } + return 0; +} + kernel_row *yon_kernel_row_new(){ kernel_row *row = new(kernel_row); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_kernel_row); @@ -26,6 +36,7 @@ kernel_row *yon_kernel_row_new(){ row->package=NULL; g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_install_enabled),row); + g_signal_connect(G_OBJECT(row->EnableRadio),"button-release-event",G_CALLBACK(on_kernel_enabled_toggled),row); row->row = gtk_list_box_row_new(); gtk_container_add(GTK_CONTAINER(row->row),row->RowBox); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 172bdf3..4222b30 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1579,4 +1579,5 @@ void yon_gtk_widget_set_translation(GtkWidget *target); void on_bootloader_user_edit(GtkWidget *, main_window *widgets); void on_bootloader_admin_toggled(GtkWidget *, char *path, main_window *widgets); void on_bootloader_user_remove(GtkWidget *, main_window *widgets); -void on_software_uncheck_all(GtkWidget *, main_window *widgets); \ No newline at end of file +void on_software_uncheck_all(GtkWidget *, main_window *widgets); +gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row *row); \ No newline at end of file -- 2.35.1 From ebc2627137bac3c46f6e39acb8eb54f919ac4910 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 10:36:44 +0600 Subject: [PATCH 05/24] Kernal addon page title changed --- locale/ubinstall-gtk.pot | 6 +----- locale/ubinstall-gtk_ru.po | 8 ++------ source/ubl-strings.h | 4 ++-- ubinstall-gtk.glade | 2 +- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index ed05804..5271fb7 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -945,10 +945,6 @@ msgstr "" msgid "Kernel" msgstr "" -#: source/ubl-strings.h:274 -msgid "Kernel addons" -msgstr "" - #: source/ubl-strings.h:275 msgid "Installing Modules" msgstr "" @@ -1018,7 +1014,7 @@ msgid "Select your language:" msgstr "" #: source/ubl-strings.h:293 -msgid "Selecting additional system kernel components" +msgid "Additional kernel components" msgstr "" #: source/ubl-strings.h:294 diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 0c0a737..6b12ec1 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -965,10 +965,6 @@ msgstr "Установка программ по группам" msgid "Kernel" msgstr "Ядро" -#: source/ubl-strings.h:274 -msgid "Kernel addons" -msgstr "Дополнительные компоненты ядра" - #: source/ubl-strings.h:275 msgid "Installing Modules" msgstr "Установка модулей" @@ -1038,8 +1034,8 @@ msgid "Select your language:" msgstr "Выберите язык:" #: source/ubl-strings.h:293 -msgid "Selecting additional system kernel components" -msgstr "Выбор дополнительных компонентов ядра системы" +msgid "Additional kernel components" +msgstr "Дополнительные компоненты ядра" #: source/ubl-strings.h:294 msgid "Package:" diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 702fa7f..4f24f0c 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -262,7 +262,7 @@ NULL) #define SYSTEM_SECTION_LABEL _("System") #define PACKAGES_SECTION_LABEL _("Installing software by groups") #define KERNEL_LABEL _("Kernel") -#define KERNEL_ADDON_LABEL _("Kernel addons") +#define KERNEL_ADDON_LABEL _("Additional kernel components") #define SOFTWARE_LABEL _("Installing Modules") #define PACMAN_SOFTWARE_LABEL _("Installing Packages") #define REGION_ICON_LABEL _("Location") @@ -303,7 +303,7 @@ NULL) // #define _LABEL _("Chosen size:") // #define _LABEL _("Overall size:") // #define _LABEL _("Select your language:") -// #define _LABEL _("Selecting additional system kernel components") +// #define _LABEL _("Additional kernel components") // #define _LABEL _("Package:") // #define _LABEL _("Module:") // #define _LABEL _("New section at") diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 75bacc4..62937cb 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -3010,7 +3010,7 @@ Select a different installation source. True False - Selecting additional system kernel components + Additional kernel components True 0 -- 2.35.1 From 27cc011f0b805e9a52a9acc2dfcfc9ac890a43b0 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 11:04:58 +0600 Subject: [PATCH 06/24] Kernel addon page shows installed kernel addons --- source/ubinstall-gtk-kernel.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 39e9483..feb0adb 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -434,6 +434,10 @@ void yon_kernel_addon_setup(main_window *widgets){ } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); } + if (yon_packages_check_installed(modules)||yon_packages_check_installed(package)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); + gtk_widget_set_sensitive(row->InstallCheck,0); + } } yon_kernel_addon_resize(widgets); -- 2.35.1 From 89195ac37973f06643c7bfd469f1b5daf29e4497 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 11:06:48 +0600 Subject: [PATCH 07/24] Fixed kernel addon saved KERNEL_BOOT parameter --- source/ubinstall-gtk-components.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 32cc8e4..89a5d11 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -69,7 +69,7 @@ int yon_kernel_addon_save(main_window *widgets){ if (!main_config.configure_mode){ int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,packages_parameter, KERNEL_BOOT_parameter,NULL); + config_str parameters = yon_config_get_save_parameters_by_key(&size,packages_parameter,NULL); if (parameters){ char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); -- 2.35.1 From 8beac05978dc6543318a102a32d1f2903d7d7ac5 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 13:33:26 +0600 Subject: [PATCH 08/24] Added packages by groups page chosen on others pages shown --- source/ubinstall-gtk-packages.c | 21 +++++++++++++++++---- ubinstall-gtk.glade | 3 +++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index fa821bc..b63b730 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -72,6 +72,18 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_clear(widgets->PackagesList); + char *modules = config(modules_parameter); + if (modules&&!strcmp(modules,"auto")){ + int final_size; + config_str final = NULL; + for (int i=0;iPackagesList,&package_iter,subcategory_iter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); gtk_tree_iter_free(subcategory_iter); } else { @@ -97,14 +109,14 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } } else { GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } gtk_tree_iter_free(category_iter); @@ -128,11 +140,12 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } } } + if (!yon_char_is_empty(modules)) free(modules); gtk_tree_view_expand_all(GTK_TREE_VIEW(widgets->PackagesTree)); } diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 62937cb..afe4e1b 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -213,6 +213,8 @@ + + @@ -7118,6 +7120,7 @@ Select a different installation source. 0 + 4 3 0 -- 2.35.1 From b2d08bfe49ac0fe983dda2ced2019946835eb8fd Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 13:37:54 +0600 Subject: [PATCH 09/24] Fixed packages by groups selection load --- source/ubinstall-gtk-packages.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index b63b730..f9ca8c4 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -99,7 +99,7 @@ void yon_packages_tab_init(main_window *widgets){ GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); gtk_tree_iter_free(subcategory_iter); } else { @@ -109,14 +109,14 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } } else { GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } gtk_tree_iter_free(category_iter); @@ -140,7 +140,7 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } } -- 2.35.1 From a0adf1429350e8f0dc7ff9a21b4d8681019ded68 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 14:18:24 +0600 Subject: [PATCH 10/24] Fixed packages by group activation --- source/ubinstall-gtk-packages.c | 39 +++++++++++++++++++-------------- ubinstall-gtk.glade | 4 +++- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index f9ca8c4..f63cabc 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -12,14 +12,14 @@ int yon_packages_tab_save(main_window *widgets){ char *package; gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&subiter,0,&status,1,&package,3,&selectable,-1); if (selectable&&status){ - yon_config_append_element(packages_parameter,package,","); + yon_config_append_elements(packages_parameter,package,","); }else if (selectable&&!status){ yon_config_remove_elements(packages_parameter,package,","); } else { for (int valid3 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&packiter,&subiter);valid3;valid3 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&packiter)){ gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&packiter,0,&status,1,&package,3,&selectable,-1); if (status){ - yon_config_append_element(packages_parameter,package,","); + yon_config_append_elements(packages_parameter,package,","); } else { yon_config_remove_elements(packages_parameter,package,","); } @@ -92,14 +92,15 @@ void yon_packages_tab_init(main_window *widgets){ int parsed_size; config_str parsed = yon_char_parse(packages[i],&parsed_size,";"); GtkTreeIter *category_iter = yon_category_check(widgets->PackagesList,parsed[0]); + char *name_render = yon_char_replace(parsed[2],","," "); if (category_iter){ if (!yon_char_is_empty(parsed[1])){ GtkTreeIter *subcategory_iter = yon_subcategory_check(widgets->PackagesList,category_iter,parsed[1]); if (subcategory_iter){ GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); gtk_tree_iter_free(subcategory_iter); } else { @@ -108,15 +109,15 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_append(widgets->PackagesList,&subcatiter,category_iter); gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); } } else { GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); } gtk_tree_iter_free(category_iter); @@ -130,8 +131,8 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_append(widgets->PackagesList,&subcategory_iter,&catiter); gtk_tree_store_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,1,parsed[2],2,full_string,3,1,-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } else { GtkTreeIter package_iter; @@ -139,8 +140,8 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_append(widgets->PackagesList,&catiter,NULL); gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); } } @@ -178,14 +179,20 @@ void yon_on_packages_chosen(GtkWidget *, char *path, main_window *widgets){ GtkTreeIter iter; gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PackagesList),&iter,path); int status; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,-1); - gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + int sensitive; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,4,&sensitive,-1); + if (sensitive){ + gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + } } void yon_on_packages_activated(GtkWidget *, GtkTreePath* path, GtkTreeViewColumn* , main_window *widgets){ GtkTreeIter iter; gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->PackagesList),&iter,path); + int sensitive; int status; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,-1); - gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,4,&sensitive,-1); + if (sensitive){ + gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + } } \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index afe4e1b..762849f 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -207,7 +207,7 @@ - + @@ -215,6 +215,8 @@ + + -- 2.35.1 From 46f822abd0d09202146dca42e3d5ea16e76ad7da Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 15:25:51 +0600 Subject: [PATCH 11/24] Module installation shows installed modules --- source/ubinstall-gtk-components.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 89a5d11..e3a26ad 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -413,6 +413,23 @@ gboolean yon_software_insert(struct row_data *row_input){ } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); } + char *modules_param = config(modules_parameter); + if (modules_param&&!strcmp(modules_param,"auto")){ + int final_size; + config_str final = NULL; + for (int i=0;iname,",")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); + gtk_widget_set_sensitive(row->InstallCheck,0); + } + if (!yon_char_is_empty(modules_param)) free(modules_param); return G_SOURCE_REMOVE; } -- 2.35.1 From 85a5ba6e78673a7a7b3a7381015381d6579fdefc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 18 Mar 2026 18:05:23 +0600 Subject: [PATCH 12/24] Page init functions rename --- source/ubinstall-gtk-components.c | 3 ++ source/ubinstall-gtk-kernel.c | 4 +- source/ubinstall-gtk-page-switch.c | 8 ++-- source/ubinstall-gtk-startup-apps.c | 2 +- source/ubinstall-gtk-startup-services.c | 2 +- source/ubinstall-gtk.c | 51 ++++--------------------- source/ubinstall-gtk.h | 10 ++--- 7 files changed, 23 insertions(+), 57 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index e3a26ad..a6ff663 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -265,6 +265,9 @@ void yon_modules_missed_func(main_window *widgets){ void yon_os_components_init(main_window *widgets){ + yon_config_remove_by_args(modules_parameter,NULL); + char *command = yon_config_parameter_prepare_command(modules_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); int size = 0; GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *iter; diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index feb0adb..50faa06 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -186,7 +186,7 @@ void yon_kernel_addon_resize(main_window *widgets){ g_list_free(list); } -void yon_kernel_setup(main_window *widgets){ +void yon_kernel_init(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox)); GList *iter; for (iter = list; iter; iter = iter->next){ @@ -391,7 +391,7 @@ void yon_kernel_addon_row_setup(kernel_addon_row *row, char *name, char *modules free(description_full); } -void yon_kernel_addon_setup(main_window *widgets){ +void yon_kernel_addon_init(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox)); GList *iter; for (iter = list; iter; iter = iter->next){ diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 01ff02a..64ba4b9 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -429,10 +429,10 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ yon_os_components_init(widgets); break; case YON_PAGE_KERNEL: - yon_kernel_setup(widgets); + yon_kernel_init(widgets); break; case YON_PAGE_KERNEL_ADDON: - yon_kernel_addon_setup(widgets); + yon_kernel_addon_init(widgets); break; case YON_PAGE_SOFTWARE: yon_software_init(widgets); @@ -453,10 +453,10 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ yon_user_init(widgets); break; case YON_PAGE_STARTUP: - yon_startup_services_setup(widgets); + yon_startup_services_init(widgets); break; case YON_PAGE_APP_STARTUP: - yon_startup_apps_setup(widgets); + yon_startup_apps_init(widgets); break; case YON_PAGE_BOOTLOADER: yon_bootloader_init(widgets); diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c index 65a42c9..48b5ad4 100644 --- a/source/ubinstall-gtk-startup-apps.c +++ b/source/ubinstall-gtk-startup-apps.c @@ -41,7 +41,7 @@ void on_startup_apps_remove(GtkWidget *self,main_window *widgets){ } } -void yon_startup_apps_setup(main_window *widgets){ +void yon_startup_apps_init(main_window *widgets){ GtkTreeIter iter; gtk_list_store_clear(widgets->StartupAppsList); int size; diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index df22c6b..a7e7b9d 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -49,7 +49,7 @@ void on_startup_services_remove(GtkWidget *self,main_window *widgets){ } } -void yon_startup_services_setup(main_window *widgets){ +void yon_startup_services_init(main_window *widgets){ GtkTreeIter iter; gtk_list_store_clear(widgets->StartupList); int size; diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index c6bc354..fe82770 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -100,22 +100,6 @@ void yon_on_about(GtkWidget *, main_window *){ //functions -// //functions -// void yon_encryption_type_setup(GtkComboBoxText *target){ -// int size; -// config_str enc_types = yon_resource_open_file(encryptions_path,&size); -// for (int i=0;iStartScenarioButton=yon_gtk_builder_get_widget(builder,"StartScenarioButton"); widgets->SourceButton=yon_gtk_builder_get_widget(builder,"SourceButton"); - // widgets->SkipInstallationButton=yon_gtk_builder_get_widget(builder,"SkipInstallationButton"); widgets->InstallationRadio=yon_gtk_builder_get_widget(builder,"InstallationRadio"); widgets->InstallationNearRadio=yon_gtk_builder_get_widget(builder,"InstallationNearRadio"); @@ -469,7 +452,6 @@ void yon_main_window_create(main_window *widgets){ widgets->InstallerCountryList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerCountryList")); widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter")); widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList")); - // widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo"); widgets->RegionMapBox=yon_gtk_builder_get_widget(builder,"RegionMapBox"); widgets->RegionMapTarget=NULL; widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); @@ -563,7 +545,6 @@ void yon_main_window_create(main_window *widgets){ widgets->PacmanSoftwareChosenList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PacmanSoftwareChosenList")); widgets->PacmanSoftwareChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"PacmanSoftwareChosenCell")); - // widgets->StartupImage = yon_gtk_builder_get_widget(builder,"StartupImage"); widgets->StartupServicesTree = yon_gtk_builder_get_widget(builder,"StartupServicesTree"); widgets->StartupServicesAddButton = yon_gtk_builder_get_widget(builder,"StartupServicesAddButton"); widgets->StartupServicesEditButton = yon_gtk_builder_get_widget(builder,"StartupServicesEditButton"); @@ -578,12 +559,10 @@ void yon_main_window_create(main_window *widgets){ widgets->StartupAppsChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"StartupAppsChosenCell")); widgets->StartupAppsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"StartupAppsList")); - // widgets->BootloaderImage = yon_gtk_builder_get_widget(builder,"BootloaderImage"); widgets->BootloadTimerSwitch = yon_gtk_builder_get_widget(builder,"BootloadTimerSwitch"); widgets->BootloadTimerSpin = yon_gtk_builder_get_widget(builder,"BootloadTimerSpin"); widgets->BootloadDefaultOSEntry = yon_gtk_builder_get_widget(builder,"BootloadDefaultOSEntry"); widgets->BootloadDefaulOSButton = yon_gtk_builder_get_widget(builder,"BootloadDefaulOSButton"); - // widgets->BootloadNoPasswordSwitch = yon_gtk_builder_get_widget(builder,"BootloadNoPasswordSwitch"); widgets->BootloadUserTree = yon_gtk_builder_get_widget(builder,"BootloadUserTree"); widgets->BootloadUserAddButton = yon_gtk_builder_get_widget(builder,"BootloadUserAddButton"); widgets->BootloadUserEditButton = yon_gtk_builder_get_widget(builder,"BootloadUserEditButton"); @@ -591,7 +570,6 @@ void yon_main_window_create(main_window *widgets){ widgets->BootloadUserRemoveButton = yon_gtk_builder_get_widget(builder,"BootloadUserRemoveButton"); widgets->BootloadUsersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootloadUsersList")); - // widgets->NetworkImage = yon_gtk_builder_get_widget(builder,"NetworkImage"); widgets->NetworkDomainSwitch = yon_gtk_builder_get_widget(builder,"NetworkDomainSwitch"); widgets->NetworkDomainNameEntry = yon_gtk_builder_get_widget(builder,"NetworkDomainNameEntry"); widgets->NetworkDomainAdminEntry = yon_gtk_builder_get_widget(builder,"NetworkDomainAdminEntry"); @@ -663,7 +641,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->GrubInstallUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedUpdateGpartedButton),"clicked",G_CALLBACK(on_gparted_update),widgets); - // g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets); g_signal_connect(G_OBJECT(widgets->NextButton),"clicked",G_CALLBACK(on_page_next_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_prev_clicked),widgets); @@ -702,15 +679,9 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->AdditionalComponentsUncheckAllCheck),"toggled",G_CALLBACK(on_software_uncheck_all),widgets); - // g_signal_connect(G_OBJECT(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin))),"value-changed",G_CALLBACK(yon_size_changed),widgets); g_signal_connect(G_OBJECT(widgets->NextInstallationSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserdataFormatSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets); g_signal_connect(G_OBJECT(widgets->OSFormatSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->NextInstallationSizeTypeSpin),"changed",G_CALLBACK(on_partition_size_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->OSFormatSizeCombo),"changed",G_CALLBACK(on_partition_size_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->UserdataFormatSizeCombo),"changed",G_CALLBACK(on_partition_size_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordEntry); g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordButton); @@ -720,7 +691,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets); g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets); - // g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesTree),"cursor-changed",G_CALLBACK(on_startup_services_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesAddButton),"clicked",G_CALLBACK(on_startup_service_add),widgets); @@ -761,9 +731,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->BootloadUserRemoveButton),"clicked",G_CALLBACK(on_bootloader_user_remove),widgets); g_signal_connect(G_OBJECT(widgets->BootloadTimerSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->BootloadTimerSpin); - // g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserRemoveButton); - // g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserAddButton); - // g_signal_connect(G_OBJECT(widgets->BootloadNoPasswordSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->BootloadUserTree); g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainNameEntry); g_signal_connect(G_OBJECT(widgets->NetworkDomainSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->NetworkDomainAdminEntry); @@ -945,9 +912,6 @@ void yon_main_window_create(main_window *widgets){ main_config.part_size_default = default_part_size[0]; } } - // if (main_config.autoinstall){ - - // } } gboolean yon_maximize_start(main_window *widgets){ @@ -985,7 +949,6 @@ main_window *yon_main_window_complete(){ int main(int argc, char *argv[]){ main_config.argv=argv; main_config.argc = argc; - // __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); config_str unfound = NULL; int size=0; opterr=0; diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 4222b30..060edfa 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1326,22 +1326,22 @@ gboolean yon_on_revealer_switched(yon_menu_window *window); gboolean on_menu_clicked(GtkWidget *, GdkEventButton *event, yon_menu_window *window); yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets); void on_submenu_open(GtkWidget *, yon_menu_item *item); -void yon_kernel_setup(main_window *widgets); +void yon_kernel_init(main_window *widgets); void yon_kernel_row_setup(kernel_row *row, char *name, char *modules, char *package, char *tags, char *description); void yon_kernel_row_setup_tags(kernel_row *row, char *tags); int yon_tag_add(GtkBox *target, char *tag_label, char *tag_style, char *icon_name); kernel_row *yon_kernel_row_new(); void yon_kernel_resize(main_window *widgets); -void yon_kernel_addon_setup(main_window *widgets); +void yon_kernel_addon_init(main_window *widgets); void yon_kernel_addon_resize(main_window *widgets); -void yon_startup_services_setup(main_window *widgets); +void yon_startup_services_init(main_window *widgets); void on_srartup_services_toggled(GtkCellRenderer *, char *path, main_window *widgets); void on_startup_service_edit(GtkWidget *, main_window *widgets); void on_startup_service_add(GtkWidget *, main_window *widgets); startup_service_window *yon_startup_service_window_new(); void on_startup_edit_accept(GtkWidget *, main_window *widgets); void on_startup_add_accept(GtkWidget *, main_window *widgets); -void yon_startup_services_setup(main_window *widgets); +void yon_startup_services_init(main_window *widgets); void on_startup_services_remove(GtkWidget *self, main_window *widgets); void on_startup_services_selection_changed(GtkWidget *, main_window *widgets); void on_pacman_software_all_toggled(GtkWidget *, char *path, main_window *widgets); @@ -1493,7 +1493,7 @@ gboolean on_install_slider_slide(main_window *widgets); void on_srartup_apps_toggled(GtkWidget *, char *path, main_window *widgets); void on_startup_apps_selection_changed(GtkWidget *, main_window *widgets); void on_startup_apps_remove(GtkWidget *self, main_window *widgets); -void yon_startup_apps_setup(main_window *widgets); +void yon_startup_apps_init(main_window *widgets); void on_startup_app_add_accept(GtkWidget *self, main_window *widgets); void on_startup_app_edit_accept(GtkWidget *self, main_window *widgets); startup_service_window *yon_startup_app_window_new(); -- 2.35.1 From dde99ecb567c4540c47aa1576e82a13720b5a35b Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 19 Mar 2026 13:29:40 +0600 Subject: [PATCH 13/24] Test Prompt for root password if configuration file is created in a directory not owned by the user --- source/ubinstall-gtk-configuration-mode.c | 8 ++++++++ source/ubinstall-gtk.h | 1 + 2 files changed, 9 insertions(+) diff --git a/source/ubinstall-gtk-configuration-mode.c b/source/ubinstall-gtk-configuration-mode.c index 6bed3fc..4d02b01 100644 --- a/source/ubinstall-gtk-configuration-mode.c +++ b/source/ubinstall-gtk-configuration-mode.c @@ -26,9 +26,17 @@ int yon_configuration_path_check(const char *path){ data->action_text = homedir_create?CREATE_CONFIG_DIALOG_LABEL_HOMEDIR:CREATE_CONFIG_DIALOG_LABEL; data->title = WARNING_TITLE_LABEL; if (yon_confirmation_dialog_call(NULL,data)==GTK_RESPONSE_ACCEPT){ + char *dir_path = yon_file_get_parent(full_path); + if (access(full_path,F_OK)&&(access(dir_path,W_OK)||access(dir_path,R_OK))){ + if (system(ubconfig_file_create_pkexec(full_path))){ + return 0; + } + } else if (access(full_path,F_OK)){ yon_launch(ubconfig_file_create(full_path)); struct passwd *user = getpwnam(yon_ubl_root_user_get()); if (chown(full_path,user->pw_uid,user->pw_gid)){}; + } + } else { return 0; diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 060edfa..107d78f 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -294,6 +294,7 @@ layout && /description:/ {\ #define get_devices_command "ubinstall show --lsdevices" #define get_parts_for_device_command "ubinstall show --lsparts" #define get_modules_command "ubinstall show --lsmodules" +#define ubconfig_file_create_pkexec(target) yon_char_unite("pkexec ubconfig --target \"",target,"\" create",NULL) #define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL) -- 2.35.1 From c17ffc5d4ad2eb08e58fc89d9b26abe62e770f2d Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 19 Mar 2026 15:45:48 +0600 Subject: [PATCH 14/24] On sections page cancel button replaced with exit button --- source/ubinstall-gtk-page-switch.c | 11 +++++++---- source/ubinstall-gtk.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 64ba4b9..c579673 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -53,7 +53,7 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){ return -1; } -enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){ +enum YON_PAGES yon_page_get_prev(main_window *,enum YON_PAGES page){ switch (page){ case YON_PAGE_WELCOME: return YON_PAGE_WELCOME; break; case YON_PAGE_LICENCE: return YON_PAGE_WELCOME; break; @@ -92,7 +92,6 @@ enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){ } break; case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break; - case YON_PAGE_CONFIG_HUB: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_KERNEL: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_KERNEL_ADDON: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_CONFIG_HUB; break; @@ -177,10 +176,11 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ break; case YON_PAGE_SECTIONS: gtk_widget_show(widgets->SourceButton); - gtk_widget_show(widgets->BackButton); + gtk_widget_show(widgets->BackButton); gtk_widget_set_sensitive(widgets->BackButton,1); gtk_widget_set_sensitive(widgets->NextButton,1); gtk_widget_set_sensitive(widgets->CancelInstallButton,1); + gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))&&!main_config.configure_mode){ gtk_widget_show(widgets->StartScenarioButton); } else { @@ -507,7 +507,7 @@ void on_page_next_clicked(GtkWidget *, main_window *widgets){ void on_page_prev_clicked(GtkWidget *, main_window *widgets){ enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); - page = yon_page_get_prev(page); + page = yon_page_get_prev(widgets,page); if ((int)page!=-1){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page); } @@ -529,6 +529,9 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ gtk_main_quit(); break; + case YON_PAGE_SECTIONS: + on_yon_exit(NULL,NULL,widgets); + break; default: { if (main_config.install_thread){ dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 107d78f..af6e80e 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1281,7 +1281,7 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets); void yon_load_proceed(YON_CONFIG_TYPE type); void _yon_saving_threaded(char *final_command); enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page); -enum YON_PAGES yon_page_get_prev(enum YON_PAGES page); +enum YON_PAGES yon_page_get_prev(main_window *widgets,enum YON_PAGES page); enum YON_PAGES yon_sections_get_next_page(main_window *widgets); enum YON_PAGES yon_recovery_get_next(main_window *widgets); enum YON_PAGES yon_page_get_current(GtkNotebook *target); -- 2.35.1 From def1a27ca31383b7d8049debd1a948151bc73979 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 19 Mar 2026 15:48:46 +0600 Subject: [PATCH 15/24] Fixed configuration restoring at exit at configuration mode --- source/ubinstall-gtk.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index fe82770..bacf1ea 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -233,7 +233,8 @@ void on_exit_accepted(main_window *widgets){ pthread_cancel((pthread_t)main_config.install_thread); g_mutex_unlock(&main_config.install_mutex); } - yon_config_restore(widgets); + if (!main_config.configure_mode) + yon_config_restore(widgets); main_config.exit_accepted=1; while(gtk_events_pending()) gtk_main_iteration(); } @@ -889,15 +890,7 @@ void yon_main_window_create(main_window *widgets){ } if (main_config.force_ini){ while(gtk_events_pending()) gtk_main_iteration(); - if (yon_configuration_path_check(main_config.config_save_path)){ - GList *box = gtk_container_get_children(GTK_CONTAINER(widgets->ConfigurationModeMenuItem)); - GList *children = gtk_container_get_children(GTK_CONTAINER(box->data)); - - GtkWidget *Check = GTK_WIDGET(g_list_nth_data(children,1)); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Check),1); - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),CONFIGURATION_MODE_STATUS_LABEL,0,BACKGROUND_IMAGE_INFO_TYPE); - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox2),CONFIG_PATH_LABEL(main_config.config_save_path),0,BACKGROUND_IMAGE_INFO_TYPE); - } else { + if (!yon_configuration_path_check(main_config.config_save_path)){ exit (1); } } -- 2.35.1 From 3cc7aab0e5bb8d6510e77d1ecc328197264afd50 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 19 Mar 2026 17:05:44 +0600 Subject: [PATCH 16/24] Loclisation fix --- locale/ubinstall-gtk_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 6b12ec1..4e4e49a 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -1519,7 +1519,7 @@ msgid "" "Selecting kernels for installation in the system and selecting the default kernel. Internet access required" msgstr "" "Выбор ядер для установки в систему и выбор ядра по умолчанию. Требуется " -"доступ В Интернет." +"доступ в Интернет." #: source/ubl-strings.h:414 msgid "" -- 2.35.1 From 03d755436271dd08c9a8df879bf075f3159f9af4 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 19 Mar 2026 18:35:03 +0600 Subject: [PATCH 17/24] WIP reloading at config page opening; Removed global configuration --- source/ubinstall-gtk-bootloader.c | 16 +++++++++++++++- source/ubinstall-gtk-components.c | 18 +++++++++--------- source/ubinstall-gtk-kernel.c | 12 ++++++++++++ source/ubinstall-gtk-keyboard.c | 10 +++++++++- source/ubinstall-gtk-language.c | 7 +++++++ source/ubinstall-gtk-network.c | 18 +++++++++++++++++- source/ubinstall-gtk-packages.c | 6 ++++++ source/ubinstall-gtk-page-switch.c | 12 ++++++++++++ source/ubinstall-gtk-region.c | 4 ++++ source/ubinstall-gtk-saving.c | 17 ----------------- source/ubinstall-gtk-startup-apps.c | 6 ++++++ source/ubinstall-gtk-startup-services.c | 6 ++++++ source/ubinstall-gtk-users.c | 13 +++++++++++++ source/ubinstall-gtk.c | 16 +--------------- source/ubinstall-gtk.h | 2 -- ubinstall-gtk-service-window.glade | 4 ++-- ubinstall-gtk.glade | 20 +++++--------------- 17 files changed, 124 insertions(+), 63 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index 73a6aed..ceba4ec 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -41,7 +41,7 @@ int yon_bootloader_save(main_window *widgets){ char *user_string = yon_char_parsed_to_string(user_parameters,param_size," "); yon_char_parsed_free(user_parameters,param_size); int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,GRUB_TIMEOUT_parameter,AUTOLOGINUSER_parameter,GRUB_SUPERUSERS_parameter,NULL); + config_str parameters = yon_config_get_save_parameters_by_key(&size,GRUB_TIMEOUT_parameter,GRUB_SUPERUSERS_parameter,NULL); if (parameters||user_parameters){ char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); char *command = yon_char_unite(ubconfig_dull_command,"--target system remove [autoinstall] ",GRUB_PASSWORD_parameter_all,"; ",ubconfig_dull_command,"--target system ",command_parameters, " ", user_string, NULL); @@ -455,6 +455,20 @@ void yon_bootloader_interface_update(main_window *widgets){ } void yon_bootloader_init(main_window *widgets){ + if (!main_config.configure_mode){ + int size = 0; + config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&size); + yon_config_remove_by_list(users,(size_t)size); + yon_config_remove_by_args(GRUB_TIMEOUT_parameter,GRUB_SUPERUSERS_parameter,NULL); + char *command = yon_config_parameter_prepare_command(GRUB_TIMEOUT_parameter,main_config.config_load_path,NULL,NULL); + char *command2 = yon_config_parameter_prepare_command(GRUB_SUPERUSERS_parameter,main_config.config_load_path,NULL,NULL); + char *command3 = yon_config_parameter_prepare_command(GRUB_PASSWORD_parameter_all,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,command3,NULL); + yon_char_parsed_free(users,size); + free(command); + free(command2); + free(command3); + } gtk_list_store_clear(widgets->BootloadUsersList); char *timeout = config(GRUB_TIMEOUT_parameter); char *os = config(GRUB_DEFAULT_parameter); diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index a6ff663..bccefbc 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -36,15 +36,7 @@ int yon_kernel_save(main_window *widgets){ } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,packages_parameter, KERNEL_BOOT_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,packages_parameter, KERNEL_BOOT_parameter,NULL); } return 1; @@ -437,6 +429,10 @@ gboolean yon_software_insert(struct row_data *row_input){ } void yon_software_init(main_window *widgets){ + yon_config_remove_by_args(packages_parameter,NULL); + char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList)); GList *iter; for (iter=list;iter;iter=iter->next){ @@ -506,6 +502,10 @@ int yon_pacman_software_save(main_window *widgets){ } void yon_pacman_init(main_window *widgets){ + yon_config_remove_by_args(packages_parameter,NULL); + char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); gtk_list_store_clear(widgets->PacmanSoftwareChosenList); char *pacman_packages = config(packages_parameter); diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 50faa06..8347e7d 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -187,6 +187,14 @@ void yon_kernel_addon_resize(main_window *widgets){ } void yon_kernel_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_remove_by_args(packages_parameter,KERNEL_BOOT_parameter,NULL); + char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); + char *command2 = yon_config_parameter_prepare_command(KERNEL_BOOT_parameter,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,NULL); + free(command); + free(command2); + } GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox)); GList *iter; for (iter = list; iter; iter = iter->next){ @@ -392,6 +400,10 @@ void yon_kernel_addon_row_setup(kernel_addon_row *row, char *name, char *modules } void yon_kernel_addon_init(main_window *widgets){ + yon_config_remove_by_args(packages_parameter,NULL); + char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox)); GList *iter; for (iter = list; iter; iter = iter->next){ diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index e82afa0..2a7ab0e 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -49,7 +49,7 @@ int yon_keyboard_save(main_window *widgets){ } if (!main_config.configure_mode){ int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,xkbmodel_parameter,xkbmodel_parameter,num_lock_boot_parameter,NULL); + config_str parameters = yon_config_get_save_parameters_by_key(&size,xkbmodel_parameter,num_lock_boot_parameter,NULL); if (parameters){ char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); @@ -63,6 +63,14 @@ int yon_keyboard_save(main_window *widgets){ } void yon_keyboard_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_remove_by_args(xkbmodel_parameter,num_lock_boot_parameter,NULL); + char *command1 = yon_config_parameter_prepare_command(xkbmodel_parameter_command,main_config.config_load_path,NULL,NULL); + char *command2 = yon_config_parameter_prepare_command(num_lock_boot_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command1,command2,NULL); + free(command1); + free(command2); + } g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo)); diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c index bc8bcda..a99cd87 100644 --- a/source/ubinstall-gtk-language.c +++ b/source/ubinstall-gtk-language.c @@ -288,5 +288,12 @@ int yon_language_save(main_window *widgets){ } void yon_language_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_remove_by_args(lang_parameter, locale_parameter,NULL); + char *command = yon_config_parameter_prepare_command(lang_parameter_command,main_config.config_load_path,NULL,NULL); + char *command2 = yon_config_parameter_prepare_command(locale_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,NULL); + free(command); + } yon_language_update(widgets); } diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 19b9796..d1d9c6d 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -230,7 +230,7 @@ int yon_network_save(main_window *widgets){ hostname = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry)); } if (yon_char_is_empty(hostname)){ - yon_ubl_status_box_render(_EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(widgets->HotnameEntry); return 0; } @@ -326,6 +326,22 @@ int yon_network_save(main_window *widgets){ } void yon_network_init(main_window *widgets){ + if (!main_config.configure_mode){ + int size = 0; + config_str users = yon_config_get_all_by_key(NETWORK_parameter_search,&size); + yon_config_remove_by_list(users,(size_t)size); + yon_config_remove_by_args(DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL); + char *command = yon_config_parameter_prepare_command(DOMAIN_parameter,main_config.config_load_path,NULL,NULL); + char *command2 = yon_config_parameter_prepare_command(DOMAIN_admanger_parameter,main_config.config_load_path,NULL,NULL); + char *command3 = yon_config_parameter_prepare_command(NTPSERVERS_parameter,main_config.config_load_path,NULL,NULL); + char *command4 = yon_config_parameter_prepare_command(hostname_parameter,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,command3,command4,NULL); + yon_char_parsed_free(users,size); + free(command); + free(command2); + free(command3); + free(command4); + } GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->NetworkConnectionsBox)); GList *iter; for (iter=list;iter;iter=iter->next){ diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index f63cabc..f2dc9d1 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -71,6 +71,12 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite } void yon_packages_tab_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_remove_by_args(packages_parameter,NULL); + char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); + } gtk_tree_store_clear(widgets->PackagesList); char *modules = config(modules_parameter); if (modules&&!strcmp(modules,"auto")){ diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index c579673..aef5eda 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -208,6 +208,7 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ case YON_PAGE_BOOTLOADER: case YON_PAGE_PACKAGES: case YON_PAGE_NETWORK:{ + gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),CANCEL_LABEL); gtk_widget_show(widgets->NextButton); gtk_widget_hide(widgets->BackButton); gtk_button_set_label(GTK_BUTTON(widgets->NextButton),BACK_LABEL); @@ -479,6 +480,17 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_RECOVERY_USRDATA_ONLY: case YON_PAGE_INSTALLATION_BEGIN: yon_install_init(widgets,page); + { + int size=0; + char *command = yon_config_parameter_prepare_command(AUTOINSTALL_TYPE_INSTALL_command,"system",NULL,NULL); + config_str autoinstall_param = yon_config_load(command,&size); + if (size&&!yon_char_is_empty(autoinstall_param[0])&&strcmp(autoinstall_param[0],"(null)\n")&&!main_config.configure_mode){ + gtk_widget_show(widgets->StartScenarioButton); + } else { + gtk_widget_hide(widgets->StartScenarioButton); + } + yon_char_parsed_free(autoinstall_param,size); + } break; case YON_PAGE_INSTALLATION: yon_install_slider_init(widgets); diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 57047a3..b87d15c 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -197,6 +197,10 @@ void on_region_entry_changed(GtkWidget *, main_window *widgets){ } void yon_region_init(main_window *widgets){ + yon_config_remove_by_args(zone_parameter,NULL); + char *command = yon_config_parameter_prepare_command(zone_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); yon_timezone_init(); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index 5f1d6c7..ed67324 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -43,24 +43,9 @@ void on_config_local_load(GtkWidget *,main_window *widgets){ yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); } -void on_config_global_load(GtkWidget *,main_window *widgets){ - if (!yon_char_is_empty(main_config.force_ini)) { - on_config_custom_load_last(NULL,widgets); - return; - } - if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path); - main_config.config_load_path = yon_char_new("global"); - yon_load_proceed(YON_CONFIG_GLOBAL); - main_config.load_mode=YON_CONFIG_GLOBAL; - yon_main_window_update_locale(widgets); - yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); -} - void on_config_custom_load(GtkWidget *,main_window *){ yon_load_proceed(YON_CONFIG_CUSTOM); - // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); main_config.load_mode=YON_CONFIG_CUSTOM; - // yon_main_window_update_locale(widgets); } void on_config_custom_load_last(GtkWidget *,main_window *){ @@ -69,9 +54,7 @@ void on_config_custom_load_last(GtkWidget *,main_window *){ yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); char *command = config_get_command(main_config.config_load_path); yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); - // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); main_config.load_mode=YON_CONFIG_CUSTOM; - // yon_main_window_update_locale(widgets); } void on_config_global_local_save(GtkWidget *,main_window *widgets){ diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c index 48b5ad4..8efbd2b 100644 --- a/source/ubinstall-gtk-startup-apps.c +++ b/source/ubinstall-gtk-startup-apps.c @@ -42,6 +42,12 @@ void on_startup_apps_remove(GtkWidget *self,main_window *widgets){ } void yon_startup_apps_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_remove_by_args(AUTOEXEC_parameter,NULL); + char *command = yon_config_parameter_prepare_command(AUTOEXEC_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); + } GtkTreeIter iter; gtk_list_store_clear(widgets->StartupAppsList); int size; diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index a7e7b9d..3705d8a 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -50,6 +50,12 @@ void on_startup_services_remove(GtkWidget *self,main_window *widgets){ } void yon_startup_services_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_remove_by_args(SERVICES_ENABLE_parameter,NULL); + char *command = yon_config_parameter_prepare_command(SERVICES_ENABLE_parameter_command,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + free(command); + } GtkTreeIter iter; gtk_list_store_clear(widgets->StartupList); int size; diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index f088a7c..652fa64 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -146,6 +146,19 @@ yon_user_struct *yon_user_struct_new(){ } void yon_user_init(main_window *widgets){ + if (!main_config.configure_mode){ + int size = 0; + config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&size); + yon_config_remove_by_list(users,(size_t)size); + yon_config_remove_by_args(autologin_parameter,root_password_parameter,NULL); + char *command1 = yon_config_parameter_prepare_command(autologin_parameter_command,main_config.config_load_path,NULL,NULL); + char *command2 = yon_config_parameter_prepare_command(root_password_parameter_command,main_config.config_load_path,NULL,NULL); + char *command3 = yon_config_parameter_prepare_command(USERADD_parameter_all,main_config.config_load_path,NULL,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,command1,command2,command3,NULL); + free(command1); + free(command2); + free(command3); + } gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo)); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,DEFAULT_LABEL); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,SET_PASSWORD_LABEL); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index bacf1ea..d0b5a39 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -316,7 +316,6 @@ void yon_main_window_create(main_window *widgets){ widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); - widgets->LoadGlobalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadGlobalConfigurationMenuItem"); widgets->LoadLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem"); widgets->LoadExternalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadExternalConfigurationMenuItem"); @@ -618,7 +617,6 @@ void yon_main_window_create(main_window *widgets){ { g_signal_connect(G_OBJECT(widgets->LicenseAgreeRadio),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),widgets->NextButton); - g_signal_connect(G_OBJECT(widgets->LoadGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); @@ -865,23 +863,11 @@ void yon_main_window_create(main_window *widgets){ g_thread_new("Partitions_thread",(GThreadFunc)yon_partitions_list_load,widgets); { - if (main_config.lock_load_global == 1){ - gtk_widget_set_sensitive(widgets->LoadGlobalConfigurationMenuItem,0); - } - gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"headerTopic")),TITLE_LABEL); gtk_window_set_icon_name(GTK_WINDOW(widgets->MainWindow),icon_path); } gtk_builder_connect_signals(builder,NULL); - if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){ - gtk_widget_show(widgets->StartScenarioButton); - if (main_config.autoinstall){ - gtk_button_clicked(GTK_BUTTON(widgets->StartScenarioButton)); - } - } else { - gtk_widget_hide(widgets->StartScenarioButton); - } if (getuid()){ gtk_menu_item_activate(GTK_MENU_ITEM(widgets->ConfigurationModeMenuItem)); if (yon_char_is_empty(main_config.config_save_path)){ @@ -983,7 +969,7 @@ int main(int argc, char *argv[]){ { widgets = yon_main_window_complete(); - on_config_global_load(NULL,widgets); + on_config_local_load(NULL,widgets); } main_config.launch_arguments=yon_char_parsed_copy(argv,argc); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index af6e80e..b94f9d9 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -493,7 +493,6 @@ typedef struct GtkListStore *LayoutsList; GtkListStore *PartitionsList; - GtkWidget *LoadGlobalConfigurationMenuItem; GtkWidget *LoadLocalConfigurationMenuItem; GtkWidget *LoadExternalConfigurationMenuItem; @@ -1273,7 +1272,6 @@ void on_config_local_save(GtkWidget *, main_window *widgets); void on_config_global_local_save(GtkWidget *, main_window *widgets); void on_config_custom_load_last(GtkWidget *, main_window *widgets); void on_config_custom_load(GtkWidget *, main_window *); -void on_config_global_load(GtkWidget *, main_window *); void on_config_local_load(GtkWidget *, main_window *widgets); void yon_config_save_proceed(char *path, YON_CONFIG_TYPE type); void on_page_next_clicked(GtkWidget *, main_window *widgets); diff --git a/ubinstall-gtk-service-window.glade b/ubinstall-gtk-service-window.glade index 0f7923d..c311996 100644 --- a/ubinstall-gtk-service-window.glade +++ b/ubinstall-gtk-service-window.glade @@ -68,7 +68,7 @@ - + True True @@ -104,7 +104,7 @@ - + True True diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 762849f..ea93f12 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -207,7 +207,7 @@ - + @@ -621,16 +621,6 @@ True False False - - - True - False - Load global configuration - - - True @@ -5663,22 +5653,22 @@ Select a different installation source. - Unit + Service - 1 + 2 - Service + Unit - 2 + 1 -- 2.35.1 From 789d856795bba49ea4b0ad0ac7ce96601bf22d0c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 14:18:47 +0600 Subject: [PATCH 18/24] Test loading parameters from configuration when configuration page opens --- source/ubinstall-gtk-bootloader.c | 33 ++++++----------------- source/ubinstall-gtk-components.c | 20 +++++++------- source/ubinstall-gtk-grub.c | 10 +------ source/ubinstall-gtk-installation.c | 33 +++++------------------ source/ubinstall-gtk-kernel.c | 7 +---- source/ubinstall-gtk-keyboard.c | 17 ++---------- source/ubinstall-gtk-language.c | 16 ++--------- source/ubinstall-gtk-network.c | 35 ++++++------------------- source/ubinstall-gtk-packages.c | 13 +++------ source/ubinstall-gtk-region.c | 17 +++--------- source/ubinstall-gtk-separate.c | 10 +------ source/ubinstall-gtk-source.c | 10 +------ source/ubinstall-gtk-startup-apps.c | 15 ++--------- source/ubinstall-gtk-startup-services.c | 15 ++--------- source/ubinstall-gtk-users.c | 30 +++++---------------- 15 files changed, 57 insertions(+), 224 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index ceba4ec..3bd4bc4 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -26,29 +26,19 @@ int yon_bootloader_save(main_window *widgets){ gtk_tree_model_get(model,&iter,0,&is_admin,1,&username,2,&password,-1); yon_config_register(GRUB_PASSWORD_parameter(username),GRUB_PASSWORD_parameter_command(username),password); if (is_admin){ - yon_config_append_element(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,username); + yon_config_append_element(GRUB_SUPERUSERS_parameter,username,","); } else { yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); } } + if (!main_config.configure_mode){ int user_size=0; - int param_size=0; config_str users = yon_config_get_all_keys_by_key(GRUB_PASSWORD_parameter_search,&user_size); - config_str user_parameters = yon_config_get_save_parameters_by_list(¶m_size,users,user_size); - yon_char_parsed_free(users,user_size); - char *user_string = yon_char_parsed_to_string(user_parameters,param_size," "); - yon_char_parsed_free(user_parameters,param_size); - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,GRUB_TIMEOUT_parameter,GRUB_SUPERUSERS_parameter,NULL); - if (parameters||user_parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system remove [autoinstall] ",GRUB_PASSWORD_parameter_all,"; ",ubconfig_dull_command,"--target system ",command_parameters, " ", user_string, NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_char_parsed_add_or_create_if_exists(users,&user_size,GRUB_SUPERUSERS_parameter); + yon_char_parsed_add_or_create_if_exists(users,&user_size,GRUB_TIMEOUT_parameter); + yon_config_save_list_simple(users, user_size,main_config.config_load_path); } yon_bootloader_interface_update(widgets); @@ -458,16 +448,9 @@ void yon_bootloader_init(main_window *widgets){ if (!main_config.configure_mode){ int size = 0; config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&size); - yon_config_remove_by_list(users,(size_t)size); - yon_config_remove_by_args(GRUB_TIMEOUT_parameter,GRUB_SUPERUSERS_parameter,NULL); - char *command = yon_config_parameter_prepare_command(GRUB_TIMEOUT_parameter,main_config.config_load_path,NULL,NULL); - char *command2 = yon_config_parameter_prepare_command(GRUB_SUPERUSERS_parameter,main_config.config_load_path,NULL,NULL); - char *command3 = yon_config_parameter_prepare_command(GRUB_PASSWORD_parameter_all,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,command3,NULL); - yon_char_parsed_free(users,size); - free(command); - free(command2); - free(command3); + yon_config_remove_by_list(users,size); + yon_config_update_by_args(GRUB_TIMEOUT_parameter,GRUB_SUPERUSERS_parameter,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,ubconfig_load_command(main_config.config_load_path),GRUB_PASSWORD_parameter_command_all,NULL); } gtk_list_store_clear(widgets->BootloadUsersList); char *timeout = config(GRUB_TIMEOUT_parameter); diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index bccefbc..0771942 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -257,9 +257,9 @@ void yon_modules_missed_func(main_window *widgets){ void yon_os_components_init(main_window *widgets){ - yon_config_remove_by_args(modules_parameter,NULL); - char *command = yon_config_parameter_prepare_command(modules_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); + if (!main_config.configure_mode){ + yon_config_update_by_args(modules_parameter,NULL); + } int size = 0; GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *iter; @@ -429,10 +429,9 @@ gboolean yon_software_insert(struct row_data *row_input){ } void yon_software_init(main_window *widgets){ - yon_config_remove_by_args(packages_parameter,NULL); - char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); - free(command); + if (!main_config.configure_mode){ + yon_config_update_by_args(packages_parameter,NULL); + } GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList)); GList *iter; for (iter=list;iter;iter=iter->next){ @@ -502,10 +501,9 @@ int yon_pacman_software_save(main_window *widgets){ } void yon_pacman_init(main_window *widgets){ - yon_config_remove_by_args(packages_parameter,NULL); - char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); - free(command); + if (!main_config.configure_mode){ + yon_config_update_by_args(packages_parameter,NULL); + } gtk_list_store_clear(widgets->PacmanSoftwareChosenList); char *pacman_packages = config(packages_parameter); diff --git a/source/ubinstall-gtk-grub.c b/source/ubinstall-gtk-grub.c index 9dc05a8..0e151f3 100644 --- a/source/ubinstall-gtk-grub.c +++ b/source/ubinstall-gtk-grub.c @@ -57,15 +57,7 @@ int yon_grub_update_save(main_window *widgets){ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"grub_update"); if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,device_parameter,part_parameter,AUTOINSTALL_TYPE_INSTALL,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,device_parameter,part_parameter,AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL,NULL); } return 1; } \ No newline at end of file diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index 3e9cae3..4a0d2d3 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -30,15 +30,7 @@ int yon_install_common_save(main_window *widgets){ } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,AUTOINSTALL_TYPE_INSTALL,device_parameter,part_label_parameter,part_fs_type_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,AUTOINSTALL_TYPE_INSTALL,device_parameter,part_label_parameter,part_fs_type_parameter,NULL); } return 1; } @@ -112,15 +104,7 @@ int yon_install_separate_save(main_window *widgets){ } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,part_format_parameter,part_label_parameter,part_fs_type_parameter,device_parameter,part_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,part_format_parameter,part_label_parameter,part_fs_type_parameter,device_parameter,part_parameter,NULL); } return 1; } @@ -170,15 +154,7 @@ int yon_install_same_partition_save(main_window *widgets){ yon_config_remove_by_key(part_fs_type_parameter); } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,part_format_parameter,part_size_parameter,part_label_parameter,part_fs_type_parameter,AUTOINSTALL_TYPE_INSTALL,device_parameter,part_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,part_format_parameter,part_size_parameter,part_label_parameter,part_fs_type_parameter,AUTOINSTALL_TYPE_INSTALL,device_parameter,part_parameter,NULL); } return 1; } @@ -340,6 +316,9 @@ void yon_userdata_password_open(GtkWidget *, main_window *widgets){ } void yon_install_init(main_window *widgets, enum YON_PAGES page){ + if (!main_config.configure_mode){ + yon_config_update_by_args(AUTOINSTALL_TYPE_INSTALL,device_parameter,part_label_parameter,part_fs_type_parameter,NULL); + } yon_devices_setup(widgets); GtkWidget *device_tree = NULL; diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 8347e7d..d57d181 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -188,12 +188,7 @@ void yon_kernel_addon_resize(main_window *widgets){ void yon_kernel_init(main_window *widgets){ if (!main_config.configure_mode){ - yon_config_remove_by_args(packages_parameter,KERNEL_BOOT_parameter,NULL); - char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); - char *command2 = yon_config_parameter_prepare_command(KERNEL_BOOT_parameter,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,NULL); - free(command); - free(command2); + yon_config_update_by_args(packages_parameter,KERNEL_BOOT_parameter,NULL); } GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox)); GList *iter; diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 2a7ab0e..7aa1ea6 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -48,15 +48,7 @@ int yon_keyboard_save(main_window *widgets){ yon_config_remove_by_key(num_lock_boot_parameter); } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,xkbmodel_parameter,num_lock_boot_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,xkbmodel_parameter,num_lock_boot_parameter,NULL); } on_options_save(NULL,widgets); return 1; @@ -64,12 +56,7 @@ int yon_keyboard_save(main_window *widgets){ void yon_keyboard_init(main_window *widgets){ if (!main_config.configure_mode){ - yon_config_remove_by_args(xkbmodel_parameter,num_lock_boot_parameter,NULL); - char *command1 = yon_config_parameter_prepare_command(xkbmodel_parameter_command,main_config.config_load_path,NULL,NULL); - char *command2 = yon_config_parameter_prepare_command(num_lock_boot_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command1,command2,NULL); - free(command1); - free(command2); + yon_config_update_by_args(xkbmodel_parameter,num_lock_boot_parameter,NULL); } g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c index a99cd87..450d100 100644 --- a/source/ubinstall-gtk-language.c +++ b/source/ubinstall-gtk-language.c @@ -273,15 +273,7 @@ int yon_language_save(main_window *widgets){ yon_config_remove_by_key(locale_parameter); } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,lang_parameter,locale_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,lang_parameter,locale_parameter,NULL); } return 1; @@ -289,11 +281,7 @@ int yon_language_save(main_window *widgets){ void yon_language_init(main_window *widgets){ if (!main_config.configure_mode){ - yon_config_remove_by_args(lang_parameter, locale_parameter,NULL); - char *command = yon_config_parameter_prepare_command(lang_parameter_command,main_config.config_load_path,NULL,NULL); - char *command2 = yon_config_parameter_prepare_command(locale_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,NULL); - free(command); + yon_config_update_by_args(lang_parameter, locale_parameter,NULL); } yon_language_update(widgets); } diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index d1d9c6d..cad5d64 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -305,22 +305,12 @@ int yon_network_save(main_window *widgets){ } if (!main_config.configure_mode){ int connect_size=0; - int param_size=0; - config_str connections = yon_config_get_all_keys_by_key(NETWORK_parameter_search,&connect_size); - config_str connection_parameters = yon_config_get_save_parameters_by_list(¶m_size,connections,connect_size); - yon_char_parsed_free(connections,connect_size); - - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL); - if (parameters||connection_parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *connections_string = yon_char_parsed_to_string(connection_parameters,param_size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system remove [autoinstall] ",NETWORK_parameter_all,"; ", ubconfig_dull_command,"--target system ",yon_char_return_if_exist(command_parameters,""), " ", connections_string,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_char_parsed_add_or_create_if_exists(connections,&connect_size,DOMAIN_parameter); + yon_char_parsed_add_or_create_if_exists(connections,&connect_size,DOMAIN_admanger_parameter); + yon_char_parsed_add_or_create_if_exists(connections,&connect_size,NTPSERVERS_parameter); + yon_char_parsed_add_or_create_if_exists(connections,&connect_size,hostname_parameter); + yon_config_save_list_simple(connections,connect_size,main_config.config_load_path); } return 1; } @@ -329,18 +319,9 @@ void yon_network_init(main_window *widgets){ if (!main_config.configure_mode){ int size = 0; config_str users = yon_config_get_all_by_key(NETWORK_parameter_search,&size); - yon_config_remove_by_list(users,(size_t)size); - yon_config_remove_by_args(DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL); - char *command = yon_config_parameter_prepare_command(DOMAIN_parameter,main_config.config_load_path,NULL,NULL); - char *command2 = yon_config_parameter_prepare_command(DOMAIN_admanger_parameter,main_config.config_load_path,NULL,NULL); - char *command3 = yon_config_parameter_prepare_command(NTPSERVERS_parameter,main_config.config_load_path,NULL,NULL); - char *command4 = yon_config_parameter_prepare_command(hostname_parameter,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,command2,command3,command4,NULL); - yon_char_parsed_free(users,size); - free(command); - free(command2); - free(command3); - free(command4); + yon_config_remove_by_list(users,size); + yon_config_update_by_args(DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,ubconfig_load_command(main_config.config_load_path),NETWORK_parameter_all,NULL); } GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->NetworkConnectionsBox)); GList *iter; diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index f2dc9d1..b8bfc1b 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -28,15 +28,7 @@ int yon_packages_tab_save(main_window *widgets){ } } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,packages_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,packages_parameter,NULL); } return 1; } @@ -71,6 +63,9 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite } void yon_packages_tab_init(main_window *widgets){ + if (!main_config.configure_mode){ + yon_config_update_by_args(packages_parameter,NULL); + } if (!main_config.configure_mode){ yon_config_remove_by_args(packages_parameter,NULL); char *command = yon_config_parameter_prepare_command(packages_parameter_command,main_config.config_load_path,NULL,NULL); diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index b87d15c..a6080d3 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -19,15 +19,7 @@ int yon_region_save(main_window *widgets){ yon_config_register(zone_parameter,zone_parameter_command,final); free(final); if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,zone_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,zone_parameter,NULL); } return 1; } @@ -197,10 +189,9 @@ void on_region_entry_changed(GtkWidget *, main_window *widgets){ } void yon_region_init(main_window *widgets){ - yon_config_remove_by_args(zone_parameter,NULL); - char *command = yon_config_parameter_prepare_command(zone_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); - free(command); + if (!main_config.configure_mode){ + yon_config_update_by_args(zone_parameter,NULL); + } yon_timezone_init(); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->RegionCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardNumLockCombo)); diff --git a/source/ubinstall-gtk-separate.c b/source/ubinstall-gtk-separate.c index 4a8aeb4..809e43b 100644 --- a/source/ubinstall-gtk-separate.c +++ b/source/ubinstall-gtk-separate.c @@ -23,15 +23,7 @@ int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree,char * if(cur_section) free(cur_section); if(cur_device) free(cur_device); if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,device_parameter,AUTOINSTALL_TYPE_INSTALL,part_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,device_parameter,AUTOINSTALL_TYPE_INSTALL,part_parameter,NULL); } return 1; } \ No newline at end of file diff --git a/source/ubinstall-gtk-source.c b/source/ubinstall-gtk-source.c index 793e480..8e1791e 100644 --- a/source/ubinstall-gtk-source.c +++ b/source/ubinstall-gtk-source.c @@ -222,15 +222,7 @@ void on_source_accept(GtkWidget *,source_window *window){ yon_config_remove_by_key(source_parameter); } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,source_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(command)){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,source_parameter,NULL); } on_subwindow_close(window->Window); free(window); diff --git a/source/ubinstall-gtk-startup-apps.c b/source/ubinstall-gtk-startup-apps.c index 8efbd2b..a39af09 100644 --- a/source/ubinstall-gtk-startup-apps.c +++ b/source/ubinstall-gtk-startup-apps.c @@ -43,10 +43,7 @@ void on_startup_apps_remove(GtkWidget *self,main_window *widgets){ void yon_startup_apps_init(main_window *widgets){ if (!main_config.configure_mode){ - yon_config_remove_by_args(AUTOEXEC_parameter,NULL); - char *command = yon_config_parameter_prepare_command(AUTOEXEC_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); - free(command); + yon_config_update_by_args(AUTOEXEC_parameter,NULL); } GtkTreeIter iter; gtk_list_store_clear(widgets->StartupAppsList); @@ -219,15 +216,7 @@ int yon_startup_app_save(main_window *widgets){ yon_config_remove_by_key(AUTOEXEC_parameter); } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,AUTOEXEC_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,AUTOEXEC_parameter,NULL); } return 1; } \ No newline at end of file diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 3705d8a..b03bffb 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -51,10 +51,7 @@ void on_startup_services_remove(GtkWidget *self,main_window *widgets){ void yon_startup_services_init(main_window *widgets){ if (!main_config.configure_mode){ - yon_config_remove_by_args(SERVICES_ENABLE_parameter,NULL); - char *command = yon_config_parameter_prepare_command(SERVICES_ENABLE_parameter_command,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); - free(command); + yon_config_update_by_args(SERVICES_ENABLE_parameter,NULL); } GtkTreeIter iter; gtk_list_store_clear(widgets->StartupList); @@ -223,15 +220,7 @@ int yon_startup_save(main_window *widgets){ yon_config_remove_by_key(SERVICES_ENABLE_parameter); } if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,SERVICES_ENABLE_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } + yon_config_save_args_simple(main_config.config_load_path,SERVICES_ENABLE_parameter,NULL); } return 1; } \ No newline at end of file diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index 652fa64..4c302d4 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -34,22 +34,10 @@ int yon_users_save(main_window *widgets){ if (!main_config.configure_mode){ int users_size; - int param_size=0; config_str users = yon_config_get_all_keys_by_key(USERADD_parameter_search,&users_size); - config_str users_parameters = yon_config_get_save_parameters_by_list(¶m_size,users,users_size); - yon_char_parsed_free(users,users_size); - - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,autologin_parameter,root_password_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *parameter = yon_char_parsed_to_string(users_parameters,param_size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system remove [autoinstall] ",USERADD_parameter_all,"; ", ubconfig_dull_command,"--target system ",yon_char_return_if_exist(command_parameters,""), " ", parameter,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); - } - yon_char_parsed_free(users_parameters,param_size); + yon_char_parsed_add_or_create_if_exists(users,&users_size,root_password_parameter); + yon_char_parsed_add_or_create_if_exists(users,&users_size,autologin_parameter); + yon_config_save_list_simple(users,users_size,main_config.config_load_path); } return 1; } @@ -149,15 +137,9 @@ void yon_user_init(main_window *widgets){ if (!main_config.configure_mode){ int size = 0; config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&size); - yon_config_remove_by_list(users,(size_t)size); - yon_config_remove_by_args(autologin_parameter,root_password_parameter,NULL); - char *command1 = yon_config_parameter_prepare_command(autologin_parameter_command,main_config.config_load_path,NULL,NULL); - char *command2 = yon_config_parameter_prepare_command(root_password_parameter_command,main_config.config_load_path,NULL,NULL); - char *command3 = yon_config_parameter_prepare_command(USERADD_parameter_all,main_config.config_load_path,NULL,NULL); - yon_config_load_config(YON_CONFIG_CUSTOM,command1,command2,command3,NULL); - free(command1); - free(command2); - free(command3); + yon_config_remove_by_list(users,size); + yon_config_update_by_args(autologin_parameter,root_password_parameter,NULL); + yon_config_load_config(YON_CONFIG_CUSTOM,ubconfig_load_command(main_config.config_load_path),USERADD_parameter_all,NULL); } gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo)); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,DEFAULT_LABEL); -- 2.35.1 From d9052e0b2049fac373aeac32ceeac92e98d32fc3 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 15:24:07 +0600 Subject: [PATCH 19/24] Fixed uncheck all toggle button --- source/ubinstall-gtk-components.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 0771942..49757c9 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -311,7 +311,10 @@ void on_software_uncheck_all(GtkWidget *, main_window *widgets){ GList *iter; for(iter = list;iter;iter=iter->next){ os_row *row = g_object_get_data(iter->data,"kernel_row"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); + int sensitive = gtk_widget_get_sensitive(row->InstallCheck); + if (sensitive){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); + } } } break; } @@ -330,7 +333,7 @@ int yon_software_save(main_window *widgets){ } for(iter = list;iter;iter=iter->next){ os_row *row = g_object_get_data(iter->data,"kernel_row"); - char *target = row->name; + char *target = row->name; int status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck)); if (status){ if (!yon_char_check_element(config_val,target,",")){ @@ -368,7 +371,9 @@ int yon_software_check_packages_size(GtkWidget *, main_window *widgets){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ long cur_size = yon_packages_get_installed_size(YON_PACKAGES_ALL,row->name); pacman_size += cur_size; - gtk_widget_show(widgets->AdditionalComponentsUncheckAllCheck); + if (gtk_widget_get_sensitive(row->InstallCheck)){ + gtk_widget_show(widgets->AdditionalComponentsUncheckAllCheck); + } } } } @@ -421,8 +426,8 @@ gboolean yon_software_insert(struct row_data *row_input){ modules_param = yon_char_parsed_to_string(final,final_size,","); } if (yon_char_check_elements(modules_param,row_input->name,",")){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); gtk_widget_set_sensitive(row->InstallCheck,0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } if (!yon_char_is_empty(modules_param)) free(modules_param); return G_SOURCE_REMOVE; -- 2.35.1 From 6a632fd3b228645671d115f8d1c0e06f86c43c9b Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 15:44:20 +0600 Subject: [PATCH 20/24] Fixed pacman page description localisation --- source/ubinstall-gtk-components.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 49757c9..e7b0a4f 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -612,7 +612,7 @@ gboolean yon_pacman_fill(struct pacman_struct *pacman){ double size_converted = yon_size_long_convert_automatic(pkgsize,&mod); char *size_str = yon_char_unite(yon_char_from_double(size_converted)," ", yon_size_get_name_from_letter(mod),NULL); gtk_list_store_append(widgets->PacmanSoftwareAllList,&iter); - gtk_list_store_set(widgets->PacmanSoftwareAllList,&iter,0,0,1,loaded[i],2,version,3,description,4,size_str,-1); + gtk_list_store_set(widgets->PacmanSoftwareAllList,&iter,0,0,1,loaded[i],2,version,3,_(description),4,size_str,-1); if (!yon_char_is_empty(version))free(version); if (!yon_char_is_empty(description)) free(description); } -- 2.35.1 From e4246b5ea5d23569eb6b0e037b2f09f306ce3754 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 16:03:03 +0600 Subject: [PATCH 21/24] Fixed pacman page search entry; Fixed pacman page search entry focus --- source/ubinstall-gtk-components.c | 2 ++ ubinstall-gtk.glade | 1 + 2 files changed, 3 insertions(+) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index e7b0a4f..d12c37f 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -636,6 +636,8 @@ void *yon_pacman_load(struct pacman_struct *pacman){ void on_pacman_search_enter(GtkEntry *self, main_window *widgets){ on_pacman_icon_press(self,GTK_ENTRY_ICON_SECONDARY,NULL,widgets); + while (gtk_events_pending()) gtk_main_iteration(); + gtk_widget_grab_focus(widgets->PacmanSoftwareSearchEntry); } void on_pacman_icon_press(GtkEntry *self,GtkEntryIconPosition icon_pos,GdkEvent* ,main_window *widgets){ diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index ea93f12..73efc41 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -3524,6 +3524,7 @@ Select a different installation source. True True False + com.ublinux.libublsettingsui-gtk3.zoom-symbolic Search -- 2.35.1 From 13c5b0db4d552ae5210191aaf8dfeafa638e387d Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 16:21:28 +0600 Subject: [PATCH 22/24] Pacman page description wrapping --- ubinstall-gtk.glade | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 73efc41..c1efcf0 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -3613,6 +3613,7 @@ Select a different installation source. True PacmanSoftwareAllList 0 + both none @@ -3665,7 +3666,10 @@ Select a different installation source. Description - + + word-char + 250 + 3 @@ -3729,6 +3733,7 @@ Select a different installation source. True PacmanSoftwareChosenList 0 + both none @@ -3781,7 +3786,10 @@ Select a different installation source. Description - + + word-char + 250 + 3 -- 2.35.1 From dc4d3efbde70905c9909919e917f05944b0d3365 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 16:27:30 +0600 Subject: [PATCH 23/24] GRUB install page description fix --- ubinstall-gtk.glade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index c1efcf0..0af1011 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -11342,7 +11342,7 @@ separately into the selected partition. True False - Install the GRUB bootloader + Installing the GRUB bootloader into the MBR or EFI partition True 0 -- 2.35.1 From df96e2540e69de7fbe8d67d04b1efabb9c3c8d4f Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 20 Mar 2026 17:44:20 +0600 Subject: [PATCH 24/24] Pacman page minimal search length --- source/ubinstall-gtk-components.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index d12c37f..e72f67a 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -646,6 +646,7 @@ void on_pacman_icon_press(GtkEntry *self,GtkEntryIconPosition icon_pos,GdkEvent* gtk_list_store_clear(widgets->PacmanSoftwareAllList); const char *find_package = gtk_entry_get_text(self); + if (strlen(find_package)<2) return; struct pacman_struct *pacman = new (struct pacman_struct); pacman->widgets=widgets; pacman->find_package=find_package; -- 2.35.1