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);
if (main_config.install_complete){
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 {
g_mutex_unlock(&main_config.install_mutex);
}
@ -627,7 +628,7 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets){
yon_page_update(widgets);
}
#include <signal.h>
// #include <signal.h>
void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
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->title=WARNING_TITLE_LABEL;
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);
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);

@ -156,21 +156,29 @@ enum INSTALL_TYPE yon_ubl_get_install_mode(){
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){
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);
if (!main_config.install_complete){
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);
// 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){
@ -178,14 +186,9 @@ void on_config_terminal_save(main_window *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);
yon_terminal_integrated_start(widgets->install_terminal,command);
gtk_widget_show(widgets->install_terminal_window->Window);
main_config.install_thread = 1;
} else {
yon_launch("ubconfig --source system get /");
}
@ -214,7 +217,8 @@ void *on_config_save(void *data){
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);
// on_setup_system_configuration(widgets);
on_config_terminal_setup_system_configuration(widgets);
// on_page_next_clicked(NULL,widgets);
}
} else {
@ -223,6 +227,25 @@ void *on_config_save(void *data){
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){
yon_debug_output("%s\n","Entered thread");
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){
g_mutex_lock(&main_config.install_mutex);
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);
}
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){
g_mutex_lock(&main_config.install_mutex);
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);
}
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->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->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_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);
GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2");

@ -856,6 +856,9 @@ typedef struct
GFileMonitor *db_lock_monitor;
yon_window *install_terminal_window;
GtkWidget *install_terminal;
} main_window;
enum ADVANCED_PART_TYPE
@ -1644,3 +1647,5 @@ void yon_db_lock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_w
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);
void yon_install_terminal_recreate(main_window *widgets);
void on_config_terminal_setup_system_configuration(main_window *widgets);
Loading…
Cancel
Save