From 9a040065cf404f382781e7856f11b82a97dad051 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 8 Aug 2025 18:15:14 +0600 Subject: [PATCH 1/6] WIP loading --- source/ubinstall-gtk-components.c | 2 +- source/ubinstall-gtk-keyboard.c | 39 ++------------- source/ubinstall-gtk-region.c | 10 ++-- source/ubinstall-gtk-saving.c | 4 +- source/ubinstall-gtk-startup-services.c | 66 +++++++++++++++++++++---- source/ubinstall-gtk-users.c | 5 +- source/ubinstall-gtk.c | 13 ++--- source/ubinstall-gtk.h | 22 ++------- ubinstall-gtk-os-row.glade | 3 +- ubinstall-gtk.glade | 19 ++----- 10 files changed, 85 insertions(+), 98 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 8191083..f35182a 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -160,7 +160,7 @@ void yon_os_components_init(main_window *widgets){ if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); } } yon_char_parsed_free(parsed,parsed_size); diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 277a395..ad5d5e3 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -1,42 +1,14 @@ #include "ubinstall-gtk.h" -void on_layout_toggle_button_switch(GtkWidget *self, main_window *widgets){ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self))){ - gtk_widget_set_sensitive(widgets->DefaultLayoutRadio,1); - gtk_widget_set_sensitive(widgets->ManualLayoutRadio,1); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->ManualLayoutRadio))){ - gtk_widget_set_sensitive(widgets->LayoutTree,1); - gtk_widget_set_sensitive(widgets->AddButton,1); - gtk_widget_set_sensitive(widgets->RemoveButton,1); - } else { - gtk_widget_set_sensitive(widgets->LayoutTree,0); - gtk_widget_set_sensitive(widgets->AddButton,0); - gtk_widget_set_sensitive(widgets->RemoveButton,0); - } - } else { - gtk_widget_set_sensitive(widgets->DefaultLayoutRadio,0); - gtk_widget_set_sensitive(widgets->ManualLayoutRadio,0); - gtk_widget_set_sensitive(widgets->LayoutTree,0); - gtk_widget_set_sensitive(widgets->AddButton,0); - gtk_widget_set_sensitive(widgets->RemoveButton,0); - - } -} - int yon_keyboard_save(main_window *widgets){ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->ManualLayoutRadio))){ GtkTreeIter iter; if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutList),&iter)){ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LAYOUTS_CHOSEN_BUT_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->ManualLayoutRadio); yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->LayoutTree)); return 0; } - } char *layouts_list=""; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->ManualLayoutRadio))&>k_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LayoutSensitiveCheck))){ GtkTreeModel *layouts_model=GTK_TREE_MODEL(widgets->LayoutList); - GtkTreeIter iter; char *cur_layout=NULL; for_iter(layouts_model,&iter){ int chosen=0; @@ -44,14 +16,13 @@ int yon_keyboard_save(main_window *widgets){ if (chosen) layouts_list = yon_char_unite(layouts_list,yon_char_is_empty(layouts_list)?"":",",cur_layout,NULL); } - } - if (yon_char_is_empty(layouts_list)&>k_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LayoutSensitiveCheck))) + if (yon_char_is_empty(layouts_list)) yon_config_register(xkblayout_parameter,xkblayout_parameter_command,layouts_list); else yon_config_remove_by_key(xkblayout_parameter); - if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo))&>k_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->KeyboardModelSensitiveCheck))){ + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo))){ char *model = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo)); if (!yon_char_is_empty(model)) yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,model); @@ -59,7 +30,7 @@ int yon_keyboard_save(main_window *widgets){ yon_config_remove_by_key(xkbmodel_parameter); } - if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LayoutBindingCombo))&>k_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->OptionsSensitiveCheck))){ + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LayoutBindingCombo))){ char *options = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LayoutBindingCombo)); if (options){}; yon_config_register(xkboptions_parameter,xkboptions_parameter_command,options); @@ -311,8 +282,6 @@ void yon_keyboard_init(main_window *widgets){ } if (!yon_char_is_empty(layouts)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LayoutSensitiveCheck),1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->ManualLayoutRadio),1); int parsed_size; config_str parsed = yon_char_parse(layouts,&parsed_size,","); @@ -329,7 +298,5 @@ void yon_keyboard_init(main_window *widgets){ } } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LayoutSensitiveCheck),0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->DefaultLayoutRadio),1); } } \ No newline at end of file diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 2d7dd90..a59aff6 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -24,19 +24,19 @@ int yon_region_save(main_window *widgets){ gtk_tree_model_get(model,&iter,2,&lang_code,-1); languages = yon_char_unite(languages,!yon_char_is_empty(languages)?",":"",lang_code,NULL); } - if (yon_char_is_empty(languages)||!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->MainLanguageSensitiveCheck))){ + if (yon_char_is_empty(languages)){ yon_config_remove_by_key(locale_parameter); } else { yon_config_register(locale_parameter,locale_parameter_command,languages); free(languages); } - if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1||!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck))){ + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1){ yon_config_remove_by_key(lang_parameter); } else { char *language = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo)); yon_config_register(lang_parameter,lang_parameter_command,language); } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveCheck))){ + if (gtk_switch_get_active(GTK_SWITCH(widgets->RegionSensitiveSwitch))){ char *region = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); char *zone = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); yon_debug_output("%s",region); @@ -113,12 +113,12 @@ void yon_region_init(main_window *widgets){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone); while(gtk_events_pending()) gtk_main_iteration(); gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveCheck),1); + gtk_switch_set_active(GTK_SWITCH(widgets->RegionSensitiveSwitch),1); free(timezone); } else { gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->RegionCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveCheck),0); + gtk_switch_set_active(GTK_SWITCH(widgets->RegionSensitiveSwitch),0); } if (!yon_char_is_empty(locale)){ diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index ae7e979..f86481f 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -326,12 +326,12 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ // char *zone = config(zone_parameter); // char *region = NULL; // -// if (!yon_char_is_empty(zone)) region = yon_char_divide_search(zone,"/",-1); else {gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveCheck),0);} +// if (!yon_char_is_empty(zone)) region = yon_char_divide_search(zone,"/",-1); else {gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveSwitch),0);} // if (!yon_char_is_empty(region)){ // gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),region); // } else { // gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),"Europe"); -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveCheck),0); +// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RegionSensitiveSwitch),0); // } // if (!yon_char_is_empty(zone)){ // gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone); diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index aaa0fbd..411a235 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -43,15 +43,63 @@ void on_startup_services_remove(GtkWidget *self,main_window *widgets){ } void yon_startup_services_setup(main_window *widgets){ - int size; - config_str services = yon_resource_open_file(services_list_path,&size); - for (int i=1;iStartupList,&iter); - gtk_list_store_set(widgets->StartupList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(parsed[2],""),-1); + GtkTreeIter iter; + if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->StartupList),&iter)){ + int size; + config_str services = yon_resource_open_file(services_list_path,&size); + for (int i=1;iStartupList,&iter); + gtk_list_store_set(widgets->StartupList,&iter,0,1,1,parsed[0],2,yon_char_return_if_exist(parsed[1],""),3,yon_char_return_if_exist(parsed[2],""),-1); + } + } + } + char *startup = config(SERVICES_ENABLE_parameter); + if (!yon_char_is_empty(startup)){ + if (!strcmp(startup,"auto")){ + for_iter(GTK_TREE_MODEL(widgets->StartupList),&iter){ + gtk_list_store_set(widgets->StartupList,&iter,0,1,-1); + } + } else { + int parsed_size; + config_str parsed = yon_char_parse(startup,&parsed_size,","); + for_iter(GTK_TREE_MODEL(widgets->StartupList),&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupList),&iter,2,&target,-1); + if (strstr(target,",")){ + int target_size; + config_str target_parsed = yon_char_parse(target,&target_size,","); + int found =0; + for (int i=0;i-1){ + found++; + parsed = yon_char_parsed_rip(parsed,&parsed_size,pos); + } + } + if (found == target_size){ + gtk_list_store_set(widgets->StartupList,&iter,0,1,-1); + } + yon_char_parsed_free(target_parsed,target_size); + } else { + int pos = yon_char_parsed_check_exist(parsed,parsed_size,target); + if (pos>-1){ + gtk_list_store_set(widgets->StartupList,&iter,0,1,-1); + parsed = yon_char_parsed_rip(parsed,&parsed_size,pos); + } else { + gtk_list_store_set(widgets->StartupList,&iter,0,0,-1); + } + } + } + if (parsed_size&&parsed){ + for (int i=0;iStartupList,&iter); + gtk_list_store_set(widgets->StartupList,&iter,0,1,2,parsed[i],-1); + } + } + yon_char_parsed_free(parsed,parsed_size); } } } diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index d49303c..e399ded 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -143,12 +143,13 @@ void yon_user_init(main_window *widgets){ char *parameter = yon_char_new(users[i]); char *parameter_name = yon_char_divide_search(parameter,"=",-1); char *key = yon_config_parameter_get_key(parameter_name); + char *login = yon_config_parameter_get_key(strstr(key,"USERADD[")); config_str parsed = yon_char_parse(parameter,&parsed_size,":"); - gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),key); + gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),login); if (parsed_size>0) gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),parsed[0]); - if (parsed_size>5){ + if (parsed_size>5&&!yon_char_is_empty(parsed[5])){ gtk_entry_set_text(GTK_ENTRY(user->PasswordEntry),parsed[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(user->PasswordCombo),1); } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 16e4812..bfc112c 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -423,17 +423,10 @@ main_window *yon_main_window_complete(){ widgets->LanguagesCombo=yon_gtk_builder_get_widget(builder,"LanguagesCombo"); widgets->KeyboardModelCombo=yon_gtk_builder_get_widget(builder,"KeyboardModelCombo"); widgets->LayoutBindingCombo=yon_gtk_builder_get_widget(builder,"LayoutBindingCombo"); - widgets->DefaultLayoutRadio=yon_gtk_builder_get_widget(builder,"DefaultLayoutRadio"); - widgets->ManualLayoutRadio=yon_gtk_builder_get_widget(builder,"ManualLayoutRadio"); widgets->LayoutTree=yon_gtk_builder_get_widget(builder,"LayoutTree"); widgets->AddButton=yon_gtk_builder_get_widget(builder,"AddButton"); widgets->RemoveButton=yon_gtk_builder_get_widget(builder,"RemoveButton"); - widgets->RegionSensitiveCheck = yon_gtk_builder_get_widget(builder,"RegionSensitiveCheck"); - widgets->LanguagesSensitiveCheck = yon_gtk_builder_get_widget(builder,"LanguagesSensitiveCheck"); - widgets->MainLanguageSensitiveCheck = yon_gtk_builder_get_widget(builder,"MainLanguageSensitiveCheck"); - widgets->KeyboardModelSensitiveCheck = yon_gtk_builder_get_widget(builder,"KeyboardModelSensitiveCheck"); - widgets->OptionsSensitiveCheck = yon_gtk_builder_get_widget(builder,"OptionsSensitiveCheck"); - widgets->LayoutSensitiveCheck = yon_gtk_builder_get_widget(builder,"LayoutSensitiveCheck"); + widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch"); widgets->UserRootNameEntry=yon_gtk_builder_get_widget(builder,"UserRootNameEntry"); widgets->UserRootLoginEntry=yon_gtk_builder_get_widget(builder,"UserRootLoginEntry"); @@ -561,7 +554,8 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets); g_signal_connect(G_OBJECT(widgets->AvailableLanguagesButton),"clicked",G_CALLBACK(on_language_clicked),widgets); g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); - g_signal_connect(G_OBJECT(widgets->LayoutSensitiveCheck),"toggled",G_CALLBACK(on_layout_toggle_button_switch),widgets); + g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); + g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo); g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_keyboard_clicked),widgets); g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_keyboard_removed),widgets); @@ -596,7 +590,6 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->StartupServicesEditButton),"clicked",G_CALLBACK(on_startup_service_edit),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesRemoveButton),"clicked",G_CALLBACK(on_startup_services_remove),widgets); - g_signal_connect(G_OBJECT(widgets->ManualLayoutRadio),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),gtk_widget_get_parent(gtk_widget_get_parent(widgets->AddButton))); g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 25ee006..4a54db1 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -193,7 +193,7 @@ layout && /description:/ {\ #define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN[admanger]']" #define USERADD_parameter_all "AUTOINSTALL[ubconfig set [users] USERADD[*]]" #define USERADD_parameter_search "AUTOINSTALL[ubconfig set [users] USERADD[" -#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD[",target,"]']",NULL) +#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD[",target,"]]",NULL) #define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[",target,"]']",NULL) #define KERNEL_BOOT_parameter "AUTOINSTALL[ubconfig set [boot] KERNEL_BOOT]" #define KERNEL_BOOT_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [boot] KERNEL_BOOT']" @@ -213,8 +213,8 @@ layout && /description:/ {\ #define AUTOLOGINUSER_parameter "AUTOINSTALL[ubconfig set [desktop] AUTOLOGINUSER]" #define AUTOLOGINUSER_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] AUTOLOGINUSER']" #define NETWORK_parameter_search "AUTOINSTALL[ubconfig set [network] NETWORK[" -#define NETWORK_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [network] NETWORK[",target,"@connmod]']",NULL) -#define NETWORK_devdown_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [network] NETWORK[",target,"@devdown]']",NULL) +#define NETWORK_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [network] NETWORK[",target,"@connmod]]",NULL) +#define NETWORK_devdown_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [network] NETWORK[",target,"@devdown]]",NULL) #define NETWORK_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[",target,"@connmod]']",NULL) #define NETWORK_devdown_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[",target,"@devdown]']",NULL) #define NETWORK(target) yon_char_unite("NETWORK[",target,"@connmod]",NULL) @@ -388,9 +388,7 @@ extern config main_config; typedef struct { GtkWidget *CommonInstallationDevicesTree; GtkWidget *GpartedCommonButton; - GtkWidget *CommonFilesystemSensitiveCheck; GtkWidget *CommonInstallationFilesystemTypeCombo; - GtkWidget *CommonSectionSensitiveCheck; GtkWidget *CommonInstallationSectionNameEntry; GtkListStore *DevicesList; } install_common_page; @@ -439,8 +437,6 @@ typedef struct { GtkWidget *LanguagesCombo; GtkWidget *KeyboardModelCombo; GtkWidget *LayoutBindingCombo; - GtkWidget *DefaultLayoutRadio; - GtkWidget *ManualLayoutRadio; GtkWidget *LayoutTree; GtkWidget *AddButton; GtkWidget *RemoveButton; @@ -565,16 +561,7 @@ typedef struct { GList *slides_original; float region_height_mult; - GtkWidget *RegionSensitiveCheck; - GtkWidget *LanguagesSensitiveCheck; - GtkWidget *MainLanguageSensitiveCheck; - GtkWidget *KeyboardModelSensitiveCheck; - GtkWidget *OptionsSensitiveCheck; - GtkWidget *LayoutSensitiveCheck; - GtkWidget *UsernameSensitiveCheck; - GtkWidget *LoginSensitiveCheck; - GtkWidget *UserRootOnlyCheck; - GtkWidget *AutologinSensitiveCheck; + GtkWidget *RegionSensitiveSwitch; GtkWidget *HostnameSensitiveSwitch; GtkWidget *KernelListBox; @@ -953,7 +940,6 @@ void on_page_next_clicked(GtkWidget *, main_window *widgets); void on_page_prev_clicked(GtkWidget *, main_window *widgets); void yon_load_proceed(YON_CONFIG_TYPE type); void _yon_saving_threaded(char *final_command); -void on_layout_toggle_button_switch(GtkWidget *self, main_window *widgets); 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_sections_get_next_page(main_window *widgets); diff --git a/ubinstall-gtk-os-row.glade b/ubinstall-gtk-os-row.glade index 6bde8c2..b9ff25b 100644 --- a/ubinstall-gtk-os-row.glade +++ b/ubinstall-gtk-os-row.glade @@ -1,5 +1,5 @@ - + @@ -12,6 +12,7 @@ True True False + True True diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 3d461df..43d5ad2 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -1,5 +1,5 @@ - + @@ -2532,7 +2532,7 @@ and help you install UBLinux on your computer 10 5 - + True True @@ -2666,10 +2666,8 @@ and help you install UBLinux on your computer True - False False English, U.S.A.; Russian, Russia - True @@ -2680,7 +2678,6 @@ and help you install UBLinux on your computer True - False True True image6 @@ -2721,11 +2718,9 @@ and help you install UBLinux on your computer True - False True LanguagesFilter 2 - @@ -2841,13 +2836,11 @@ and help you install UBLinux on your computer True - False True 0 Default (Regular 105-key) - True @@ -2882,7 +2875,6 @@ and help you install UBLinux on your computer True - False True 0 @@ -2912,7 +2904,6 @@ and help you install UBLinux on your computer Scroll Lock Left Ctrl+Left Win - True @@ -2948,10 +2939,12 @@ and help you install UBLinux on your computer True - False True LayoutsFilter 0 + + + column @@ -3005,7 +2998,6 @@ and help you install UBLinux on your computer True - False True True Add layouts @@ -3023,7 +3015,6 @@ and help you install UBLinux on your computer True - False True True Remove layout From cd0dc1ea9ecf23385a16b3ddf1df9d2e96fb7590 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 8 Aug 2025 18:23:50 +0600 Subject: [PATCH 2/6] Fixed added startup services were not chosen --- source/ubinstall-gtk-startup-services.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 411a235..2355619 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -116,7 +116,7 @@ void on_startup_add_accept(GtkWidget *self, main_window *widgets){ } GtkTreeIter iter; gtk_list_store_append(widgets->StartupList,&iter); - gtk_list_store_set(widgets->StartupList,&iter,1,unit,2,service,3,description,4,1,-1); + gtk_list_store_set(widgets->StartupList,&iter,0,1,1,unit,2,service,3,description,4,1,-1); on_subwindow_close(self); } @@ -133,7 +133,7 @@ void on_startup_edit_accept(GtkWidget *self, main_window *widgets){ yon_ubl_status_highlight_incorrect(window->ServiceEntry); return; } - gtk_list_store_set(widgets->StartupList,&iter,1,unit,2,service,3,description,4,1,-1); + gtk_list_store_set(widgets->StartupList,&iter,0,1,1,unit,2,service,3,description,4,1,-1); } on_subwindow_close(self); } From 68822fec17810bc906d56b2eb46ad37f36c6f582 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 18 Aug 2025 17:25:44 +0600 Subject: [PATCH 3/6] Installation saving fix --- source/ubinstall-gtk-keyboard.c | 50 +++++++++++++++++++++++++++++++-- source/ubinstall-gtk-network.c | 1 + source/ubinstall-gtk-saving.c | 30 ++++++++++++++++---- source/ubinstall-gtk.c | 2 ++ source/ubinstall-gtk.h | 7 +++-- ubinstall-gtk-keyboard.glade | 5 +++- ubinstall-gtk.glade | 9 +++--- 7 files changed, 88 insertions(+), 16 deletions(-) diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index ad5d5e3..bbf67fe 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -1,7 +1,7 @@ #include "ubinstall-gtk.h" int yon_keyboard_save(main_window *widgets){ - GtkTreeIter iter; + GtkTreeIter iter,iter_child; if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutList),&iter)){ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LAYOUTS_CHOSEN_BUT_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->LayoutTree)); @@ -12,9 +12,23 @@ int yon_keyboard_save(main_window *widgets){ char *cur_layout=NULL; for_iter(layouts_model,&iter){ int chosen=0; - gtk_tree_model_get(layouts_model,&iter,0,&cur_layout,3,&chosen,-1); + int primary=0; + gtk_tree_model_get(layouts_model,&iter,0,&cur_layout,3,&chosen,4,&primary,-1); if (chosen) layouts_list = yon_char_unite(layouts_list,yon_char_is_empty(layouts_list)?"":",",cur_layout,NULL); + if (primary){ + yon_config_register(xkbvariant_parameter,xkbvariant_parameter_command,cur_layout); + } + if (gtk_tree_model_iter_children(layouts_model,&iter_child,&iter)){ + for(int valid2=1;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LayoutList),&iter_child)){ + gtk_tree_model_get(layouts_model,&iter_child,0,&cur_layout,3,&chosen,4,&primary,-1); + if (chosen) + layouts_list = yon_char_unite(layouts_list,yon_char_is_empty(layouts_list)?"":",",cur_layout,NULL); + if (primary){ + yon_config_register(xkbvariant_parameter,xkbvariant_parameter_command,cur_layout); + } + } + } } if (yon_char_is_empty(layouts_list)) @@ -211,6 +225,7 @@ void on_keyboard_clicked (GtkWidget *, main_window *widgets){ ubinstall_keyboard_window *window = yon_ubinstall_keyboard_new(); yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->MainWindow),KEYBOARD_TITLE_LABEL,icon_path,"keyboard-window"); gtk_tree_view_set_model(GTK_TREE_VIEW(window->LayoutsTree),GTK_TREE_MODEL(widgets->LayoutList)); + gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(window->LayoutsTree),1)); g_signal_connect(G_OBJECT(window->ActiveToggle),"toggled",G_CALLBACK(on_layout_toggle),window); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_keyboard_accept),widgets); @@ -228,7 +243,7 @@ void yon_layout_build(char *key, GHashTable *value, main_window *widgets){ for (iterator=list;iterator;iterator=iterator->next){ if (!yon_char_is_empty((char*)iterator->data)){ gtk_tree_store_append(widgets->LayoutList,&iter,&parent); - gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,-1); + gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,4,1,-1); } } } @@ -299,4 +314,33 @@ void yon_keyboard_init(main_window *widgets){ } else { } +} + +void on_keyboard_layout_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){ + GtkTreeIter iter, itar, itor, itur; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->LayoutsFilter),&iter,path); + int status; + char *target; + gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),&itur,&iter); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutList),&itur,4,&status,1,&target,-1); + // g_signal_handlers_block_by_func(self,G_CALLBACK(on_keyboard_layout_chosen),widgets); + for_iter(GTK_TREE_MODEL(widgets->LayoutsFilter),&itar){ + gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),&itor,&itar); + // gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(widgets->LayoutList),&itar,&itor); + gtk_tree_store_set(widgets->LayoutList,&itor,4,0,-1); + GtkTreeIter itor_child; + if (gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->LayoutList),&itor_child,&itor)){ + for(int valid2=1;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LayoutList),&itor_child)){ + gtk_tree_store_set(widgets->LayoutList,&itor_child,4,0,-1); + } + } + + } + gtk_tree_store_set(widgets->LayoutList,&itur,4,!status,-1); + // g_signal_handlers_unblock_by_func(self,G_CALLBACK(on_keyboard_layout_chosen),widgets); + if (!status){ + yon_config_register(xkbvariant_parameter,xkbvariant_parameter_command,target); + } else { + yon_config_remove_by_key(xkbvariant_parameter); + } } \ No newline at end of file diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 24a0e8b..5bf7785 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -174,6 +174,7 @@ int yon_network_save(main_window *widgets){ yon_ubl_status_highlight_incorrect(widgets->NetworkDomainPasswordEntry); return 0; } + yon_char_remove_last_symbol(encrypted_password[0],'\n'); char *admin_string_full = yon_char_unite(domain_admin,":",encrypted_password[0],NULL); yon_config_register(DOMAIN_admanger_parameter,DOMAIN_parameter_command,admin_string_full); } else { diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index f86481f..553573d 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -520,16 +520,16 @@ void *on_config_save(void *data){ enum INSTALL_TYPE install_mode = yon_ubl_get_install_mode(); switch(install_mode){ case INSTALL_COMMON: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_common_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_common_parameters,modules_parameter,NULL); break; case INSTALL_PART: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_part_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_part_parameters,modules_parameter,NULL); break; case INSTALL_NEXT: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_next_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_next_parameters,modules_parameter,NULL); break; case INSTALL_ADVANCED: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_advanced_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_advanced_parameters,modules_parameter,NULL); break; case INSTALL_GRUB_INSTALL: case INSTALL_GRUB_UPDATE: @@ -603,7 +603,6 @@ void *on_setup_system_configuration(void * data){ NTPSERVERS_parameter, modules_extra_parameter, KERNEL_BOOT_parameter, - modules_parameter, packages_parameter, NULL); int user_size=0; @@ -637,6 +636,27 @@ void *on_setup_system_configuration(void * data){ } if (all_parameters){ + for (int i=0;iRegionAspect = yon_gtk_builder_get_widget(builder,"RegionAspect"); widgets->KeyboardImage = yon_gtk_builder_get_widget(builder,"KeyboardImage"); widgets->KeyboardBox = yon_gtk_builder_get_widget(builder,"KeyboardBox"); + widgets->KeyboardLayoutChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"KeyboardLayoutChosenCell")); widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList")); widgets->AdditionalSoftwareTree = yon_gtk_builder_get_widget(builder,"AdditionalSoftwareTree"); @@ -622,6 +623,7 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_install_advanced_add_new),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutChosenCell),"toggled",G_CALLBACK(on_keyboard_layout_chosen),widgets); // g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"add",G_CALLBACK(on_advanced_parts_added),widgets); // g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"remove",G_CALLBACK(on_advanced_parts_removed),widgets); g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 4a54db1..c13c51d 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -119,6 +119,7 @@ layout && /description:/ {\ #define get_devices_command "lsblk --noheadings --nodeps -Jo PATH,SIZE,MODEL,VENDOR,SERIAL --exclude 7,253" #define get_parts_and_devices_command "lsblk --noheadings --bytes -o TYPE,PATH,SIZE,FSTYPE,LABEL,PARTLABEL,MOUNTPOINT,FSUSED,FSUSE% --exclude 7,253 |awk '{print ($1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8\";\"$9)}'" +#define AUTOINSTALL(target) yon_char_unite("AUTOINSTALL[",target,"]",NULL) #define AUTOINSTALL_TYPE_INSTALL "AUTOINSTALL[install_type]" #define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get [autoinstall] AUTOINSTALL[install_type]" @@ -185,7 +186,7 @@ layout && /description:/ {\ #define packages_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[packages]" #define device_typevfs_parameter "AUTOINSTALL[device_typevfs]" #define device_typevfs_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_typevfs]" -#define NTPSERVERS_parameter "AOUTINSTALL['ubconfig set [network] NTPSERVERS]" +#define NTPSERVERS_parameter "AOUTINSTALL[ubconfig set [network] NTPSERVERS]" #define NTPSERVERS_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] NTPSERVERS']" #define DOMAIN_parameter "AOUTINSTALL['ubconfig set [network] DOMAIN]" #define DOMAIN_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN']" @@ -470,6 +471,7 @@ typedef struct { GtkWidget *RegionAspect; GtkWidget *KeyboardImage; GtkWidget *KeyboardBox; + GtkCellRenderer *KeyboardLayoutChosenCell; GtkWidget *Notebook; GtkWidget *LicenceLabel; @@ -1049,4 +1051,5 @@ void yon_advanced_partition_clear(main_window *widgets); void yon_layout_build(char *key, GHashTable *value, main_window *widgets); void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description); os_row *yon_os_row_new(); -void yon_quick_install(GtkWidget *, main_window *widgets); \ No newline at end of file +void yon_quick_install(GtkWidget *, main_window *widgets); +void on_keyboard_layout_chosen(GtkCellRenderer *self, gchar *path, main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk-keyboard.glade b/ubinstall-gtk-keyboard.glade index baebf96..2a1cdae 100644 --- a/ubinstall-gtk-keyboard.glade +++ b/ubinstall-gtk-keyboard.glade @@ -1,5 +1,5 @@ - + @@ -52,6 +52,7 @@ True True treeviewcolumn1 + 0 @@ -70,6 +71,8 @@ Id + True + 0 diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 43d5ad2..392fe86 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -97,6 +97,8 @@ + + @@ -2947,13 +2949,10 @@ and help you install UBLinux on your computer - column - - True - + - 3 + 4 From 5e90756d5c96126af4e8623510b3ab5c9ddd798c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 18 Aug 2025 18:03:37 +0600 Subject: [PATCH 4/6] Saving fixes --- source/ubinstall-gtk-page-switch.c | 2 +- source/ubinstall-gtk.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 59b5444..8b4635e 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -350,7 +350,7 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ default: break; } } - + void on_page_next_clicked(GtkWidget *, main_window *widgets){ enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); page = yon_page_get_next(widgets,page); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index c13c51d..b4debc9 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -188,9 +188,9 @@ layout && /description:/ {\ #define device_typevfs_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_typevfs]" #define NTPSERVERS_parameter "AOUTINSTALL[ubconfig set [network] NTPSERVERS]" #define NTPSERVERS_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] NTPSERVERS']" -#define DOMAIN_parameter "AOUTINSTALL['ubconfig set [network] DOMAIN]" +#define DOMAIN_parameter "AOUTINSTALL[ubconfig set [network] DOMAIN]" #define DOMAIN_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN']" -#define DOMAIN_admanger_parameter "AOUTINSTALL['ubconfig set [network] DOMAIN[admanger]]" +#define DOMAIN_admanger_parameter "AOUTINSTALL[ubconfig set [network] DOMAIN[admanger]]" #define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN[admanger]']" #define USERADD_parameter_all "AUTOINSTALL[ubconfig set [users] USERADD[*]]" #define USERADD_parameter_search "AUTOINSTALL[ubconfig set [users] USERADD[" From 3c2696a1e7be08e58ece1661a4dec5b0a8e76198 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 19 Aug 2025 18:00:36 +0600 Subject: [PATCH 5/6] Keyboard table loading --- source/ubinstall-gtk-keyboard.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index bbf67fe..bd9d25c 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -31,7 +31,7 @@ int yon_keyboard_save(main_window *widgets){ } } - if (yon_char_is_empty(layouts_list)) + if (!yon_char_is_empty(layouts_list)) yon_config_register(xkblayout_parameter,xkblayout_parameter_command,layouts_list); else yon_config_remove_by_key(xkblayout_parameter); @@ -283,6 +283,7 @@ void yon_keyboard_init(main_window *widgets){ char *keyboard = config(xkbmodel_parameter); char *option_parameter = config(xkboptions_parameter); char *layouts = config(xkblayout_parameter); + char *variant = config(xkbvariant_parameter); if (!yon_char_is_empty(keyboard)){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo),keyboard); @@ -300,15 +301,24 @@ void yon_keyboard_init(main_window *widgets){ int parsed_size; config_str parsed = yon_char_parse(layouts,&parsed_size,","); - GtkTreeIter iter; + GtkTreeIter iter, chiter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutList); for_iter(model,&iter){ char *target; gtk_tree_model_get(model,&iter,0,&target,-1); if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ gtk_tree_store_set(widgets->LayoutList,&iter,2,1,3,1,-1); + if (!strcmp(variant,target)){ + gtk_tree_store_set(widgets->LayoutList,&iter,4,1,-1); + } else { + gtk_tree_store_set(widgets->LayoutList,&iter,4,0,-1); + + } } else { - gtk_tree_store_set(widgets->LayoutList,&iter,3,0,-1); + gtk_tree_store_set(widgets->LayoutList,&iter,3,0,4,0,-1); + } + for (int valid2 = gtk_tree_model_iter_children(model,&chiter,&iter);valid2;valid2 = gtk_tree_model_iter_next(model,&chiter)){ + } } } else { From 1c65cfca7812ffaba7a613f4e450f7320036f023 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 20 Aug 2025 18:12:44 +0600 Subject: [PATCH 6/6] Loading fixes --- source/ubinstall-gtk-components.c | 4 +- source/ubinstall-gtk-keyboard.c | 16 +++- source/ubinstall-gtk-network.c | 110 ++++++++++++++++++++---- source/ubinstall-gtk-page-switch.c | 2 +- source/ubinstall-gtk-saving.c | 34 ++++---- source/ubinstall-gtk-startup-services.c | 4 +- source/ubinstall-gtk.h | 6 +- 7 files changed, 131 insertions(+), 45 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index f35182a..3731c0b 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -31,6 +31,7 @@ int yon_kernel_save(main_window *widgets){ } int yon_kernel_addon_save(main_window *widgets){ + yon_kernel_save(widgets); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox)); char *install_modules = ""; for(GList *iter = list;iter;iter = iter->next){ @@ -44,7 +45,7 @@ int yon_kernel_addon_save(main_window *widgets){ if (!yon_char_is_empty(install_modules)){ char *parameter = config(modules_extra_parameter); - char *parameter_new = yon_char_unite(!yon_char_is_empty(parameter)?parameter:"",!yon_char_is_empty(parameter)?",":"",install_modules,NULL); + char *parameter_new = yon_char_unite(!yon_char_is_empty(parameter)?parameter:"",!yon_char_is_empty(parameter)?" ":"",install_modules,NULL); yon_config_register(modules_extra_parameter,modules_extra_parameter_command,parameter_new); free(parameter_new); } @@ -246,6 +247,7 @@ int yon_pacman_software_save(main_window *widgets){ } void yon_pacman_init(main_window *widgets){ + gtk_list_store_clear(widgets->PacmanSoftwareChosenList); char *pacman_packages = config(packages_parameter); int size; diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index bd9d25c..da83e14 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -243,7 +243,7 @@ void yon_layout_build(char *key, GHashTable *value, main_window *widgets){ for (iterator=list;iterator;iterator=iterator->next){ if (!yon_char_is_empty((char*)iterator->data)){ gtk_tree_store_append(widgets->LayoutList,&iter,&parent); - gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,4,1,-1); + gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,4,0,-1); } } } @@ -314,12 +314,22 @@ void yon_keyboard_init(main_window *widgets){ gtk_tree_store_set(widgets->LayoutList,&iter,4,0,-1); } + for (int valid2 = gtk_tree_model_iter_children(model,&chiter,&iter);valid2;valid2 = gtk_tree_model_iter_next(model,&chiter)){ + gtk_tree_model_get(model,&chiter,0,&target,-1); + if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ + gtk_tree_store_set(widgets->LayoutList,&chiter,2,1,3,1,-1); + if (!strcmp(variant,target)){ + gtk_tree_store_set(widgets->LayoutList,&chiter,4,1,-1); + + } + } else { + gtk_tree_store_set(widgets->LayoutList,&chiter,3,0,4,0,-1); + } + } } else { gtk_tree_store_set(widgets->LayoutList,&iter,3,0,4,0,-1); } - for (int valid2 = gtk_tree_model_iter_children(model,&chiter,&iter);valid2;valid2 = gtk_tree_model_iter_next(model,&chiter)){ - } } } else { diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 5bf7785..e57eeda 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -210,6 +210,24 @@ int yon_network_save(main_window *widgets){ } else { yon_config_remove_by_key(NTPSERVERS_parameter); } + if (gtk_switch_get_active(GTK_SWITCH(widgets->HostnameSensitiveSwitch))){ + int autohostname = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck)); + char *hostname = NULL; + if (autohostname) { + hostname = "auto"; + } else { + 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_highlight_incorrect(widgets->HotnameEntry); + return 0; + } + yon_config_register(hostname_parameter,hostname_parameter_command,hostname); + } else { + yon_config_remove_by_key(hostname_parameter); + } + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->NetworkConnectionsBox)); GList *iter; for (iter=list;iter;iter=iter->next){ @@ -284,36 +302,90 @@ void yon_network_init(main_window *widgets){ } yon_char_parsed_free(network_types,size); + char *domain = config(DOMAIN_parameter); + char *domain_admanger = config(DOMAIN_admanger_parameter); + char *ntp = config(NTPSERVERS_parameter); + char *hostname = config(hostname_parameter); + + if (!yon_char_is_empty(domain)){ + gtk_switch_set_active(GTK_SWITCH(widgets->NetworkDomainSwitch),1); + gtk_entry_set_text(GTK_ENTRY(widgets->NetworkDomainNameEntry),domain); + if (!yon_char_is_empty(domain_admanger)){ + char *domain_password = yon_char_new(domain_admanger); + char *domain_admin = yon_char_divide_search(domain_password,":",-1); + gtk_entry_set_text(GTK_ENTRY(widgets->NetworkDomainAdminEntry),domain_admin); + gtk_entry_set_text(GTK_ENTRY(widgets->NetworkDomainPasswordEntry),domain_password); + } + } + if (!yon_char_is_empty(ntp)){ + gtk_switch_set_active(GTK_SWITCH(widgets->NetworkNTPServerSwitch),1); + gtk_widget_set_sensitive(widgets->NetworkNTPEntry,0); + if (!strcmp(ntp,"dhcp")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),1); + } else if (!strcmp(ntp,"default")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),2); + } else if (!strcmp(ntp,"ntp-ru")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),3); + } else if (!strcmp(ntp,"no")||!strcmp(ntp,"disable")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),5); + } else if (!strcmp(ntp,"stop")){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),6); + } else { + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),4); + gtk_widget_set_sensitive(widgets->NetworkNTPEntry,1); + gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),ntp); + } + } else { + gtk_widget_set_sensitive(widgets->NetworkNTPEntry,0); + gtk_entry_set_text(GTK_ENTRY(widgets->NetworkNTPEntry),""); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NetworkNTPCombo),0); + } + gtk_entry_set_text(GTK_ENTRY(widgets->HotnameEntry),""); + if (!yon_char_is_empty(hostname)){ + gtk_switch_set_active(GTK_SWITCH(widgets->HostnameSensitiveSwitch),1); + if (!strcmp(hostname,"auto")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck),1); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck),0); + gtk_entry_set_text(GTK_ENTRY(widgets->HotnameEntry),hostname); + } + } config_str parameters = yon_config_get_all_by_key(NETWORK_parameter_search,&size); for (int i=0;iNetworkConnectionsBox),info->MainBox,0,0,0); gtk_widget_show(info->MainBox); int connection_size; config_str connection = yon_char_parse(parameter,&connection_size," "); - for (int k=0;kAutoGetIPSwitch),0); - } else if (!strcmp(connection[k],"ipv4.addr")){ - char *mask = yon_char_new(connection[++k]); - char *ip = yon_char_divide_search(mask,"/",-1); - gtk_entry_set_text(GTK_ENTRY(info->MaskEntry),mask); - gtk_entry_set_text(GTK_ENTRY(info->IpAdressEntry),ip); - free(mask); - free(ip); - - } else if (!strcmp(connection[k],"ipv4.gateway")){ - gtk_entry_set_text(GTK_ENTRY(info->GatewayEntry),connection[++k]); + if (yon_char_parsed_check_exist(connection,connection_size,"ipv4.method")>-1){ + gtk_switch_set_active(GTK_SWITCH(info->AutoGetIPSwitch),1); + } else { + int addr_active = yon_char_parsed_check_exist(connection,connection_size,"ipv4.addr"); + if (addr_active>-1){ + char *mask = yon_char_new(connection[addr_active+1]); + char *ip = yon_char_divide_search(mask,"/",-1); + gtk_entry_set_text(GTK_ENTRY(info->MaskEntry),mask); + gtk_entry_set_text(GTK_ENTRY(info->IpAdressEntry),ip); + free(mask); + free(ip); + } + addr_active = yon_char_parsed_check_exist(connection,connection_size,"ipv4.gateway"); + if (addr_active>-1){ + gtk_entry_set_text(GTK_ENTRY(info->GatewayEntry),connection[addr_active+1]); - } else if (!strcmp(connection[k],"ipv4.dns")){ - gtk_entry_set_text(GTK_ENTRY(info->DNSEntry),connection[++k]); + } + addr_active = yon_char_parsed_check_exist(connection,connection_size,"ipv4.dns"); + if (addr_active>-1){ + gtk_entry_set_text(GTK_ENTRY(info->DNSEntry),connection[addr_active+1]); } } @@ -321,9 +393,9 @@ void yon_network_init(main_window *widgets){ GList *list = g_hash_table_get_keys(main_config.network_types); GList *iter; for (iter=list;iter;iter=iter->next){ - if (g_hash_table_contains(g_hash_table_lookup(main_config.network_types,(char*)iter->data),key)){ + if (g_hash_table_contains(g_hash_table_lookup(main_config.network_types,(char*)iter->data),key_type)){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(info->TypeCombo),(char*)iter->data); - gtk_combo_box_set_active_id(GTK_COMBO_BOX(info->ConnectionCombo),key); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(info->ConnectionCombo),key_type); break; } } diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 8b4635e..81cf723 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -115,7 +115,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){ return yon_os_components_save(widgets); break; case YON_PAGE_KERNEL: - return yon_kernel_save(widgets); + // return yon_kernel_save(widgets); break; case YON_PAGE_KERNEL_ADDON: return yon_kernel_addon_save(widgets); diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index 553573d..60dd33b 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -14,9 +14,9 @@ // free(result); // } -// void yon_save_proceed(char *path, YON_CONFIG_TYPE type){ -// yon_debug_output("%s\n",yon_config_save_simple(type,path)); -// } +void yon_config_save_proceed(char *path, YON_CONFIG_TYPE type){ + yon_debug_output("%s\n",yon_config_save_simple(type,path)); +} void yon_load_proceed(YON_CONFIG_TYPE type){ if (type!=YON_CONFIG_CUSTOM){ @@ -76,22 +76,22 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ main_config.load_mode=YON_CONFIG_CUSTOM; } -// void on_config_global_local_save(GtkWidget *,main_window *widgets){ -// yon_save_proceed(NULL,YON_CONFIG_BOTH); -// gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); -// } +void on_config_global_local_save(GtkWidget *,main_window *widgets){ + yon_config_save_proceed(NULL,YON_CONFIG_BOTH); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); +} -// void on_config_local_save(GtkWidget *,main_window *widgets){ -// yon_save_proceed("system",YON_CONFIG_LOCAL); -// gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); -// -// } +void on_config_local_save(GtkWidget *,main_window *widgets){ + yon_config_save_proceed("system",YON_CONFIG_LOCAL); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); -// void on_config_global_save(GtkWidget *,main_window *widgets){ -// yon_save_proceed("global",YON_CONFIG_GLOBAL); -// gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); -// -// } +} + +void on_config_global_save(GtkWidget *,main_window *widgets){ + yon_config_save_proceed("global",YON_CONFIG_GLOBAL); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); + +} // void on_config_custom_save(GtkWidget *, main_window *widgets){ // char *path = NULL; diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 2355619..2c5ee87 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -76,11 +76,13 @@ void yon_startup_services_setup(main_window *widgets){ int pos = yon_char_parsed_check_exist(parsed,parsed_size,target_parsed[i]); if (pos>-1){ found++; - parsed = yon_char_parsed_rip(parsed,&parsed_size,pos); + parsed = yon_char_parsed_rip(parsed,&parsed_size,pos); } } if (found == target_size){ gtk_list_store_set(widgets->StartupList,&iter,0,1,-1); + } else { + gtk_list_store_set(widgets->StartupList,&iter,0,0,-1); } yon_char_parsed_free(target_parsed,target_size); } else { diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index b4debc9..b192da8 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -186,11 +186,11 @@ layout && /description:/ {\ #define packages_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[packages]" #define device_typevfs_parameter "AUTOINSTALL[device_typevfs]" #define device_typevfs_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_typevfs]" -#define NTPSERVERS_parameter "AOUTINSTALL[ubconfig set [network] NTPSERVERS]" +#define NTPSERVERS_parameter "AUTOINSTALL[ubconfig set [network] NTPSERVERS]" #define NTPSERVERS_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] NTPSERVERS']" -#define DOMAIN_parameter "AOUTINSTALL[ubconfig set [network] DOMAIN]" +#define DOMAIN_parameter "AUTOINSTALL[ubconfig set [network] DOMAIN]" #define DOMAIN_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN']" -#define DOMAIN_admanger_parameter "AOUTINSTALL[ubconfig set [network] DOMAIN[admanger]]" +#define DOMAIN_admanger_parameter "AUTOINSTALL[ubconfig set [network] DOMAIN[admanger]]" #define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN[admanger]']" #define USERADD_parameter_all "AUTOINSTALL[ubconfig set [users] USERADD[*]]" #define USERADD_parameter_search "AUTOINSTALL[ubconfig set [users] USERADD["