From 8040b72130561ad14bc867701a8a1061d425f6da Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 4 Jul 2024 11:30:51 +0600 Subject: [PATCH 1/3] Test fix for freeze --- source/ubinstall-gtk.c | 54 +++++++++++++++++++++++------------------- source/ubinstall-gtk.h | 14 +++++------ 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 9c1d055..71a7d60 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -95,19 +95,23 @@ void on_language_window_accept(GtkWidget *,dictionary *dict); void on_language_window_accept(GtkWidget *,dictionary *dict){ main_window *widgets= yon_dictionary_get_data(dict->first,main_window*); ubinstall_language_window *window = yon_dictionary_get_data(dict->first->next,ubinstall_language_window*); - yon_gtk_list_store_copy_full(widgets->LanguagesList,window->liststore1); - gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); - config_str parsed = NULL; - int size; - GtkTreeIter iter; - for_iter(GTK_TREE_MODEL(window->liststore1),&iter){ - char *current; - int status; - gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,¤t,-1); - if (status) - yon_char_parsed_add_or_create_if_exists(parsed,&size,current); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultCheck))){ + gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); + } else { + yon_gtk_list_store_copy_full(widgets->LanguagesList,window->liststore1); + gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); + config_str parsed = NULL; + int size; + GtkTreeIter iter; + for_iter(GTK_TREE_MODEL(window->liststore1),&iter){ + char *current; + int status; + gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,¤t,-1); + if (status) + yon_char_parsed_add_or_create_if_exists(parsed,&size,current); + } + gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),yon_char_parsed_to_string(parsed,size,", ")); } - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),yon_char_parsed_to_string(parsed,size,", ")); on_subwindow_close(window->MainWindow); free(window); } @@ -312,11 +316,12 @@ void *yon_installation_progress_update(void *data){ config_str parsed = yon_char_parse(current_copy,&size," "); double fraction = atof(parsed[3])/100; gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress),fraction/100); - parsed = yon_char_parsed_rip(parsed,&size,3); gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel),yon_char_parsed_to_string(parsed,size," ")); - + yon_char_parsed_free(parsed,size); } last_time = current_time; + free(current_copy); + free(percentage); } break; } @@ -436,27 +441,26 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ZONE_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(widgets->ZoneCombo); return; - } else if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AvailableLanguagesEntry)))){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LANGUAGES_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->AvailableLanguagesEntry); - return; - } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LOCALE_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->LanguagesCombo); - return; + } + char *languages = ""; + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AvailableLanguagesEntry)))){ + yon_config_remove_by_key(locale_parameter); + } else { + yon_config_register(locale_parameter,locale_parameter_command,languages); + } + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1){ + yon_config_remove_by_key(lang_parameter); } 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)); GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesFilter); - char *languages = ""; char *lang_code=NULL; for_iter(model,&iter){ gtk_tree_model_get(model,&iter,1,&lang_code,-1); - yon_char_unite(languages,",",lang_code,NULL); + languages = yon_char_unite(languages,",",lang_code,NULL); } char *language = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo)); - yon_config_register(locale_parameter,locale_parameter_command,languages); yon_config_register(lang_parameter,lang_parameter_command,language); yon_config_register(zone_parameter,zone_parameter_command,yon_char_unite(region,"/",zone,NULL)); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 2c71335..224e7a3 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -95,12 +95,12 @@ NULL #define xkboptions_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[xkboptions]" #define hostname_parameter "AUTOINSTALL[hostname]" #define hostname_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[hostname]" -#define zone_parameter "AUTOINSTALL[hostname]" -#define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[hostname]" -#define lang_parameter "AUTOINSTALL[hostname]" -#define lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[hostname]" -#define locale_parameter "AUTOINSTALL[hostname]" -#define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[hostname]" +#define zone_parameter "AUTOINSTALL[zone]" +#define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[zone]" +#define lang_parameter "AUTOINSTALL[lang]" +#define lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[lang]" +#define locale_parameter "AUTOINSTALL[locale]" +#define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[locale]" #define device_format_parameter "AUTOINSTALL[device_format]" #define device_format_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_format]" #define device_label_parameter "AUTOINSTALL[device_label]" @@ -110,7 +110,7 @@ NULL #define part_type_parameter "AUTOINSTALL[part_type]" #define part_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_type]" -#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, ";ubinstall2 --test --config /etc/ublinux/autoinstall'", NULL) +#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, ";ubinstall2 --config /etc/ublinux/autoinstall'", NULL) #define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get autoinstall AUTOINSTALL[install_type]" #define AUTOINSTALL_DEVICE_command "ubconfig --source global get autoinstall AUTOINSTALL[device]" From 4c3e306c64f58364a7792b9a5f23cd661ff64fd3 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 5 Jul 2024 13:46:44 +0600 Subject: [PATCH 2/3] Fixes, changes --- source/ubinstall-gtk.c | 168 +++++++++++++++++++++++++++++------------ source/ubinstall-gtk.h | 23 ++++-- source/ubl-strings.h | 1 + ubinstall-gtk.glade | 18 ++++- ubinstall-gtk.pot | 4 + ubinstall-gtk_ru.po | 4 + 6 files changed, 163 insertions(+), 55 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 71a7d60..e9e4a9a 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -171,7 +171,7 @@ void config_init(){ main_config.slider_thread=0; main_config.config_save_thread=NULL; main_config.install_thread=NULL; - main_config.progress_thread=NULL; + main_config.progress_thread=0; main_config.install_complete=0; } @@ -285,15 +285,15 @@ void *yon_installation_start(main_window *widgets){ } -void *yon_installation_progress_update(void *data); -void *yon_installation_progress_update(void *data){ +gboolean yon_installation_progress_update(void *data); +gboolean yon_installation_progress_update(void *data){ main_window *widgets = (main_window*)data; FILE *file = NULL; char *current = g_malloc0(4096); clock_t last_time = 0; clock_t current_time; - while (main_config.install_thread){ while (1){ + while (gtk_events_pending()) gtk_main_iteration(); current_time = clock(); if ((double)(current_time - last_time) / CLOCKS_PER_SEC >= 0.5){ if (!file) @@ -308,7 +308,7 @@ void *yon_installation_progress_update(void *data){ free(yon_char_divide(current_copy,0)); free(yon_char_divide(percentage,0)); if (strcmp(percentage,"#pb")){ - double fraction = atof(percentage); + double fraction = atof(percentage); gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),current_copy); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),fraction/100); } else { @@ -331,8 +331,9 @@ void *yon_installation_progress_update(void *data){ fclose(file); file=NULL; - } - return NULL; + if (main_config.install_thread){ + return 1; + } else return 0; } void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets); @@ -368,7 +369,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ // if (!main_config.install_thread&&!main_config.install_complete) // main_config.install_thread = g_thread_new("InstallThread",(GThreadFunc)yon_installation_start,widgets); if (!main_config.progress_thread) - main_config.progress_thread = g_thread_new("ProgressThread",(GThreadFunc)yon_installation_progress_update,widgets); + main_config.progress_thread = gdk_threads_add_timeout(500,(GSourceFunc)yon_installation_progress_update,widgets); if (!main_config.slider_thread) main_config.slider_thread = g_timeout_add(5000,(GSourceFunc)on_image_slide,widgets); @@ -443,6 +444,13 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ return; } char *languages = ""; + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesFilter); + char *lang_code=NULL; + for_iter(model,&iter){ + gtk_tree_model_get(model,&iter,1,&lang_code,-1); + languages = yon_char_unite(languages,",",lang_code,NULL); + } if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AvailableLanguagesEntry)))){ yon_config_remove_by_key(locale_parameter); } else { @@ -450,18 +458,12 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ } 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); } 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)); - GtkTreeIter iter; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesFilter); - char *lang_code=NULL; - for_iter(model,&iter){ - gtk_tree_model_get(model,&iter,1,&lang_code,-1); - languages = yon_char_unite(languages,",",lang_code,NULL); - } - char *language = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo)); - yon_config_register(lang_parameter,lang_parameter_command,language); yon_config_register(zone_parameter,zone_parameter_command,yon_char_unite(region,"/",zone,NULL)); gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page+1); @@ -600,45 +602,102 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION_BEGIN); }break; case YON_PAGE_USERS:{ //users + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)))){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->UserNameEntry); - return; - } else if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->LoginEntry)))){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->LoginEntry); - return; + yon_config_remove_by_key(user_gecos_parameter); + } else { + char *username = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); + yon_config_register(user_gecos_parameter,user_gecos_parameter_command,username); + } - } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->PasswordCombo))==1&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->PasswordEntry)))){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->PasswordEntry); - return; + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->LoginEntry)))){ + yon_config_remove_by_key(user_name_parameter); + } else { + char *login = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); + yon_config_register(user_name_parameter,user_name_parameter_command,login); - } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdminPasswordCombo))==1&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry)))){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(widgets->AdminPasswordEntry); - return; + } + + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->PasswordCombo))==1){ + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->PasswordEntry)))){ + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(widgets->PasswordEntry); + return; + } else { + char *password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->PasswordEntry)); + yon_config_register(user_password_parameter,user_password_parameter_command,password); + + } + } else { + yon_config_register(user_password_parameter,user_password_parameter_command,PASSWORD_DEFAULT); + } + + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdminPasswordCombo))==1){ + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry)))){ + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(widgets->AdminPasswordEntry); + return; + } else { + char *root_password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry)); + yon_config_register(root_password_parameter,root_password_parameter_command,root_password); + + } + } else { + yon_config_register(user_password_parameter,user_password_parameter_command,PASSWORD_DEFAULT); + } - } else if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry)))){ + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck))){ + yon_config_register(hostname_parameter,hostname_parameter_command,"auto"); + } else { + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry)))){ + yon_config_remove_by_key(hostname_parameter); - 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; + } else { + char *hostname = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); + yon_config_register(hostname_parameter,hostname_parameter_command,hostname); + + } } - char *username = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); - char *login = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); - char *password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); - char *root_password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); - char *hostname = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)); + char *autologin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutologinCheck))?"yes":"no"; - yon_config_register(user_name_parameter,user_name_parameter_command,login); - yon_config_register(user_gecos_parameter,user_gecos_parameter_command,username); - yon_config_register(user_password_parameter,user_password_parameter_command,password); - yon_config_register(root_password_parameter,root_password_parameter_command,root_password); yon_config_register(autologin_parameter,autologin_parameter_command,autologin); - yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,hostname); - yon_config_register(hostname_parameter,hostname_parameter_command,root_password); + + GtkTreeIter iter; + if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutsFilter),&iter)){ + char *locales=""; + for_iter (GTK_TREE_MODEL(widgets->LayoutsFilter),&iter){ + char *id; + int status; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsFilter),&iter,0,&id,3,&status,-1); + if (status){ + char *temp = yon_char_unite(locales,!yon_char_is_empty(locales)?",":"",id,NULL); + free(locales); + locales=temp; + } + } + if (!yon_char_is_empty(locales)){ + yon_config_register(xkblayout_parameter,xkblayout_parameter_command,locales); + } else { + yon_config_remove_by_key(xkblayout_parameter); + } + } + 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); + } else { + yon_config_remove_by_key(xkbmodel_parameter); + } + + char *options = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LayoutBindingCombo)); + if (!yon_char_is_empty(options)){ + yon_config_register(xkboptions_parameter,xkboptions_parameter_command,options); + } else { + yon_config_remove_by_key(xkboptions_parameter); + } gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION); + if (gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress))>0.9){ + + } gtk_widget_set_sensitive(widgets->CancelInstallButton,0); gtk_widget_set_sensitive(widgets->NextButton,0); gtk_widget_set_sensitive(widgets->BackButton,0); @@ -843,6 +902,10 @@ void on_same_installation_device_changed(GtkWidget *, main_window *widgets){ } } +void on_gparted_open(){ + yon_launch_app_with_arguments(open_gparted_command,NULL); +} + /**yon_main_window_complete(main_window *widgets) * [EN] * @@ -866,6 +929,7 @@ main_window *yon_main_window_complete(){ widgets->SectionsToggle=yon_gtk_builder_get_widget(builder,"SectionsToggle"); widgets->UsersToggle=yon_gtk_builder_get_widget(builder,"USersToggle"); widgets->SummaryToggle=yon_gtk_builder_get_widget(builder,"SummaryToggle"); + widgets->CompletionToggle=yon_gtk_builder_get_widget(builder,"CompletionToggle"); widgets->InstallationToggle=yon_gtk_builder_get_widget(builder,"InstallationToggle"); widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo"); widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); @@ -895,6 +959,7 @@ main_window *yon_main_window_complete(){ widgets->AdminPasswordEntry=yon_gtk_builder_get_widget(builder,"AdminPasswordEntry"); widgets->AdminPasswordButton=yon_gtk_builder_get_widget(builder,"AdminPasswordButton"); widgets->HotnameEntry=yon_gtk_builder_get_widget(builder,"HotnameEntry"); + widgets->AutoHostnameCheck=yon_gtk_builder_get_widget(builder,"AutoHostnameCheck"); widgets->CancelInstallButton=yon_gtk_builder_get_widget(builder,"CancelInstallButton"); widgets->BackButton=yon_gtk_builder_get_widget(builder,"BackButton"); widgets->NextButton=yon_gtk_builder_get_widget(builder,"NextButton"); @@ -936,6 +1001,9 @@ main_window *yon_main_window_complete(){ widgets->CommonInstallationFilesystemTypeCombo = yon_gtk_builder_get_widget(builder,"CommonInstallationFilesystemTypeCombo"); widgets->CommonInstallationSectionNameEntry = yon_gtk_builder_get_widget(builder,"CommonInstallationSectionNameEntry"); + widgets->GpartedNearButton = yon_gtk_builder_get_widget(builder,"GpartedNearButton"); + widgets->GpartedSameButton = yon_gtk_builder_get_widget(builder,"GpartedSameButton"); + widgets->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); widgets->AdditionalSoftwareCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"AdditionalSoftwareCell")); @@ -946,6 +1014,9 @@ main_window *yon_main_window_complete(){ widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList")); widgets->PartitionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PartitionsList")); + g_signal_connect(G_OBJECT(widgets->GpartedSameButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->GpartedNearButton),"clicked",G_CALLBACK(on_gparted_open),NULL); + g_signal_connect(G_OBJECT(widgets->Notebook),"switch-page",G_CALLBACK(on_page_changed),widgets); g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets); g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_navigation_clicked),widgets); @@ -962,6 +1033,7 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->LocationToggle),"toggled",G_CALLBACK(on_toggle_block),NULL); g_signal_connect(G_OBJECT(widgets->SectionsToggle),"toggled",G_CALLBACK(on_toggle_block),NULL); g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),NULL); + g_signal_connect(G_OBJECT(widgets->CompletionToggle),"toggled",G_CALLBACK(on_toggle_block),NULL); g_signal_connect(G_OBJECT(widgets->InstallationNearSysDevicesTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets); g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets); @@ -973,6 +1045,8 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),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); // g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),widgets); gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter),0); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 224e7a3..ac0801e 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -103,19 +103,25 @@ NULL #define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[locale]" #define device_format_parameter "AUTOINSTALL[device_format]" #define device_format_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_format]" -#define device_label_parameter "AUTOINSTALL[device_label]" -#define device_label_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_label]" +#define device_label_parameter "AUTOINSTALL[part_label]" +#define device_label_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_label]" #define part_size_parameter "AUTOINSTALL[part_size]" #define part_size_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_size]" -#define part_type_parameter "AUTOINSTALL[part_type]" -#define part_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_type]" +#define part_type_parameter "AUTOINSTALL[part_fs_type]" +#define part_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_fs_type]" -#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, ";ubinstall2 --config /etc/ublinux/autoinstall'", NULL) +#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, "; nice ubinstall2 --config /etc/ublinux/autoinstall'", NULL) + +#define set_user_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig --target system set [autoinstall] ",parameters,";nice ubinstall2 --autoconfig'",NULL) + +#define open_gparted_command "pkexec gparted" #define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get autoinstall AUTOINSTALL[install_type]" #define AUTOINSTALL_DEVICE_command "ubconfig --source global get autoinstall AUTOINSTALL[device]" #define AUTOSTART_PARTS_command "ubconfig --source global get autoinstall AUTOINSTALL[part]" +#define PASSWORD_DEFAULT "ublinux" + #define start_fast_install_command "ubinstall2 --autoinstall" #define progress_path "/var/log/ubinstall_progress.log" @@ -165,7 +171,7 @@ typedef struct { int install_mode; GThread *config_save_thread; GThread *install_thread; - GThread *progress_thread; + guint progress_thread; } config; typedef struct { @@ -186,6 +192,7 @@ typedef struct { GtkWidget *SectionsToggle; GtkWidget *UsersToggle; GtkWidget *SummaryToggle; + GtkWidget *CompletionToggle; GtkWidget *InstallationToggle; GtkWidget *LanguageCombo; GtkWidget *RegionCombo; @@ -215,6 +222,7 @@ typedef struct { GtkWidget *AdminPasswordEntry; GtkWidget *AdminPasswordButton; GtkWidget *HotnameEntry; + GtkWidget *AutoHostnameCheck; GtkWidget *CancelInstallButton; GtkWidget *BackButton; GtkWidget *NextButton; @@ -254,6 +262,9 @@ typedef struct { GtkWidget *PackageInstallationProgress; GtkWidget *PackageInstallationLabel; + GtkWidget *GpartedNearButton; + GtkWidget *GpartedSameButton; + GtkCellRenderer *AdditionalSoftwareCell; GtkWidget *CommonInstallationDevicesTree; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 1cd26d8..58f18e5 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -47,6 +47,7 @@ #define AUTOMATIC_LOGIN_LABEL _("Automatic login without password prompt") #define ADMIN_PASSWORD_LABEL _("Administrator password (root):") #define COMPUTER_NAME_LABEL _("Computer name:") +#define AUTOMATICALLY_LABEL _("Automatically") #define USER_LABEL _("User") #define COMPLETION_LABEL _("Completion") #define INSTALLATION_COMPLETION_LABEL _("Installation completion") diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index a8fdfef..11c91f5 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -311,7 +311,7 @@ agreement - + Completion True True @@ -2179,6 +2179,20 @@ and help you install UBLinux on your computer 0 + + + Automatically + True + True + False + True + + + False + True + 1 + + True @@ -2188,7 +2202,7 @@ and help you install UBLinux on your computer True True - 1 + 2 diff --git a/ubinstall-gtk.pot b/ubinstall-gtk.pot index 5854fae..3cd3fc8 100644 --- a/ubinstall-gtk.pot +++ b/ubinstall-gtk.pot @@ -243,6 +243,10 @@ msgstr "" msgid "Computer name:" msgstr "" +#: source/ubl-strings.h:49 +msgid "Automatically" +msgstr "" + #: source/ubl-strings.h:50 msgid "User" msgstr "" diff --git a/ubinstall-gtk_ru.po b/ubinstall-gtk_ru.po index daa8a09..67906fb 100644 --- a/ubinstall-gtk_ru.po +++ b/ubinstall-gtk_ru.po @@ -254,6 +254,10 @@ msgstr "Пароль администратора (root):" msgid "Computer name:" msgstr "Имя компьютера" +#: source/ubl-strings.h:49 +msgid "Automatically" +msgstr "Автоматически" + #: source/ubl-strings.h:50 msgid "User" msgstr "Пользователь" From e16a586e9cf15674cff4eee627844326683c6bbf Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 5 Jul 2024 14:21:02 +0600 Subject: [PATCH 3/3] Fixes, added system configuration installation if main installation was completed before --- source/ubinstall-gtk.c | 32 +++++++++++++++++++++++++++++++- source/ubinstall-gtk.h | 2 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index e9e4a9a..97cafcb 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -401,6 +401,34 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ } } +void *on_setup_system_configuration(void *); +void *on_setup_system_configuration(void *){ + int size; + config_str all_parameters = yon_config_get_selection_by_key(&size, + user_gecos_parameter, + user_password_parameter, + root_password_parameter, + autologin_parameter, + xkbmodel_parameter, + xkblayout_parameter, + xkbvariant_parameter, + xkboptions_parameter, + hostname_parameter, + zone_parameter, + lang_parameter, + locale_parameter, + NULL); + if (all_parameters){ + char *parameter_string = yon_char_parsed_to_string(all_parameters,size," "); + char *command = set_user_config_command(parameter_string); + if (system(command)){}; + yon_char_parsed_free(all_parameters,size); + free(command); + if (parameter_string) free(parameter_string); + } + return NULL; +} + void on_page_navigation_clicked(GtkWidget *self, main_window *widgets); void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ int mode = self==widgets->NextButton ? 1 : self == widgets->BackButton ? -1 : self==widgets->CancelInstallButton?-2:0; @@ -696,7 +724,8 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ } gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION); if (gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress))>0.9){ - + pthread_t tid; + pthread_create(&tid,NULL,on_setup_system_configuration,NULL); } gtk_widget_set_sensitive(widgets->CancelInstallButton,0); gtk_widget_set_sensitive(widgets->NextButton,0); @@ -902,6 +931,7 @@ void on_same_installation_device_changed(GtkWidget *, main_window *widgets){ } } +void on_gparted_open(); void on_gparted_open(){ yon_launch_app_with_arguments(open_gparted_command,NULL); } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index ac0801e..576b4c4 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -110,7 +110,7 @@ NULL #define part_type_parameter "AUTOINSTALL[part_fs_type]" #define part_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_fs_type]" -#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, "; nice ubinstall2 --config /etc/ublinux/autoinstall'", NULL) +#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, "; nice ubinstall2 --test --config /etc/ublinux/autoinstall'", NULL) #define set_user_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig --target system set [autoinstall] ",parameters,";nice ubinstall2 --autoconfig'",NULL)