#include "ubinstall-gtk.h" enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){ if (!yon_page_save(widgets,page)){ return -1; } switch (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_KERNEL : YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_KERNEL; break; case YON_PAGE_KERNEL: return YON_PAGE_SOFTWARE; break; case YON_PAGE_SOFTWARE: return YON_PAGE_REGION; break; case YON_PAGE_REGION: return YON_PAGE_KEYBOARD; break; case YON_PAGE_KEYBOARD: return YON_PAGE_USERS; break; case YON_PAGE_USERS: return YON_PAGE_STARTUP; break; case YON_PAGE_STARTUP: return YON_PAGE_BOOTLOADER; break; case YON_PAGE_BOOTLOADER: return YON_PAGE_NETWORK; break; case YON_PAGE_NETWORK: return main_config.configure_mode? YON_PAGE_CONFIGURE_END : YON_PAGE_INSTALLATION; break; case YON_PAGE_INSTALL_COMMON: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_INSTALL_SEPARATE: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_INSTALL_SAME_PARTITION: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_INSTALL_ADVANCED: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; 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_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; default:return YON_PAGE_WELCOME; } return YON_PAGE_WELCOME; } enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){ switch (page){ case YON_PAGE_WELCOME: return YON_PAGE_WELCOME; break; case YON_PAGE_LICENCE: return YON_PAGE_WELCOME; break; case YON_PAGE_SECTIONS: return YON_PAGE_LICENCE; break; case YON_PAGE_OS_COMPONENTS: return YON_PAGE_SECTIONS; break; case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_SECTIONS; break; case YON_PAGE_KERNEL: return YON_PAGE_SECTIONS; break; case YON_PAGE_SOFTWARE: return YON_PAGE_KERNEL; break; case YON_PAGE_REGION: return YON_PAGE_SOFTWARE; break; case YON_PAGE_KEYBOARD: return YON_PAGE_REGION; break; case YON_PAGE_USERS: return YON_PAGE_KEYBOARD; break; case YON_PAGE_STARTUP: return YON_PAGE_USERS; break; case YON_PAGE_BOOTLOADER: return YON_PAGE_STARTUP; break; case YON_PAGE_NETWORK: return YON_PAGE_BOOTLOADER; break; case YON_PAGE_INSTALLATION: return YON_PAGE_INSTALLATION; break; case YON_PAGE_CONFIGURE_END: return YON_PAGE_CONFIGURE_END; break; case YON_PAGE_INSTALL_COMMON: return YON_PAGE_SECTIONS; break; case YON_PAGE_INSTALL_SEPARATE: return YON_PAGE_SECTIONS; break; case YON_PAGE_INSTALL_SAME_PARTITION: return YON_PAGE_SECTIONS; break; case YON_PAGE_INSTALL_ADVANCED: return YON_PAGE_SECTIONS; break; case YON_PAGE_INSTALL_RECOVERY: return YON_PAGE_SECTIONS; break; case YON_PAGE_RECOVERY_GRUB_INSTALL: return YON_PAGE_INSTALL_RECOVERY; break; case YON_PAGE_RECOVERY_GRUB_UPDATE: return YON_PAGE_INSTALL_RECOVERY; break; case YON_PAGE_RECOVERY_OS_ONLY: return YON_PAGE_INSTALL_RECOVERY; break; case YON_PAGE_RECOVERY_USRDATA_ONLY: return YON_PAGE_INSTALL_RECOVERY; break; default:return YON_PAGE_WELCOME; } return YON_PAGE_WELCOME; } enum YON_PAGES yon_page_get_current(GtkNotebook *target){ enum YON_PAGES page = gtk_notebook_get_current_page(target); return page; } void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ enum YON_PAGES page = yon_page_get_current(GTK_NOTEBOOK(widgets->Notebook)); switch(page){ case YON_PAGE_WELCOME: gtk_widget_hide(widgets->BackButton); gtk_widget_set_sensitive(widgets->NextButton,1); break; case YON_PAGE_LICENCE: gtk_widget_show(widgets->BackButton); gtk_widget_set_sensitive(widgets->BackButton,1); gtk_widget_set_sensitive(widgets->NextButton,1); gtk_widget_set_sensitive(widgets->CancelInstallButton,1); break; case YON_PAGE_INSTALLATION: gtk_widget_set_sensitive(widgets->NextButton,0); gtk_widget_set_sensitive(widgets->BackButton,0); break; case YON_PAGE_KERNEL: gtk_widget_set_sensitive(widgets->BackButton,0); break; case YON_PAGE_COMPLETED: case YON_PAGE_INSTALL_ERROR: case YON_PAGE_CONFIGURE_SAVE: case YON_PAGE_CONFIGURE_END: case YON_PAGE_COMPLETION: gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL); gtk_widget_set_sensitive(widgets->BackButton,0); break; default: gtk_widget_set_sensitive(widgets->BackButton,1); gtk_widget_set_sensitive(widgets->NextButton,1); gtk_widget_set_sensitive(widgets->CancelInstallButton,1); break; } } int yon_page_save(main_window *widgets, enum YON_PAGES page){ switch (page){ case YON_PAGE_OS_COMPONENTS: return yon_os_components_save(widgets); break; case YON_PAGE_KERNEL: return yon_kernel_save(widgets); break; case YON_PAGE_SOFTWARE: return yon_software_save(widgets); break; case YON_PAGE_REGION: return yon_region_save(widgets); break; case YON_PAGE_KEYBOARD: return yon_keyboard_save(widgets); break; case YON_PAGE_USERS: return yon_users_save(widgets); break; case YON_PAGE_STARTUP: return yon_startup_save(widgets); break; case YON_PAGE_BOOTLOADER: return yon_bootloader_save(widgets); break; case YON_PAGE_NETWORK: return yon_network_save(widgets); break; case YON_PAGE_INSTALL_COMMON: return yon_install_common_save(widgets); break; case YON_PAGE_INSTALL_SEPARATE: return yon_install_separate_save(widgets); break; case YON_PAGE_INSTALL_SAME_PARTITION: return yon_install_same_partition_save(widgets); break; case YON_PAGE_INSTALL_ADVANCED: return yon_install_advanced_save(widgets); break; case YON_PAGE_RECOVERY_GRUB_INSTALL: return yon_grub_install_save(widgets); break; case YON_PAGE_RECOVERY_GRUB_UPDATE: return yon_grub_update_save(widgets); break; case YON_PAGE_RECOVERY_OS_ONLY: return yon_install_options_save(widgets->OSDevicesTree,widgets->OSSysSectionTree,"system_only",widgets); break; case YON_PAGE_RECOVERY_USRDATA_ONLY: return yon_install_options_save(widgets->UserdataDevicesTree,widgets->UserdataSysSectionTree,"data_only",widgets); break; case YON_PAGE_INSTALLATION_BEGIN: return yon_installation_start(widgets); break; default:return 1; } return 1; } void yon_configuration_mode_check(main_window *widgets){ enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); if (page==YON_PAGE_WELCOME){ gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,1); } else { gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0); } if (page == YON_PAGE_CONFIGURE_END){ gtk_widget_show(widgets->SaveButton); } else { gtk_widget_hide(widgets->SaveButton); } } void yon_page_update(main_window *widgets){ yon_navigation_buttons_set_sensetiveness(widgets); yon_switch_page_render(widgets); yon_configuration_mode_check(widgets); } enum YON_PAGES yon_sections_get_next_page(main_window *widgets){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationRadio))) return YON_PAGE_INSTALL_COMMON; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationNearRadio))) return YON_PAGE_INSTALL_SEPARATE; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationLinuxRadio))) return YON_PAGE_INSTALL_SAME_PARTITION; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationWindowsRadio))) return YON_PAGE_INSTALL_ADVANCED; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->InstallationOptionsRadio))) return YON_PAGE_INSTALL_RECOVERY; return YON_PAGE_SECTIONS; } enum YON_PAGES yon_recovery_get_next(main_window *widgets){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->GrubInstallRadio))) return YON_PAGE_RECOVERY_GRUB_INSTALL; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->GrubUpdateRadio))) return YON_PAGE_RECOVERY_GRUB_UPDATE; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->OSRadio))) return YON_PAGE_RECOVERY_OS_ONLY; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->UserDataOnlyRadio))) return YON_PAGE_RECOVERY_USRDATA_ONLY; return YON_PAGE_SECTIONS; } void on_page_next_clicked(GtkWidget *, main_window *widgets){ enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); page = yon_page_get_next(widgets,page); if ((int)page!=-1){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page); } yon_page_update(widgets); } void on_page_prev_clicked(GtkWidget *, main_window *widgets){ enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); page = yon_page_get_prev(page); if ((int)page!=-1){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page); } yon_page_update(widgets); } // void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ // if (widgets){}; // switch(page){ // case YON_PAGE_WELCOME: { // gtk_widget_hide(widgets->SaveButton); // gtk_widget_set_sensitive(widgets->CancelInstallButton,0); // gtk_widget_set_sensitive(widgets->BackButton,0); // gtk_widget_set_sensitive(widgets->NextButton,1); // textdomain(LocaleName); // gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); // gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),CANCEL_LABEL); // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))),"com.ublinux.ubinstall-gtk.arrow-right-symbolic",GTK_ICON_SIZE_BUTTON); // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->CancelInstallButton))),"com.ublinux.ubinstall-gtk.circle-exit-symbolic",GTK_ICON_SIZE_BUTTON); // gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,1); // yon_switch_page_render(widgets,0); // } break; // // case YON_PAGE_LICENCE:{ // gtk_widget_set_sensitive(widgets->CancelInstallButton,1); // gtk_widget_set_sensitive(widgets->BackButton,1); // yon_switch_page_render(widgets,1); // } break; // // case YON_PAGE_REGION: { // yon_image_resize_from_container(GTK_IMAGE(widgets->RegionImage), widgets->regions_original); // yon_switch_page_render(widgets,4); // } break; // // case YON_PAGE_KEYBOARD: { // // yon_switch_page_render(widgets,5); // yon_image_resize_from_container(GTK_IMAGE(widgets->KeyboardImage), widgets->keyboard_original); // } break; // // case YON_PAGE_OS_COMPONENTS: // case YON_PAGE_SOFTWARE: // case YON_PAGE_INSTALLATION_BEGIN: // yon_switch_page_render(widgets,3); // // break; // case YON_PAGE_INSTALLATION:{ // yon_switch_page_render(widgets,3); // gtk_widget_set_sensitive(widgets->BackButton,0); // if ((!main_config.configure_mode)) // gtk_widget_set_sensitive(widgets->CancelInstallButton,0); // if (!main_config.progress_thread&&!main_config.configure_mode) // main_config.progress_thread = gdk_threads_add_timeout(500,(GSourceFunc)yon_installation_progress_update,widgets); // // if (!main_config.slider_thread&&!main_config.configure_mode) // main_config.slider_thread = g_timeout_add(5000,(GSourceFunc)on_image_slide,widgets); // gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress)); // } break; // // case YON_PAGE_USERS: // yon_switch_page_render(widgets,6); // gtk_widget_set_sensitive(widgets->NextButton,1); // gtk_widget_hide(widgets->SaveButton); // break; // // case YON_PAGE_INSTALL_ERROR:{ // on_summary_log_view((GtkWidget*)NULL,widgets); // // yon_switch_page_render(widgets,7); // gtk_widget_set_sensitive(widgets->BackButton,0); // gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress)); // gtk_widget_hide(widgets->InstallationLabel); // gtk_widget_hide(widgets->PackageInstallationLabel); // gtk_widget_set_sensitive(widgets->NextButton,1); // gtk_widget_set_sensitive(widgets->CancelInstallButton,1); // g_mutex_lock(&main_config.install_mutex); // main_config.install_complete=0; // g_mutex_unlock(&main_config.install_mutex); // main_config.save_done=0; // textdomain(LocaleName); // gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL); // gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))), // "com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON); // // } break; // case YON_PAGE_COMPLETION:{ // yon_switch_page_render(widgets,7); // gtk_widget_set_sensitive(widgets->BackButton,0); // gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress)); // gtk_widget_hide(widgets->InstallationLabel); // gtk_widget_hide(widgets->PackageInstallationLabel); // gtk_widget_set_sensitive(widgets->NextButton,1); // gtk_widget_set_sensitive(widgets->CancelInstallButton,1); // g_mutex_lock(&main_config.install_mutex); // main_config.install_complete=0; // g_mutex_unlock(&main_config.install_mutex); // main_config.save_done=0; // textdomain(LocaleName); // gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL); // gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))), // "com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON); // } // gtk_widget_hide(gtk_widget_get_parent(widgets->InstallationProgress)); // gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress)); // break; // // case YON_PAGE_COMPLETED:{ // yon_switch_page_render(widgets,7); // gtk_widget_set_sensitive(widgets->BackButton,1); // gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress)); // gtk_widget_hide(widgets->InstallationLabel); // gtk_widget_hide(widgets->PackageInstallationLabel); // gtk_widget_set_sensitive(widgets->NextButton,0); // gtk_widget_set_sensitive(widgets->CancelInstallButton,1); // g_mutex_lock(&main_config.install_mutex); // main_config.install_complete=0; // g_mutex_unlock(&main_config.install_mutex); // main_config.save_done=0; // textdomain(LocaleName); // gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))), // "com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON); // // }break; // // case YON_PAGE_SECTIONS: // case YON_PAGE_INSTALL_COMMON: // case YON_PAGE_INSTALL_SEPARATE: // case YON_PAGE_INSTALL_SAME_PARTITION: // case YON_PAGE_INSTALL_RECOVERY: // case YON_PAGE_OPTIONS_GRUB_INSTALL: // case YON_PAGE_OPTIONS_GRUB_UPDATE: // case YON_PAGE_OPTIONS_SEPARATE: // case YON_PAGE_OPTIONS_SEPARATE_USRDATA: // case YON_PAGE_OPTIONS_OS_ONLY: // case YON_PAGE_OPTIONS_USRDATA_ONLY: { // yon_switch_page_render(widgets,2); // } break; // case YON_PAGE_CONFIGURE_END: { // gtk_widget_set_sensitive(widgets->BackButton,1); // gtk_widget_set_sensitive(widgets->NextButton,0); // gtk_widget_set_sensitive(widgets->CancelInstallButton,1); // gtk_widget_show(widgets->SaveButton); // } // } // }