Test installation move to vte terminal

pull/385/head
parent 1acd759baa
commit e12426c101

@ -588,7 +588,8 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
if (main_config.install_complete){ if (main_config.install_complete){
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
g_thread_new("install_thread",(GThreadFunc)on_setup_system_configuration,widgets); // g_thread_new("install_thread",(GThreadFunc)on_setup_system_configuration,widgets);
on_config_terminal_setup_system_configuration(widgets);
} else { } else {
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
} }
@ -627,7 +628,7 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets){
yon_page_update(widgets); yon_page_update(widgets);
} }
#include <signal.h> // #include <signal.h>
void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
enum YON_PAGES cur_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); enum YON_PAGES cur_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook));
@ -651,7 +652,11 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
data->action_text=INTERRUPT_TEXT_LABEL; data->action_text=INTERRUPT_TEXT_LABEL;
data->title=WARNING_TITLE_LABEL; data->title=WARNING_TITLE_LABEL;
if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
pthread_cancel(main_config.install_thread); g_signal_handlers_block_by_func(G_OBJECT(widgets->install_terminal),on_config_install_success,widgets);
gtk_widget_destroy(widgets->install_terminal);
widgets->install_terminal = NULL;
yon_install_terminal_recreate(widgets);
// pthread_cancel(main_config.install_thread);
kill(main_config.install_thread,SIGKILL); kill(main_config.install_thread,SIGKILL);
g_signal_handlers_disconnect_by_func(G_OBJECT(widgets->install_info_monitor),yon_installation_progress_update,widgets); g_signal_handlers_disconnect_by_func(G_OBJECT(widgets->install_info_monitor),yon_installation_progress_update,widgets);
g_file_monitor_cancel(widgets->install_info_monitor); g_file_monitor_cancel(widgets->install_info_monitor);

