From 1acd759baa3e07c5ee133f716b6d41a0ca4baf30 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 15 Apr 2026 10:29:04 +0600 Subject: [PATCH] TEST fix for install --- source/ubinstall-gtk-install-start.c | 4 +- source/ubinstall-gtk-page-switch.c | 22 +++-- source/ubinstall-gtk-saving.c | 122 +++++++++------------------ source/ubinstall-gtk.h | 5 +- 4 files changed, 62 insertions(+), 91 deletions(-) diff --git a/source/ubinstall-gtk-install-start.c b/source/ubinstall-gtk-install-start.c index ee59796..083de62 100644 --- a/source/ubinstall-gtk-install-start.c +++ b/source/ubinstall-gtk-install-start.c @@ -2,7 +2,9 @@ int yon_installation_start(main_window *widgets){ gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress)); - return !pthread_create(&main_config.install_thread,NULL,on_config_save,widgets); + // return !pthread_create(&main_config.install_thread,NULL,on_config_save,widgets); + on_config_terminal_save(widgets); + return 1; } void yon_quick_install(GtkWidget *self, main_window *widgets){ diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index fd9c386..2fb7be6 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -8,13 +8,23 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_WELCOME: return YON_PAGE_LICENCE; break; case YON_PAGE_LICENCE: return YON_PAGE_SECTIONS; break; case YON_PAGE_SECTIONS: return yon_sections_get_next_page(widgets); break; - case YON_PAGE_OS_COMPONENTS: return main_config.configure_mode?YON_PAGE_CONFIG_HUB: strcmp(config(AUTOINSTALL_TYPE_INSTALL),"system_only") ? YON_PAGE_INSTALLATION_BEGIN : YON_PAGE_RECOVERY_BEGIN; break; + case YON_PAGE_OS_COMPONENTS: { + char *install_mode = config(AUTOINSTALL_TYPE_INSTALL); + if (main_config.configure_mode&&strcmp(install_mode,"system_only")&&strcmp(install_mode,"grub_install")&&strcmp(install_mode,"grub_update")){ + return YON_PAGE_CONFIG_HUB; + } else if (strcmp(install_mode,"system_only")){ + return YON_PAGE_INSTALLATION_BEGIN; + } else { + return YON_PAGE_RECOVERY_BEGIN; + } + } case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_CONFIG_HUB: { + char *install_mode = config(AUTOINSTALL_TYPE_INSTALL); if (main_config.configure_mode){ return YON_PAGE_CONFIGURE_END; - } else if (strcmp(config(AUTOINSTALL_TYPE_INSTALL),"data_only")){ + } else if (strcmp(install_mode,"data_only")){ return YON_PAGE_INSTALLATION; } else { return YON_PAGE_RECOVERY_BEGIN; @@ -37,10 +47,10 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_INSTALL_SAME_PARTITION: return YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_INSTALL_ADVANCED: return YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_INSTALL_RECOVERY: return yon_recovery_get_next(widgets); break; - case YON_PAGE_RECOVERY_GRUB_INSTALL: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_CONFIG_HUB; break; - case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_CONFIG_HUB; break; - case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_OS_COMPONENTS; break; - case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_CONFIG_HUB; break; + case YON_PAGE_RECOVERY_GRUB_INSTALL: return YON_PAGE_CONFIG_HUB; break; + case YON_PAGE_RECOVERY_GRUB_UPDATE: return YON_PAGE_CONFIG_HUB; break; + case YON_PAGE_RECOVERY_OS_ONLY: return YON_PAGE_OS_COMPONENTS; break; + case YON_PAGE_RECOVERY_USRDATA_ONLY: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_RECOVERY_BEGIN: main_config.save_configured = 1; return YON_PAGE_RECOVERY_PROCESS; break; case YON_PAGE_RECOVERY_PROCESS: return YON_PAGE_RECOVERY_COMPLETION; break; case YON_PAGE_INSTALLATION: return YON_PAGE_COMPLETION; break; diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index 98b126c..c3ea53f 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -156,6 +156,43 @@ enum INSTALL_TYPE yon_ubl_get_install_mode(){ return INSTALL_ERROR; } +void on_config_install_success(GtkWidget *self, int state, main_window *widgets){ + if (state){ + gdk_threads_add_idle((GSourceFunc)on_install_error,widgets); + g_mutex_lock(&main_config.install_mutex); + main_config.install_complete=1; + g_mutex_unlock(&main_config.install_mutex); + return; + }; + g_mutex_lock(&main_config.install_mutex); + main_config.install_complete=1; + g_mutex_unlock(&main_config.install_mutex); + if ((!main_config.save_done)&&main_config.save_configured){ + on_setup_system_configuration(widgets); + } + gtk_widget_destroy(self); +} + +void on_config_terminal_save(main_window *widgets){ + g_idle_add((GSourceFunc)yon_progress_bar_start,widgets); + if (!main_config.dry_run){ + char *command = yon_debug_output("%s\n",save_config_command); + yon_debug_output("%s\n","Entered installation"); + GtkWidget *terminal = vte_terminal_new(); + yon_window *window = yon_window_new(); + gtk_box_pack_start(GTK_BOX(window->MainBox),terminal,1,1,0); + gtk_widget_show(window->Window); + gtk_widget_show(terminal); + g_signal_connect(G_OBJECT(terminal),"child-exited",G_CALLBACK(on_config_install_success),widgets); + yon_terminal_integrated_start(terminal,command); + + } else { + yon_launch("ubconfig --source system get /"); + } + return; +} + + void *on_config_save(void *data){ main_window *widgets = (main_window*)data; @@ -190,97 +227,16 @@ void *on_setup_system_configuration(void * data){ yon_debug_output("%s\n","Entered thread"); main_window *widgets = (main_window*)data; if (widgets){}; - int size; - config_str all_parameters = yon_config_get_selection_by_key(&size, - root_password_parameter, - autologin_parameter, - xkbmodel_parameter, - xkblayout_parameter, - xkbvariant_parameter, - xkboptions_parameter, - hostname_parameter, - zone_parameter, - lang_parameter, - locale_parameter, - SERVICES_ENABLE_parameter, - GRUB_DEFAULT_parameter, - GRUB_TIMEOUT_parameter, - AUTOLOGINUSER_parameter, - GRUB_SUPERUSERS_parameter, - DOMAIN_parameter, - DOMAIN_admanger_parameter, - NTPSERVERS_parameter, - packages_parameter, - KERNEL_BOOT_parameter, - packages_parameter, - NULL); - int user_size=0; - config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&user_size); - if (user_size){ - int final_size; - config_str final = yon_char_parsed_merge(all_parameters,size,users,user_size,&final_size); - // yon_char_parsed_free(users,user_size); - if (size) yon_char_parsed_free(all_parameters,size); - all_parameters = final; - size = final_size; - } - users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&user_size); - if (users){ - int final_size; - config_str final = yon_char_parsed_merge(all_parameters,size,users,user_size,&final_size); - // yon_char_parsed_free(users,user_size); - if (size) yon_char_parsed_free(all_parameters,size); - all_parameters = final; - size = final_size; - } - int network_size; - config_str networks = yon_config_get_all_by_key(NETWORK_parameter_search,&network_size); - if (network_size){ - int final_size; - config_str final = yon_char_parsed_merge(all_parameters,size,networks,network_size,&final_size); - // yon_char_parsed_free(networks,network_size); - if (size) yon_char_parsed_free(all_parameters,size); - all_parameters = final; - size = final_size; - } - - if (all_parameters){ - for (int i=0;i #include #include +// #define VTE_INCLUDE #ifdef WEBKIT_INCLUDE #include #endif @@ -1640,4 +1641,6 @@ void yon_status_thread_update_inactive(main_window *widgets); void yon_status_thread_update_active(main_window *widgets); void *yon_status_thread_update(main_window *widgets); void yon_db_lock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets); -void yon_db_unlock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets); \ No newline at end of file +void yon_db_unlock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets); +void on_config_install_success(GtkWidget *self, int state, main_window *widgets); +void on_config_terminal_save(main_window *widgets); \ No newline at end of file