You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubinstall-gtk/source/ubinstall-gtk-page-switch.c

377 lines
18 KiB

#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_KERNEL_ADDON; break;
case YON_PAGE_KERNEL_ADDON: 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_KERNEL_ADDON: return YON_PAGE_KERNEL; break;
case YON_PAGE_SOFTWARE: return YON_PAGE_KERNEL_ADDON; 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);
// }
// }
// }