From 6d5524b52c5951d9cbe405f5ed555716c2d20d1f Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 19 Jul 2024 18:08:56 +0600 Subject: [PATCH] Saving added. Loading 50% done. No localisation --- ...om.ublinux.ubinstall-gtk.sync-symbolic.svg | 8 + source/ubinstall-gtk.c | 339 +++++++++++++++++- source/ubinstall-gtk.h | 29 +- source/ubl-strings.h | 5 + ubinstall-gtk.glade | 185 +++++++++- 5 files changed, 543 insertions(+), 23 deletions(-) create mode 100644 icons/actions/com.ublinux.ubinstall-gtk.sync-symbolic.svg diff --git a/icons/actions/com.ublinux.ubinstall-gtk.sync-symbolic.svg b/icons/actions/com.ublinux.ubinstall-gtk.sync-symbolic.svg new file mode 100644 index 0000000..e81e0f7 --- /dev/null +++ b/icons/actions/com.ublinux.ubinstall-gtk.sync-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 5a2b5a7..8b9af41 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -3,12 +3,280 @@ config main_config; //functions + +void _yon_saving_threaded(char *final_command); +void _yon_saving_threaded(char *final_command){ + FILE *file = popen(final_command,"r"); + int file_save; + config_str file_return = yon_config_load_file(file,&file_save); + pclose(file); + file_return = yon_char_parsed_append(file_return,&file_save,final_command); + char *result = yon_char_parsed_to_string(file_return,file_save,""); + yon_debug_output("%s\n",result); + free(result); +} + +char *yon_save_command_prepare(char *command, char *target){ + int size; + config_str parsed = yon_char_parse(command,&size," "); + free(parsed[2]); + parsed[2]=yon_char_new(target); + free(parsed[3]); + parsed[3]=yon_char_new("set"); + for (int i=5;iInstallationRadio),1); + page = YON_PAGE_INSTALL_COMMON; + } else if (strcmp(type,"next")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationNearRadio),1); + page = YON_PAGE_INSTALL_SEPARATE; + } else if (strcmp(type,"part")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationLinuxRadio),1); + page = YON_PAGE_INSTALL_SAME_PARTITION; + } else if (!strcmp(type,"grub_install")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationWindowsRadio),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->GrubInstallRadio),1); + page = YON_PAGE_OPTIONS_GRUB_INSTALL; + } else if (strcmp(type,"grub_update")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationWindowsRadio),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->GrubUpdateRadio),1); + page = YON_PAGE_OPTIONS_GRUB_UPDATE; + } else if (strcmp(type,"system_only")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationWindowsRadio),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->OSRadio),1); + page = YON_PAGE_OPTIONS_OS_ONLY; + } else if (strcmp(type,"data_only")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationWindowsRadio),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->UserDataOnlyRadio),1); + page = YON_PAGE_OPTIONS_USRDATA_ONLY; + } else if (strcmp(type,"custom")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->InstallationWindowsRadio),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->SeparateRadio),1); + page = YON_PAGE_OPTIONS_SEPARATE; + } + + char *device = config(AUTOINSTALL_DEVICE); + char *part = NULL; + if (page!=YON_PAGE_INSTALL_COMMON) + part = config(part_parameter); + + char *fs_type = config(part_type_parameter); + char *device_label = config(device_label_parameter); + char *format = config(device_format_parameter); + char *part_size = config(part_size_parameter); + + GtkListStore *device_list = widgets->DevicesList; + GtkListStore *part_list=widgets->PartitionsList; + GtkWidget *device_tree=NULL; + GtkWidget *part_tree=NULL; + switch (page){ + case YON_PAGE_INSTALL_COMMON:{ + device_tree = widgets->CommonInstallationDevicesTree; + } break; + case YON_PAGE_INSTALL_SEPARATE:{ + device_tree = widgets->InstallationNearSysDevicesTree; + part_tree = widgets->InstallationNearSysSectionTree; + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin),atof(part_size)); + if (part_size[strlen(part_size)-1]=='M') gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->InstallationNearSizeTypeSpin),0); + if (part_size[strlen(part_size)-1]=='G') gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->InstallationNearSizeTypeSpin),1); + if (part_size[strlen(part_size)-1]=='T') gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->InstallationNearSizeTypeSpin),2); + if (!strcmp(format,"no")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->NextInstallationFormatCheck),0); + else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->NextInstallationFormatCheck),1); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->NextInstallationFilesystemTypeCombo),fs_type); + gtk_entry_set_text(GTK_ENTRY(widgets->NextInstallationSectionNameEntry),device_label); + + } break; + case YON_PAGE_INSTALL_SAME_PARTITION:{ + device_tree = widgets->SamePlaceDeviceTree; + part_tree = widgets->SamePlacePartTree; + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->SameInstallationFilesystemTypeCombo),fs_type); + if (!strcmp(format,"no")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->SameInstallationFormatCheck),0); + else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->SameInstallationFormatCheck),1); + gtk_entry_set_text(GTK_ENTRY(widgets->SameInstallationSectionNameEntry),device_label); + } break; + case YON_PAGE_OPTIONS_GRUB_INSTALL:{ + device_tree = widgets->GrubInstallDevicesTree; + } break; + case YON_PAGE_OPTIONS_GRUB_UPDATE:{ + device_tree = widgets->GrubUpdateDevicesTree; + } break; + case YON_PAGE_OPTIONS_SEPARATE:{ + GtkTreeIter iter; + device_tree = widgets->SeparateDevicesTree; + part_tree = widgets->SeparateSysSectionTree; + for_iter(GTK_TREE_MODEL(device_list),&iter){ + char *cur_device; + gtk_tree_model_get(GTK_TREE_MODEL(device_list),&iter, 0,&cur_device,-1); + if (!strcmp(cur_device,device)){ + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(device_tree)),&iter); + break; + } + } + for_iter(GTK_TREE_MODEL(part_list),&iter){ + char *cur_part; + gtk_tree_model_get(GTK_TREE_MODEL(device_list),&iter, 0,&cur_part,-1); + if (!strcmp(cur_part,part)){ + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(part_tree)),&iter); + } + } + } break; + case YON_PAGE_OPTIONS_OS_ONLY:{ + device_tree = widgets->OSDevicesTree; + part_tree = widgets->OSSysSectionTree; + } break; + case YON_PAGE_OPTIONS_USRDATA_ONLY:{ + device_tree = widgets->UserdataDevicesTree; + part_tree = widgets->UserdataSysSectionTree; + } break; + } + + char *zone = config(zone_parameter); + char *system_locale = config(locale_parameter); + char *language = config(lang_parameter); + + char *kbmodel = config (xkbmodel_parameter); + char *optinos = config(xkboptions_parameter); + char *layout = config(xkblayout_parameter); + + char *user_name = config(user_name_parameter); + char *user_gecos = config(user_name_parameter); + char *user_password = config(user_name_parameter); + char *root_password = config(user_name_parameter); + char *autologin = config(user_name_parameter); + char *hostname = config(user_name_parameter); + +} + +void on_config_local_load(GtkWidget *,main_window *); +void on_config_local_load(GtkWidget *,main_window *){ + yon_load_proceed(YON_CONFIG_LOCAL); + main_config.load_mode=1; +} + +void on_config_global_load(GtkWidget *,main_window *); +void on_config_global_load(GtkWidget *,main_window *){ + yon_load_proceed(YON_CONFIG_GLOBAL); + main_config.load_mode=0; +} + +void on_config_custom_load(GtkWidget *,main_window *); +void on_config_custom_load(GtkWidget *,main_window *){ + yon_load_proceed(YON_CONFIG_CUSTOM); + main_config.load_mode=3; +} + +void on_config_global_local_save(GtkWidget *,main_window *widgets); +void on_config_global_local_save(GtkWidget *,main_window *widgets){ + yon_save_proceed(NULL,YON_CONFIG_BOTH); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); +} + +void on_config_local_save(GtkWidget *,main_window *widgets); +void on_config_local_save(GtkWidget *,main_window *widgets){ + yon_save_proceed("system",YON_CONFIG_LOCAL); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); + +} + +void on_config_global_save(GtkWidget *,main_window *widgets); +void on_config_global_save(GtkWidget *,main_window *widgets){ + yon_save_proceed("global",YON_CONFIG_GLOBAL); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); + +} + +void on_config_custom_save(GtkWidget *, main_window *widgets); +void on_config_custom_save(GtkWidget *, main_window *widgets){ + char *path = NULL; + // YON_CONFIG_TYPE type = YON_CONFIG_CUSTOM; + GtkWidget *dialog = gtk_file_chooser_dialog_new(TITLE_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,SAVE_LABEL,GTK_RESPONSE_ACCEPT,NULL); + textdomain(TITLE_LABEL); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_window_set_icon_name(GTK_WINDOW(dialog),yon_char_append("com.ublinux.",LocaleName)); + gtk_file_filter_add_pattern(filter,"*.ini"); + gtk_file_filter_set_name(filter, "*.ini"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); + int response = gtk_dialog_run(GTK_DIALOG(dialog)); + if (response == GTK_RESPONSE_ACCEPT){ + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + // char *directory = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog)); + if (!yon_char_is_empty(file)){ + if (!strstr(file,".ini")) file = yon_char_append(file,".ini"); + if (access(file,0)!=F_OK){ + char *command_creation = ubconfig_file_create(file); + int a = system(command_creation); + if (access(file,0)!=F_OK||a){ + yon_ubl_status_box_render(CUSTOM_CONFIG_CREATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + return; + } + } + } + path = yon_char_unite("'",file,"'",NULL); + free(file); + gtk_widget_destroy(dialog); + } else { + gtk_widget_destroy(dialog); + return; + } + yon_save_proceed(path,YON_CONFIG_CUSTOM); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETED); +} void yon_open_browser(GtkWidget *, char *link); void yon_open_browser(GtkWidget *, char *link){ @@ -228,6 +496,7 @@ void config_init(){ main_config.install_complete=0; main_config.save_done=0; main_config.configure_mode=0; + main_config.load_mode=-1; } void on_configuration_mode_switch(GtkWidget *self); @@ -308,7 +577,6 @@ gboolean on_image_slide(void *data){ return 1; } -char* yon_debug_output(char *pattern,char*text); char* yon_debug_output(char *pattern,char*text){ if (main_config.debug_mode){ printf(pattern,text); @@ -405,6 +673,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets); void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *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); @@ -412,7 +681,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ 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); + gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,1); yon_switch_page_render(widgets,0); } break; @@ -455,6 +724,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ 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: case YON_PAGE_COMPLETION:{ @@ -469,10 +739,27 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ main_config.save_done=0; 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.libublsettingsui-gtk3.sync-symbolic",GTK_ICON_SIZE_BUTTON); + 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_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); + main_config.install_complete=0; + main_config.save_done=0; + 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: @@ -485,6 +772,12 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){ 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); } } } @@ -607,7 +900,7 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ switch (page){ case YON_PAGE_WELCOME:{ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_LICENCE); - // gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0); + gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0); } break; case YON_PAGE_SECTIONS:{ //sections @@ -1102,6 +1395,14 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SECTIONS); break; + case YON_PAGE_CONFIGURE_END:{ + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_USERS); + } break; + + case YON_PAGE_COMPLETED:{ + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_USERS); + } break; + default:{ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page-1); } @@ -1466,6 +1767,17 @@ main_window *yon_main_window_complete(){ widgets->UserdataDevicesTree = yon_gtk_builder_get_widget(builder,"UserdataDevicesTree"); widgets->UserdataSysSectionTree = yon_gtk_builder_get_widget(builder,"UserdataSysSectionTree"); + widgets->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton"); + + widgets->LoadGlobalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadGlobalConfigurationMenuItem"); + widgets->LoadLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem"); + widgets->LoadExternalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadExternalConfigurationMenuItem"); + + widgets->SaveGlobalLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveGlobalLocalConfigurationMenuItem"); + widgets->SaveGlobalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveGlobalConfigurationMenuItem"); + widgets->SaveLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveLocalConfigurationMenuItem"); + widgets->SaveExternalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveExternalConfigurationMenuItem"); + widgets->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList")); widgets->LanguagesFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LanguagesFilter")); widgets->LayoutsFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LayoutsFilter")); @@ -1473,6 +1785,15 @@ main_window *yon_main_window_complete(){ widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList")); widgets->PartitionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PartitionsList")); + g_signal_connect(G_OBJECT(widgets->LoadGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); + g_signal_connect(G_OBJECT(widgets->LoadLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); + g_signal_connect(G_OBJECT(widgets->LoadExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); + + g_signal_connect(G_OBJECT(widgets->SaveGlobalLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); + g_signal_connect(G_OBJECT(widgets->SaveExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets); + g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets); g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 4eff327..dcd435f 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -135,6 +135,16 @@ NULL #define full_log_path "/var/log/ubinstall.log" +#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get [autoinstall] AUTOINSTALL[installer_lang] AUTOINSTALL[install_type] AUTOINSTALL[device] AUTOINSTALL[part] AUTOINSTALL[part_size] AUTOINSTALL[part_label] AUTOINSTALL[part_fs_type] AUTOINSTALL[part_format] UTOINSTALL[locale] AUTOINSTALL[lang] AUTOINSTALL[zone] AUTOINSTALL[user_name] AUTOINSTALL[user_gecos] AUTOINSTALL[user_password] AUTOINSTALL[root_password] AUTOINSTALL[autologin] AUTOINSTALL[xkbmodel] AUTOINSTALL[xkblayout] AUTOINSTALL[xkbvariant] AUTOINSTALL[xkboptions] AUTOINSTALL[hostname] AUTOINSTALL[modules] AUTOINSTALL[modules_extra]",NULL) +#define config_get_local_command "ubconfig --source system get [autoinstall] AUTOINSTALL[installer_lang] AUTOINSTALL[install_type] AUTOINSTALL[device] AUTOINSTALL[part] AUTOINSTALL[part_size] AUTOINSTALL[part_label] AUTOINSTALL[part_fs_type] AUTOINSTALL[part_format] UTOINSTALL[locale] AUTOINSTALL[lang] AUTOINSTALL[zone] AUTOINSTALL[user_name] AUTOINSTALL[user_gecos] AUTOINSTALL[user_password] AUTOINSTALL[root_password] AUTOINSTALL[autologin] AUTOINSTALL[xkbmodel] AUTOINSTALL[xkblayout] AUTOINSTALL[xkbvariant] AUTOINSTALL[xkboptions] AUTOINSTALL[hostname] AUTOINSTALL[modules] AUTOINSTALL[modules_extra]" +#define config_get_global_command yon_char_new("ubconfig --source global get [autoinstall] AUTOINSTALL[installer_lang] AUTOINSTALL[install_type] AUTOINSTALL[device] AUTOINSTALL[part] AUTOINSTALL[part_size] AUTOINSTALL[part_label] AUTOINSTALL[part_fs_type] AUTOINSTALL[part_format] UTOINSTALL[locale] AUTOINSTALL[lang] AUTOINSTALL[zone] AUTOINSTALL[user_name] AUTOINSTALL[user_gecos] AUTOINSTALL[user_password] AUTOINSTALL[root_password] AUTOINSTALL[autologin] AUTOINSTALL[xkbmodel] AUTOINSTALL[xkblayout] AUTOINSTALL[xkbvariant] AUTOINSTALL[xkboptions] AUTOINSTALL[hostname] AUTOINSTALL[modules] AUTOINSTALL[modules_extra]") +#define config_get_default_command "" + +#define config_get_global_only_parameters "" +#define config_get_local_only_parameters "" + +#define ubconfig_file_create(target) yon_char_unite("ubconfig --target \"",target,"\" create",NULL) + typedef char* string; string version_application; @@ -182,6 +192,7 @@ typedef struct { int password_min_length; int save_done; + int load_mode; int install_complete; int debug_mode; @@ -201,6 +212,17 @@ typedef struct { GtkListStore *AdditionalSoftwareList; GtkListStore *PartitionsList; + GtkWidget *LoadGlobalConfigurationMenuItem; + GtkWidget *LoadLocalConfigurationMenuItem; + GtkWidget *LoadExternalConfigurationMenuItem; + + GtkWidget *SaveGlobalLocalConfigurationMenuItem; + GtkWidget *SaveGlobalConfigurationMenuItem; + GtkWidget *SaveLocalConfigurationMenuItem; + GtkWidget *SaveExternalConfigurationMenuItem; + + GtkWidget *SaveButton; + GtkWidget *MainWindow; GtkWidget *StatusBox; @@ -392,4 +414,9 @@ void NewFunction(ubinstall_language_window *window, GtkBuilder *builder); ubinstall_keyboard_window *yon_ubinstall_keyboard_new(); password_window *yon_password_new(); -void on_password_accept(GtkWidget *self, dictionary *dict); \ No newline at end of file +void on_password_accept(GtkWidget *self, dictionary *dict); + +char* yon_debug_output(char *pattern,char*text); + +char *yon_save_command_prepare(char *command, char *target); +void yon_interface_update(main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index c53c39f..6153559 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -6,7 +6,10 @@ #define WELCOME_LABEL _("Welcome to UBLinux installation") #define WELCOME_BOTTOM_LABEL _("This program will ask you few questions\nand help you install UBLinux on your computer") +#define OPEN_LABEL _("Open") + #define KEYBOARD_TITLE_LABEL _("Keyboard layout") + #define CUSTOM_CONFIG_CREATION_ERROR_LABEL _("New configuration file creation failed") #define CANCEL_LABEL _("Cancel") #define BACK_LABEL _("Back") @@ -138,3 +141,5 @@ #define ERROR_LABEL _("Error has occured while installation process") #define LOG_VIEW_LABEL _("Log exploration") + #define SAVE_LABEL _("Save") + #define LOAD_LABEL _("Load") diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 5ced464..0ef282d 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -72,7 +72,7 @@ - 100 + 999999 16 1 10 @@ -165,6 +165,40 @@ True False + False + + + True + False + Load global configuration + + + + + + True + False + Load local configuration + + + + + + True + False + Load from specific file + + + + True @@ -201,6 +235,54 @@ + + True + False + False + + + True + False + Save configuration + + + + + + True + False + Save to global configuration + + + + + + True + False + Save to local configuration + + + + + + True + False + Save to specific file + + + + + 800 500 @@ -482,7 +564,6 @@ agreement 5 5 left - False True @@ -2485,9 +2566,10 @@ or continue working in the UBLinux Live environment. True False - Installation completion + Completion + @@ -2500,7 +2582,6 @@ or continue working in the UBLinux Live environment. - True False @@ -2509,6 +2590,41 @@ or continue working in the UBLinux Live environment. 1 + + + True + False + end + Success + + + + + + + True + True + 2 + + + + + True + False + start + You have successfully saved configuration. + center + True + + + + + + True + True + 3 + + 11 @@ -3332,15 +3448,15 @@ installed. False 1 - ext3 - ext4 - fat16 - fat32 - exfat - riserfs - udf - xfs - zfs + ext3 + ext4 + fat16 + fat32 + exfat + riserfs + udf + xfs + zfs @@ -7000,6 +7116,7 @@ separately into the selected partition. + True True False True @@ -7058,6 +7175,48 @@ separately into the selected partition. 1 + + + True + False + True + menu3 + + + True + False + + + True + False + Save + + + False + True + 0 + + + + + True + False + pan-down-symbolic + + + False + True + 1 + + + + + + + end + 2 + +