diff --git a/gresource.xml b/gresource.xml index fab2075..7c8474c 100644 --- a/gresource.xml +++ b/gresource.xml @@ -7,6 +7,7 @@ ubinstall-gtk-about.glade ubinstall-gtk-documentation.glade ubinstall-gtk-log-view.glade + ubinstall-gtk-warning.glade ubinstall-gtk.css diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 6442a1f..a3e0cae 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -64,6 +64,7 @@ set(DEPENDFILES ../ubinstall-gtk-about.glade ../ubinstall-gtk-documentation.glade ../ubinstall-gtk-log-view.glade + ../ubinstall-gtk-warning.glade ../gresource.xml ../ubinstall-gtk.css ../modules.csv diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 3d61a77..4b27e00 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -812,7 +812,7 @@ void config_init(){ main_config.debug_mode=0; main_config.slider_thread=0; main_config.config_save_thread=NULL; - main_config.install_thread=NULL; + main_config.install_thread=0; main_config.progress_thread=0; main_config.install_complete=0; main_config.save_done=0; @@ -820,6 +820,7 @@ void config_init(){ main_config.load_mode=-1; main_config.log_progress_buzy=0; main_config.log_end=0; + main_config.exit_accepted=0; } void on_configuration_mode_switch(GtkWidget *self); @@ -912,7 +913,7 @@ char* yon_debug_output(char *pattern,char*text){ void *on_config_save(void *data); void *on_config_save(void *data){ main_window *widgets = (main_window*)data; - if (!main_config.install_complete){ + int size=0; config_str parameters = yon_config_get_all(&size); // main_config.install_thread=(GThread*)0x1; @@ -925,7 +926,7 @@ void *on_config_save(void *data){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_ERROR); }; free(command); - main_config.install_thread=NULL; + main_config.install_thread=0; main_config.install_complete=1; yon_debug_output("Install set to: %s\n",yon_char_from_int(main_config.install_complete)); yon_debug_output("Save state: %s\n",yon_char_from_int(main_config.save_done)); @@ -933,7 +934,6 @@ void *on_config_save(void *data){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETION); } main_config.config_save_thread=NULL; - } pthread_exit(NULL); } @@ -1694,7 +1694,14 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ }break; case YON_PAGE_INSTALLATION_BEGIN:{ - pthread_create(main_config.install_thread,NULL,on_config_save,widgets); + if (!main_config.install_thread){ + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_t tid; + + pthread_create(&tid,&attr,on_config_save,widgets); + memcpy(&main_config.install_thread,&tid,sizeof(pthread_t)); + } gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION); } break; @@ -2086,26 +2093,36 @@ void on_gparted_open(){ yon_launch_app_with_arguments(open_gparted_command,NULL); } -gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets); -gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ - GtkWidget *dialog = gtk_dialog_new_with_buttons(TITLE_LABEL,GTK_WINDOW(widgets->MainWindow),0,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL); - - GtkWidget *box = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); - GtkWidget *HeadLabel = gtk_label_new(EXIT_WARNING_LABEL); - gtk_widget_show(HeadLabel); - gtk_box_pack_start(GTK_BOX(box),HeadLabel,0,0,5); - - int resp = gtk_dialog_run(GTK_DIALOG(dialog)); - if (resp == GTK_RESPONSE_ACCEPT){ - if (main_config.install_thread) - pthread_cancel(*main_config.install_thread); - return 0; - - } else { - gtk_widget_destroy(dialog); - } - return 1; -} +// gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets); +// void on_exit_accepted(GtkWidget *,main_window *widgets); +// void on_exit_accepted(GtkWidget *,main_window *widgets){ +// if (main_config.install_thread){ +// pthread_cancel((pthread_t)main_config.install_thread); +// } +// main_config.exit_accepted=1; +// g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"destroy",widgets->MainWindow,NULL); +// } + +// gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ +// if (!main_config.exit_accepted){ +// if (widgets){}; +// confirmation_window *window = malloc(sizeof(confirmation_window)); +// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_confirmation); +// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); +// window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); +// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); +// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),widgets); +// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); +// gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow)); +// gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL); +// gtk_window_set_icon_name(GTK_WINDOW(window->Window),icon_path); +// gtk_widget_show(window->Window); + +// return 1; +// } + +// return 0; +// } /**yon_main_window_complete(main_window *widgets) * [EN] @@ -2280,7 +2297,7 @@ main_window *yon_main_window_complete(){ widgets->SameFSTypeSensitiveCheck = yon_gtk_builder_get_widget(builder,"SameFSTypeSensitiveCheck"); widgets->SameLabelSensitiveCheck = yon_gtk_builder_get_widget(builder,"SameLabelSensitiveCheck"); - 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"); gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle"); gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop"); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 07319ea..8cfba08 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -26,6 +26,7 @@ #define glade_path_log_view "/com/ublinux/ui/ubinstall-gtk-log-view.glade" #define ui_glade_path_about "/com/ublinux/ui/ubinstall-gtk-about.glade" #define ui_glade_path_documentation "/com/ublinux/ui/ubinstall-gtk-documentation.glade" +#define glade_path_confirmation "/com/ublinux/ui/ubinstall-gtk-warning.glade" #define CssPath "/com/ublinux/css/ubinstall-gtk.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) @@ -200,13 +201,14 @@ typedef struct { guint slider_thread; int install_mode; GThread *config_save_thread; - pthread_t *install_thread; + unsigned long install_thread; guint progress_thread; int configure_mode; int log_progress_buzy; int autologin_default; int format_default; int log_end; + int exit_accepted; } config; typedef struct { diff --git a/ubinstall-gtk-warning.glade b/ubinstall-gtk-warning.glade new file mode 100644 index 0000000..704a8d9 --- /dev/null +++ b/ubinstall-gtk-warning.glade @@ -0,0 +1,146 @@ + + + + + + 450 + 250 + False + False + 450 + dialog-question-symbolic + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + 10 + + + True + False + + + True + False + center + 20 + 20 + dialog-question-symbolic + 6 + + + False + True + 0 + + + + + True + False + vertical + 5 + + + True + False + center + Are you sure want to exit and +interrupt installation process? + + + + True + True + 1 + + + + + + True + True + 1 + + + + + + True + True + 0 + + + + + + + True + False + + + True + False + Warning + + + + + + + + Cancel + True + True + True + image8 + + + + + + Accept + True + True + True + image9 + + + + end + 1 + + + + + + + True + False + com.ublinux.libublsettingsui-gtk3.cancel-symbolic + + + True + False + com.ublinux.libublsettingsui-gtk3.accept-symbolic + +