@ -156,21 +156,29 @@ enum INSTALL_TYPE yon_ubl_get_install_mode(){
return INSTALL_ERROR; return INSTALL_ERROR;
} }
void on_config_install_success(GtkWidget *self, int state, main_window *widgets){ void on_config_install_success(GtkWidget *, int state, main_window *widgets){
if (state){ if (state){
gdk_threads_add_idle((GSourceFunc)on_install_error,widgets); gdk_threads_add_idle((GSourceFunc)on_install_error,widgets);
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
main_config.install_complete=1; main_config.install_complete=1;
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
return; return;
}; }
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
main_config.install_complete=1; if (!main_config.install_complete){
main_config.install_complete = 1;
}
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
if ((!main_config.save_done)&&main_config.save_configured){ if ((!main_config.save_done)&&main_config.save_configured){
on_setup_system_configuration(widgets); // on_setup_system_configuration(widgets);
on_config_terminal_setup_system_configuration(widgets);
} else if (main_config.save_done&&main_config.save_configured){
g_idle_add((GSourceFunc)on_install_success,widgets);
} else {
main_config.save_done=1;
gtk_widget_hide(widgets->install_terminal_window->Window);
} }
gtk_widget_destroy(self);
} }
void on_config_terminal_save(main_window *widgets){ void on_config_terminal_save(main_window *widgets){
@ -178,14 +186,9 @@ void on_config_terminal_save(main_window *widgets){
if (!main_config.dry_run){ if (!main_config.dry_run){
char *command = yon_debug_output("%s\n",save_config_command); char *command = yon_debug_output("%s\n",save_config_command);
yon_debug_output("%s\n","Entered installation"); yon_debug_output("%s\n","Entered installation");
GtkWidget *terminal = vte_terminal_new(); yon_terminal_integrated_start(widgets->install_terminal,command);
yon_window *window = yon_window_new(); gtk_widget_show(widgets->install_terminal_window->Window);
gtk_box_pack_start(GTK_BOX(window->MainBox),terminal,1,1,0); main_config.install_thread = 1;
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 { } else {
yon_launch("ubconfig --source system get /"); yon_launch("ubconfig --source system get /");
} }
@ -214,7 +217,8 @@ void *on_config_save(void *data){
main_config.install_complete=1; main_config.install_complete=1;
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
if ((!main_config.save_done)&&main_config.save_configured){ if ((!main_config.save_done)&&main_config.save_configured){
on_setup_system_configuration(widgets); // on_setup_system_configuration(widgets);
on_config_terminal_setup_system_configuration(widgets);
// on_page_next_clicked(NULL,widgets); // on_page_next_clicked(NULL,widgets);
} }
} else { } else {
@ -223,6 +227,25 @@ void *on_config_save(void *data){
return 0; return 0;
} }
void on_config_terminal_setup_system_configuration(main_window *widgets){
g_idle_add((GSourceFunc)yon_progress_bar_start,widgets);
if (!main_config.dry_run){
char *command = yon_debug_output("%s\n",set_user_config_command);
yon_debug_output("%s\n","Entered configuration");
yon_terminal_integrated_start(widgets->install_terminal,command);
g_mutex_lock(&main_config.install_mutex);
main_config.install_thread=1;
g_mutex_unlock(&main_config.install_mutex);
gtk_widget_show(widgets->install_terminal_window->Window);
} else {
yon_launch("ubconfig --source system get /");
yon_launch(ubinstall_dry_run_command);
}
return;
}
void *on_setup_system_configuration(void * data){ void *on_setup_system_configuration(void * data){
yon_debug_output("%s\n","Entered thread"); yon_debug_output("%s\n","Entered thread");
main_window *widgets = (main_window*)data; main_window *widgets = (main_window*)data;

@ -254,7 +254,11 @@ void on_reboot_accepted(main_window *widgets){
if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT){
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
if (main_config.install_thread){ if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread); g_signal_handlers_block_by_func(G_OBJECT(widgets->install_terminal),on_config_install_success,widgets);
gtk_widget_destroy(widgets->install_terminal);
widgets->install_terminal = NULL;
yon_install_terminal_recreate(widgets);
// pthread_cancel((pthread_t)main_config.install_thread);
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
} }
main_config.exit_accepted=1; main_config.exit_accepted=1;
@ -267,10 +271,23 @@ void on_reboot_accepted(main_window *widgets){
} }
} }
void yon_install_terminal_recreate(main_window *widgets){
widgets->install_terminal = vte_terminal_new();
gtk_box_pack_start(GTK_BOX(widgets->install_terminal_window->MainBox),widgets->install_terminal,1,1,0);
gtk_widget_show(widgets->install_terminal);
g_signal_connect(G_OBJECT(widgets->install_terminal),"child-exited",G_CALLBACK(on_config_install_success),widgets);
}
void on_exit_accepted(main_window *widgets){ void on_exit_accepted(main_window *widgets){
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
if (main_config.install_thread){ if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread); g_signal_handlers_block_by_func(G_OBJECT(widgets->install_terminal),on_config_install_success,widgets);
gtk_widget_destroy(widgets->install_terminal);
widgets->install_terminal = NULL;
yon_install_terminal_recreate(widgets);
// pthread_cancel((pthread_t)main_config.install_thread);
g_mutex_unlock(&main_config.install_mutex); g_mutex_unlock(&main_config.install_mutex);
} }
if (!main_config.configure_mode) if (!main_config.configure_mode)
@ -732,6 +749,9 @@ void yon_main_window_create(main_window *widgets){
widgets->NextInstallationSliderImage = yon_gtk_builder_get_widget(builder,"NextInstallationSliderImage"); widgets->NextInstallationSliderImage = yon_gtk_builder_get_widget(builder,"NextInstallationSliderImage");
widgets->PrevInstallationSliderImage = yon_gtk_builder_get_widget(builder,"PrevInstallationSliderImage"); widgets->PrevInstallationSliderImage = yon_gtk_builder_get_widget(builder,"PrevInstallationSliderImage");
widgets->install_terminal_window = yon_window_new();
widgets->install_terminal = vte_terminal_new();
widgets->network_connections = NULL; widgets->network_connections = NULL;
widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL); widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
@ -746,6 +766,12 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->db_lock_monitor),"changed",G_CALLBACK(yon_db_lock_update),widgets); g_signal_connect(G_OBJECT(widgets->db_lock_monitor),"changed",G_CALLBACK(yon_db_lock_update),widgets);
g_signal_connect(G_OBJECT(widgets->db_lock_monitor),"changed",G_CALLBACK(yon_db_unlock_update),widgets); g_signal_connect(G_OBJECT(widgets->db_lock_monitor),"changed",G_CALLBACK(yon_db_unlock_update),widgets);
} }
yon_gtk_widget_block_destruction(widgets->install_terminal_window->Window);
gtk_box_pack_start(GTK_BOX(widgets->install_terminal_window->MainBox),widgets->install_terminal,1,1,0);
gtk_widget_show(widgets->install_terminal);
g_signal_connect(G_OBJECT(widgets->install_terminal),"child-exited",G_CALLBACK(on_config_install_success),widgets);
g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets); g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets);
GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2"); GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2");

@ -856,6 +856,9 @@ typedef struct
GFileMonitor *db_lock_monitor; GFileMonitor *db_lock_monitor;
yon_window *install_terminal_window;
GtkWidget *install_terminal;
} main_window; } main_window;
enum ADVANCED_PART_TYPE enum ADVANCED_PART_TYPE
@ -1643,4 +1646,6 @@ void *yon_status_thread_update(main_window *widgets);
void yon_db_lock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,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); 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_install_success(GtkWidget *self, int state, main_window *widgets);
void on_config_terminal_save(main_window *widgets); void on_config_terminal_save(main_window *widgets);
void yon_install_terminal_recreate(main_window *widgets);
void on_config_terminal_setup_system_configuration(main_window *widgets);
Loading…
Cancel
Save