From 10b822f7687a191a9a66b4b25d4858dd49227b0b Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 26 Feb 2026 18:30:08 +0600 Subject: [PATCH] WIP advanced installation rework --- source/ubinstall-gtk-advanced.c | 2144 ++++++++++++++------------ source/ubinstall-gtk-installation.c | 8 +- source/ubinstall-gtk-page-switch.c | 2 +- source/ubinstall-gtk.c | 6 +- source/ubinstall-gtk.h | 67 +- ubinstall-gtk-keyboard-layouts.glade | 6 +- ubinstall-gtk.glade | 3 + 7 files changed, 1225 insertions(+), 1011 deletions(-) diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c index 0df81b3..8ba3949 100644 --- a/source/ubinstall-gtk-advanced.c +++ b/source/ubinstall-gtk-advanced.c @@ -3,958 +3,1217 @@ #define toggled_icon_name "com.ublinux.libublsettingsui-gtk3.toggled-symbolic" #define untoggled_icon_name "com.ublinux.libublsettingsui-gtk3.untoggled-symbolic" -advanced_section *yon_advanced_section_new(); -void yon_advanced_section_remove(); - -int sections_size=0; -advanced_section *sections[2] = {NULL}; - -advanced_section *yon_advanced_section_new(){ - if (sections_size>=2) return NULL; - advanced_section *section = malloc(sizeof(advanced_section)); - memset(section,0,sizeof(advanced_section)); - if (!sections_size){ - section->sys_section=1; - section->user_section=1; - } else { - section->sys_section=0; - section->user_section=1; - sections[0]->sys_section=1; - sections[0]->user_section=0; - } - return section; -} - -void yon_advanced_section_remove_all(){ - if (sections[0]){ - free(sections[0]); - sections[0]=NULL; - } - if (sections[1]){ - free(sections[1]); - sections[1]=NULL; - } - sections_size=0; -} - -void yon_advanced_section_remove_by_name(char *part){ - int pos = yon_advanced_section_get(part); - switch(pos){ - case 0: - if (sections[0]){ - free(sections[0]); - if (sections[1]){ - sections[0]=sections[1]; - sections[1]=NULL; - } else { - sections[0]=NULL; - } - sections_size--; - } - break; - case 1: - if (sections[1]){ - free(sections[1]); - sections[1]=NULL; - sections_size--; - } - break; - default: return; - } -} -void yon_advanced_section_remove(advanced_partition *part){ - int pos = yon_advanced_section_get_by_part(part); - switch(pos){ - case 0: - if (sections[0]){ - free(sections[0]); - if (sections[1]){ - sections[0]=sections[1]; - sections[1]=NULL; - } else { - sections[0]=NULL; - } - sections_size--; - } - break; - case 1: - if (sections[1]){ - free(sections[1]); - sections[1]=NULL; - sections_size--; - } - break; - default:return; - } -} +// advanced_section *yon_advanced_section_new(); +// void yon_advanced_section_remove(); + +// int sections_size=0; +// advanced_section *sections[2] = {NULL}; + +// advanced_section *yon_advanced_section_new(){ +// if (sections_size>=2) return NULL; +// advanced_section *section = malloc(sizeof(advanced_section)); +// memset(section,0,sizeof(advanced_section)); +// if (!sections_size){ +// section->sys_section=1; +// section->user_section=1; +// } else { +// section->sys_section=0; +// section->user_section=1; +// section->sys_section=1; +// section->user_section=0; +// } +// return section; +// } + +// void yon_advanced_section_remove_all(){ +// if (sections[0]){ +// free(sections[0]); +// sections[0]=NULL; +// } +// if (sections[1]){ +// free(sections[1]); +// sections[1]=NULL; +// } +// sections_size=0; +// } + +// void yon_advanced_section_remove_by_name(char *part){ +// int pos = yon_advanced_section_get(part); +// switch(pos){ +// case 0: +// if (sections[0]){ +// free(sections[0]); +// if (sections[1]){ +// sections[0]=sections[1]; +// sections[1]=NULL; +// } else { +// sections[0]=NULL; +// } +// sections_size--; +// } +// break; +// case 1: +// if (sections[1]){ +// free(sections[1]); +// sections[1]=NULL; +// sections_size--; +// } +// break; +// default: return; +// } +// } +// void yon_advanced_section_remove(advanced_part_widgets *part){ +// int pos = yon_advanced_section_get_by_part(part); +// switch(pos){ +// case 0: +// if (sections[0]){ +// free(sections[0]); +// if (sections[1]){ +// sections[0]=sections[1]; +// sections[1]=NULL; +// } else { +// sections[0]=NULL; +// } +// sections_size--; +// } +// break; +// case 1: +// if (sections[1]){ +// free(sections[1]); +// sections[1]=NULL; +// sections_size--; +// } +// break; +// default:return; +// } +// } + +// int yon_advanced_section_get_by_part(advanced_part_widgets *part){ +// if (!part) return -1; +// if (sections_size>0&§ions[0]->partition_widgets==part){ +// return 0; +// } else if (sections_size>1&§ions[1]->partition_widgets==part){ +// return 1; +// } +// return -1; +// } + +// int yon_advanced_section_get(char *partition){ +// if (yon_char_is_empty(partition)) return -1; +// if (sections_size>0&&!strcmp(sections[0]->part_source==PART_SOURCE_PART?sections[0]->partition:sections[0]->device,partition)){ +// return 0; +// } else if (sections_size>1&&!strcmp(sections[1]->part_source==PART_SOURCE_PART?sections[1]->partition:sections[1]->device,partition)){ +// return 1; +// } +// return -1; +// } + +// void yon_advanced_partition_set_from_section(advanced_part_widgets *part, advanced_section *section){ +// if (part&§ion){ +// gtk_label_set_text(GTK_LABEL(part->SectionLabel),section->part_source==PART_SOURCE_PART?section->partition:section->device); +// part->part = yon_char_new(section->partition); +// part->device = yon_char_new(section->device); +// if (!yon_char_is_empty(part->part)) part->part_type = ADVANCED_PART_NEW; +// else part->part_type = ADVANCED_PART_EXISTING; +// if (section->format){ +// gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),section->format); +// if (section->size){ +// gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),section->size); +// gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),yon_get_size_get_from_letter(section->size_letter)-1); +// } +// if (section->part_label){ +// gtk_entry_set_text(GTK_ENTRY(part->PartLabelEntry),section->part_label); +// } +// if (section->fs_label) +// gtk_entry_set_text(GTK_ENTRY(part->FileSystemLabelEntry),section->fs_label); +// if (!yon_char_is_empty(section->fs_type)){ +// gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->FileSystemTypeCombo),section->fs_type); +// } +// if (!yon_char_is_empty(section->encryption)){ +// gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->EncryptionCombo),section->encryption); +// gtk_entry_set_text(GTK_ENTRY(part->EncryptionEntry),section->encryption_password); +// } +// } +// } +// } + +// void yon_advanced_update(main_window *widgets){ +// yon_advanced_partition_clear(widgets); +// int virtual_found = 0; +// for (int i=0;ipartition_widgets) sections[i]->partition_widgets = NULL; +// sections[i]->partition_widgets = part; +// g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove),widgets); +// g_signal_connect(G_OBJECT(part->SystemSectionToggle),"clicked",G_CALLBACK(on_advanced_section_toggled),widgets); +// g_signal_connect(G_OBJECT(part->UserDataSectionToggle),"clicked",G_CALLBACK(on_advanced_section_toggled),widgets); +// // g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(on_advanced_size_changed),widgets); +// if (i==0){ +// gtk_widget_set_sensitive(part->SystemSectionToggle,0); +// gtk_widget_set_sensitive(part->UserDataSectionToggle,0); +// GtkWidget *SystemImage = gtk_button_get_image(GTK_BUTTON(part->SystemSectionToggle)); +// GtkWidget *UserImage = gtk_button_get_image(GTK_BUTTON(part->UserDataSectionToggle)); +// gtk_image_set_from_icon_name(GTK_IMAGE(SystemImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON); +// gtk_image_set_from_icon_name(GTK_IMAGE(UserImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON); +// } +// yon_advanced_partition_set_from_section(part,sections[i]); +// // yon_advanced_set_max_size_from_partition(part,widgets); +// gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); +// g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); +// if (!virtual_found&>k_combo_box_set_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),sections[i]->part_source==PART_SOURCE_PART?sections[i]->partition:sections[i]->device)){ +// virtual_found=1; +// } +// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); + +// part->part_type = ADVANCED_PART_EXISTING; +// } +// if (!virtual_found||!sections_size) { +// g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); +// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); +// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); +// } +// yon_advanced_section_update(widgets); +// GtkTreeIter itar; +// for_iter(GTK_TREE_MODEL(widgets->PartitionsList),&itar){ +// int status; +// char *target; +// gtk_tree_model_get(GTK_TREE_MODEL(widgets->PartitionsList),&itar,0,&target,7,&status,-1); +// if (!((sections_size>0&&!strcmp(target,sections[0]->part_source==PART_SOURCE_PART?sections[0]->partition:sections[0]->device))||(sections_size>1&&!strcmp(target,sections[1]->part_source==PART_SOURCE_PART?sections[1]->partition:sections[1]->device)))){ +// gtk_list_store_set(widgets->PartitionsList,&itar,7,0,-1); +// } +// } +// if (sections_size>=2){ +// gtk_widget_hide(widgets->AdvancedAddButton); +// } else { +// gtk_widget_show(widgets->AdvancedAddButton); + +// } +// } + +// void on_advanced_partition_create(GtkWidget *, main_window *widgets){ +// int found = 0; +// GtkTreeIter iter, *last_unvalid = NULL; +// GtkTreeModel *model; +// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){ +// char *target; +// int active; +// gtk_tree_model_get(GTK_TREE_MODEL(widgets->DevicesList),&iter,0,&target,5,&active,-1); +// if (active){ +// if (!yon_advanced_section_get(target)){ +// last_unvalid = gtk_tree_iter_copy(&iter); +// } else { +// found=1; +// if (sections_size==2) return; +// advanced_section *section = yon_advanced_section_new(); +// section->part_source = PART_SOURCE_DEVICE; +// section->device = target; +// section->partition = NULL; +// sections[sections_size]=section; +// sections_size++; +// } +// } +// } +// if (!found&&last_unvalid){ +// char *target; +// int active; +// gtk_tree_model_get(GTK_TREE_MODEL(widgets->DevicesList),last_unvalid,0,&target,5,&active,-1); + +// if (sections_size==2) return; +// advanced_section *section = yon_advanced_section_new(); +// section->part_source = PART_SOURCE_DEVICE; +// section->device = target; +// section->partition = NULL; +// sections[sections_size]=section; +// sections_size++; +// } +// yon_advanced_update(widgets); +// } + +// void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets){ +// GtkTreeIter iter; +// if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PartitionsList),&iter,path)){ +// char *target, *device; +// int status; +// gtk_tree_model_get(GTK_TREE_MODEL(widgets->PartitionsList),&iter,0,&target,7,&status,9,&device,-1); +// gtk_list_store_set(widgets->DevicesList,&iter,7,!status,-1); +// if (!status){ +// if (sections_size==2) return; +// advanced_section *section = yon_advanced_section_new(); +// section->part_source = PART_SOURCE_PART; +// section->device = NULL; +// section->partition = target = device; +// sections[sections_size]=section; +// sections_size++; +// } else { +// yon_advanced_section_remove_by_name(target); +// } +// } +// yon_advanced_update(widgets); + +// } + +// void yon_advanced_device_choose(main_window *widgets, const char *device){ +// if (yon_char_is_empty(device)) return; +// GtkTreeIter iter; +// GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); +// for_iter(model, &iter){ +// char *target; +// gtk_tree_model_get(model,&iter,0,&target,-1); +// if (!yon_char_is_empty(target)&&strstr(device,target)){ +// char *path = gtk_tree_model_get_string_from_iter(model,&iter); +// g_signal_emit_by_name(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",path,NULL); +// } +// } +// } + +// void yon_advanced_part_choose(main_window *widgets, const char *part){ +// if (yon_char_is_empty(part)) return; +// GtkTreeIter iter; +// GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); +// for_iter(model, &iter){ +// char *target; +// gtk_tree_model_get(model,&iter,0,&target,-1); +// if (!yon_char_is_empty(target)&&strstr(part,target)){ +// char *path = gtk_tree_model_get_string_from_iter(model,&iter); +// g_signal_emit_by_name(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",path,NULL); +// } +// } +// } + +// void yon_install_advanced_init(main_window *widgets){ +// yon_advanced_partition_clear(widgets); +// g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); +// gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->AdvancedVirtualDeviceCombo)); +// gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->AdvancedVirtualDeviceCombo),NO_LABEL); +// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); +// int size; +// config_str vmf_file = yon_resource_open_file(vfs_list_path,&size); +// for (int i=1;iAdvancedVirtualDeviceCombo),parsed[2],parsed[0]); +// yon_char_parsed_free(parsed,parsed_size); +// } +// yon_char_parsed_free(vmf_file,size); +// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); +// char *device = config(device_parameter); +// char *parts = config(part_parameter); +// char *part_size = config(part_size_parameter); +// char *part_label = config(part_label_parameter); +// char *part_fs_type = config(part_fs_type_parameter); +// char *part_fs_label = config(part_fs_label_parameter); +// char *part_crypt = config(part_crypt_parameter); +// char *part_format = config(part_format_parameter); +// char *boot = config(boot_parameter); +// char *swap = config(swap_parameter); +// char *swap_size = config(swap_size_parameter); +// if (yon_char_is_empty(device)&&yon_char_is_empty(parts)) return; +// { +// int size; +// config_str device_parsed = yon_char_parse(device,&size,","); +// if (size>0&&!yon_char_is_empty(device_parsed[0])){ +// yon_advanced_device_choose(widgets,device_parsed[0]); +// while(gtk_events_pending()) gtk_main_iteration(); +// sections[0] = yon_advanced_section_new(); +// sections_size++; +// on_advanced_partition_create(NULL,widgets); +// sections[0]->device=device_parsed[0]; +// }; +// if (size>1&&!yon_char_is_empty(device_parsed[1])){ +// yon_advanced_device_choose(widgets,device_parsed[1]); +// while(gtk_events_pending()) gtk_main_iteration(); +// sections[1] = yon_advanced_section_new(); +// on_advanced_partition_create(NULL,widgets); +// sections_size++; +// sections[1]->device=device_parsed[1]; +// } +// if (size) free(device_parsed); +// } +// { +// int size; +// config_str part_parsed = yon_char_parse(parts,&size,","); +// if (size>0&&!yon_char_is_empty(part_parsed[0])){ +// yon_advanced_device_choose(widgets,part_parsed[0]); +// yon_advanced_part_choose(widgets,part_parsed[0]); +// sections[0] = yon_advanced_section_new(); +// while(gtk_events_pending()) gtk_main_iteration(); +// sections[0]->partition=part_parsed[0]; +// }; +// if (size>1&&!yon_char_is_empty(part_parsed[1])){ +// yon_advanced_device_choose(widgets,part_parsed[1]); +// yon_advanced_part_choose(widgets,part_parsed[1]); +// sections[1] = yon_advanced_section_new(); +// while(gtk_events_pending()) gtk_main_iteration(); +// sections[1]->device=part_parsed[1]; +// } +// if (size) free(part_parsed); +// } +// { +// if (!yon_char_is_empty(part_size)){ +// int size; +// config_str parsed = yon_char_parse(part_size,&size,","); +// if (size>0&&!yon_char_is_empty(parsed[0])){ +// sections[0]->size = atol(parsed[0]); +// sections[0]->size_letter = parsed[0][strlen(parsed[0])-1]; +// if (size>1&&!yon_char_is_empty(parsed[1])){ + +// sections[1]->size = atol(parsed[1]); +// sections[1]->size_letter = parsed[1][strlen(parsed[1])-1]; +// } +// } +// free(parsed); +// } +// if (!yon_char_is_empty(part_label)){ +// int size; +// config_str parsed = yon_char_parse(part_label,&size,","); +// if (size>0&&!yon_char_is_empty(parsed[0])){ +// sections[0]->part_label = parsed[0]; +// if (size>1&&!yon_char_is_empty(parsed[1])){ +// sections[1]->part_label = parsed[1]; +// } +// } +// free(parsed); +// } +// if (!yon_char_is_empty(part_fs_type)){ +// int size; +// config_str parsed = yon_char_parse(part_fs_type,&size,","); +// if (size>0&&!yon_char_is_empty(parsed[0])){ +// sections[0]->fs_type = parsed[0]; +// if (size>1&&!yon_char_is_empty(parsed[1])){ +// sections[1]->fs_type = parsed[1]; +// } +// } +// free(parsed); +// } +// if (!yon_char_is_empty(part_fs_label)){ +// int size; +// config_str parsed = yon_char_parse(part_fs_label,&size,","); +// if (size>0&&!yon_char_is_empty(parsed[0])){ +// sections[0]->fs_label = parsed[0]; +// if (size>1&&!yon_char_is_empty(parsed[1])){ +// sections[1]->fs_label = parsed[1]; +// } +// } +// free(parsed); +// } +// if (!yon_char_is_empty(part_crypt)){ +// int size; +// config_str parsed = yon_char_parse(part_crypt,&size,","); +// if (size>0&&!yon_char_is_empty(parsed[0])){ +// sections[0]->encryption = parsed[0]; +// if (size>1&&!yon_char_is_empty(parsed[1])){ +// sections[1]->encryption = parsed[1]; +// } +// } +// free(parsed); +// } +// if (!yon_char_is_empty(part_format)){ +// int size; +// config_str parsed = yon_char_parse(part_format,&size,","); +// if (size>0&&!yon_char_is_empty(parsed[0])){ +// if (!strcmp(parsed[0],"yes")){ +// sections[0]->format = 2; +// } else if (!strcmp(parsed[0],"no")){ +// sections[0]->format = 1; +// } +// if (size>1&&!yon_char_is_empty(parsed[1])){ +// if (!strcmp(parsed[1],"yes")){ +// sections[1]->format = 2; +// } else if (!strcmp(parsed[1],"no")){ +// sections[1]->format = 1; +// } +// } +// } +// free(parsed); +// } +// if (!yon_char_is_empty(boot)){ + +// } +// if (!yon_char_is_empty(swap)){ -int yon_advanced_section_get_by_part(advanced_partition *part){ - if (!part) return -1; - if (sections_size>0&§ions[0]->partition_widgets==part){ - return 0; - } else if (sections_size>1&§ions[1]->partition_widgets==part){ - return 1; - } - return -1; -} +// } +// if (!yon_char_is_empty(swap_size)){ -int yon_advanced_section_get(char *partition){ - if (yon_char_is_empty(partition)) return -1; - if (sections_size>0&&!strcmp(sections[0]->part_source==PART_SOURCE_PART?sections[0]->partition:sections[0]->device,partition)){ - return 0; - } else if (sections_size>1&&!strcmp(sections[1]->part_source==PART_SOURCE_PART?sections[1]->partition:sections[1]->device,partition)){ - return 1; - } - return -1; -} - -void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section){ - if (part&§ion){ - gtk_label_set_text(GTK_LABEL(part->SectionLabel),section->part_source==PART_SOURCE_PART?section->partition:section->device); - part->part = yon_char_new(section->partition); - part->device = yon_char_new(section->device); - if (!yon_char_is_empty(part->part)) part->part_type = ADVANCED_PART_NEW; - else part->part_type = ADVANCED_PART_EXISTING; - if (section->format){ - gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),section->format); - if (section->size){ - gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),section->size); - gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),yon_get_size_get_from_letter(section->size_letter)-1); - } - if (section->part_label){ - gtk_entry_set_text(GTK_ENTRY(part->PartLabelEntry),section->part_label); - } - if (section->fs_label) - gtk_entry_set_text(GTK_ENTRY(part->FileSystemLabelEntry),section->fs_label); - if (!yon_char_is_empty(section->fs_type)){ - gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->FileSystemTypeCombo),section->fs_type); - } - if (!yon_char_is_empty(section->encryption)){ - gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->EncryptionCombo),section->encryption); - gtk_entry_set_text(GTK_ENTRY(part->EncryptionEntry),section->encryption_password); - } - } - } -} +// } + +// } +// yon_advanced_update(widgets); +// } + +// void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){ +// GtkTreeIter iter; +// GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); + +// int chosen = 0; +// chosen = yon_advanced_get_part_size(widgets); + +// gtk_tree_model_get_iter_from_string(model,&iter,path); +// int status; +// char *target_part, *device; +// gulong part_size; +// gtk_tree_model_get(model,&iter,0,&target_part,5,&part_size,7,&status,9,&device,-1); + +// if (!status){ +// if (chosen<2){ +// gtk_list_store_set(widgets->PartitionsList,&iter,7,1,-1); +// chosen++; +// advanced_section *section = yon_advanced_section_new(); +// section->part_source = PART_SOURCE_PART; +// section->partition = target_part; +// section->device = NULL; +// section->full_part_size = part_size; +// sections[sections_size]=section; +// sections_size++; +// } +// } else { +// yon_advanced_section_remove_by_name(target_part); +// gtk_list_store_set(widgets->PartitionsList,&iter,7,0,-1); +// } +// yon_advanced_update(widgets); +// } + +// void yon_advanced_parts_update(main_window *widgets){ +// int size; +// config_str partitions; +// partitions = yon_config_load(yon_debug_output("%s\n",get_parts_and_devices_command),&size); +// for (int i=0;iDevicesList); +// GtkTreeIter iter; +// for_iter (model,&iter){ +// char *disk_path; +// int status; +// gtk_tree_model_get(model,&iter,0,&disk_path,5,&status,-1); +// if (!status) continue; + +// for (int i=0;i2){ +// char sizemod='\0'; +// capacity_long = atol(parsed[2]); + +// char *temp = yon_char_from_double(yon_size_long_convert_automatic(capacity_long,&sizemod)); +// capacity = yon_char_append_c(temp,sizemod); +// free(temp); +// } +// if (parsed_size>7&&!yon_char_is_empty(parsed[7])){ +// char sizemod='\0'; +// free_space_long = capacity_long-atol(parsed[7]); +// char *temp = yon_char_from_double(yon_size_long_convert_automatic(free_space_long,&sizemod)); +// free_space = yon_char_append_c(temp,sizemod); +// free(temp); +// } +// if (parsed_size>3){ +// fs_type = parsed[3]; +// } +// if (parsed_size>4){ +// label = parsed[4]; +// } + +// GtkTreeIter itar; +// gtk_list_store_append(widgets->PartitionsList,&itar); +// gtk_list_store_set(widgets->PartitionsList,&itar,0,name,1,capacity,2,free_space,3,fs_type,4,label,5,capacity_long,6,free_space_long,8,1,9,disk_path,-1); +// } +// yon_char_parsed_free(parsed,parsed_size); +// } +// } +// } +// yon_char_parsed_free(partitions,size); +// } + +// void yon_advanced_set_max_size_from_partition(advanced_part_widgets *part, main_window *widgets){ +// char *cur_name = part->part_type == ADVANCED_PART_EXISTING?part->device:part->part; +// GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); +// GtkTreeIter iter; +// long selected_size; + +// for_iter(model,&iter){ +// char *target; +// gtk_tree_model_get(model,&iter,part->part_type == ADVANCED_PART_EXISTING?9:0,&target,-1); +// if (!strcmp(target,cur_name)){ +// gtk_tree_model_get(model,&iter,6,&selected_size,-1); +// if (!selected_size){ +// gtk_tree_model_get(model,&iter,5,&selected_size,-1); +// } +// if (selected_size){ +// GtkAdjustment *adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(part->SizeSpin)); +// const char *sizemod = gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->SizeCombo)); +// double new_size = yon_size_long_convert_to_mod(selected_size,sizemod[0]); +// gtk_adjustment_set_upper(adj,new_size); +// gdouble old_value = gtk_adjustment_get_value(adj); +// if (old_value>new_size){ +// gtk_adjustment_set_value(adj,new_size); +// } +// } +// } +// } +// } + +// void on_advanced_size_changed(GtkWidget *,main_window *){ +// // advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); +// // yon_advanced_set_max_size_from_partition(part,widgets); +// } + +// void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){ +// gtk_list_store_clear(widgets->PartitionsList); +// yon_advanced_section_remove_all(); +// GtkTreeIter iter; +// GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); +// // chosen = yon_advanced_get_part_size(widgets); + +// if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ +// int status; +// char *target; +// gtk_tree_model_get(model,&iter,0,&target,5,&status,-1); +// if (!status){ // checks +// gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1); + +// } else { // unchecks +// gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1); +// for_iter (model,&iter){ +// gtk_list_store_set(widgets->DevicesList,&iter,6,1,-1); +// } +// } +// } +// int chosen_amount = 0; +// for_iter(model,&iter){ +// int status; +// gtk_tree_model_get(model,&iter,5,&status,-1); +// if (status)chosen_amount++; +// } +// // gtk_widget_set_sensitive(widgets->AdvancedVirtualDeviceCombo,chosen_amount>=2); +// // if (chosen) gtk_widget_set_sensitive(widgets->AdvancedAddButton,1); +// // else gtk_widget_set_sensitive(widgets->AdvancedAddButton,0); +// yon_advanced_parts_update(widgets); +// yon_advanced_update(widgets); +// } + +// void on_advanced_password_clicked(GtkWidget *, advanced_part_widgets *part){ +// yon_password_window *window = yon_password_open(GTK_ENTRY(part->EncryptionEntry)); +// gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo)); +// gtk_widget_hide(window->HashBox); +// gtk_widget_hide(window->NoEncriptionCheck); +// } + +// void yon_advanced_partition_clear(main_window *widgets){ +// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); +// GList *iter; +// for (iter=list;iter;iter=iter->next){ +// advanced_part_widgets *part = g_object_get_data(G_OBJECT(iter->data),"advanced_part_widgets"); +// gtk_widget_destroy(GTK_WIDGET(iter->data)); +// free(part); +// } +// } + +// int yon_advanced_get_part_size(main_window *widgets){ +// int size = 0; +// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); +// size = g_list_length(list); +// g_list_free(list); +// return size; +// } + +// void yon_advanced_section_update_section(advanced_part_widgets *part,GtkWidget *cur_toggle,main_window *widgets){ +// int systoggle = cur_toggle == part->SystemSectionToggle; +// advanced_section *section = sections[yon_advanced_section_get_by_part(part)]; +// g_signal_handlers_block_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets); +// gboolean active = systoggle?section->sys_section:section->user_section; +// gtk_widget_set_sensitive(cur_toggle,!active); +// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_toggle),active); +// g_signal_handlers_unblock_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets); +// GtkWidget *compare_image = gtk_button_get_image(GTK_BUTTON(cur_toggle)); +// gtk_image_set_from_icon_name(GTK_IMAGE(compare_image),!active?untoggled_icon_name:toggled_icon_name,GTK_ICON_SIZE_BUTTON); +// } + +// void yon_advanced_section_update(main_window *widgets){ +// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); +// GList *iter; +// for (iter=list;iter;iter=iter->next){ +// advanced_part_widgets *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_part_widgets"); +// GtkWidget *cur_toggle = compare_part->SystemSectionToggle; +// yon_advanced_section_update_section(compare_part,cur_toggle,widgets); +// cur_toggle = compare_part->UserDataSectionToggle; +// yon_advanced_section_update_section(compare_part,cur_toggle,widgets); +// } +// } + +// void on_advanced_section_toggled(GtkWidget *self, main_window *widgets){ +// advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); +// int pos = yon_advanced_section_get_by_part(part); +// if (self == part->SystemSectionToggle){ +// sections[pos]->sys_section = 1; +// if (sections[!pos]&§ions[pos]->user_section){ +// sections[pos]->user_section=0; +// sections[!pos]->user_section=1; +// } +// } else { +// sections[pos]->user_section = 1; +// if (sections[!pos]&§ions[pos]->sys_section){ +// sections[pos]->sys_section=0; +// sections[!pos]->sys_section=1; +// } +// } +// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); +// GList *iter; +// for (iter=list;iter;iter=iter->next){ +// advanced_part_widgets *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_part_widgets"); +// if (part != compare_part) { +// if (self == part->SystemSectionToggle){ +// sections[yon_advanced_section_get_by_part(compare_part)]->sys_section = 0; +// } else { +// sections[yon_advanced_section_get_by_part(compare_part)]->user_section = 0; +// } +// } +// } +// yon_advanced_section_update(widgets); +// } + +// int yon_advanced_save(main_window *widgets){ +// yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"custom"); +// char *devices[2] = {NULL}; +// char *parts[2] = {NULL}; +// char *part_size[2] = {NULL}; +// char *part_label[2] = {NULL}; +// char *fs_type[2] = {NULL}; +// char *fs_label[2] = {NULL}; +// char *encryption[2] = {NULL}; +// char *format[2] = {NULL}; +// if (!sections_size){ +// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); +// return 0; +// } +// advanced_section *cur_section = sections[0]->sys_section?sections[0]:sections[1]; +// if (cur_section->part_source == PART_SOURCE_VIRTUAL){ + +// char *device = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo)); +// int size; +// config_str vfs_file = yon_resource_open_file(vfs_list_path,&size); +// config_str cur_device = NULL; +// for (int i=0;iDevicesList); +// int active_devices=0; +// for_iter(model,&iter){ +// int status; +// gtk_tree_model_get(model,&iter,5,&status,-1); +// if (status) active_devices++; +// } +// if (atoi(cur_device[3])>active_devices){ +// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),COUNT_INVALID_LABEL(cur_device[3]),5,BACKGROUND_IMAGE_INFO_TYPE); +// yon_ubl_status_highlight_incorrect(widgets->AdvancedVirtualDeviceCombo); +// yon_char_parsed_free(cur_device,4); +// return 0; +// } + +// if (atoi(cur_device[4])%active_devices!=0){ +// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),PARITY_INVALID_LABEL(cur_device[4]),5,BACKGROUND_IMAGE_INFO_TYPE); +// yon_ubl_status_highlight_incorrect(widgets->AdvancedVirtualDeviceCombo); +// yon_char_parsed_free(cur_device,4); +// return 0; +// } +// } +// } + +// if (cur_section->format==2){ +// format[0]="yes"; +// } else if (cur_section->format == 1){ +// format[0]="no"; +// } else { +// format[0]=NULL; +// } +// if (!yon_char_is_empty(cur_section->partition)){ +// if (!yon_char_is_empty(cur_section->partition)){ +// parts[0]=cur_section->partition; +// } else { +// parts[0]=""; +// } +// } else { +// devices[0]=cur_section->device; +// } +// if (cur_section->user_section){ +// if (!yon_char_is_empty(cur_section->device)){ +// if (!yon_char_is_empty(cur_section->partition)){ +// parts[1]=cur_section->partition; +// } else { +// parts[1]=""; +// } +// } else { +// devices[1]=cur_section->device; +// } +// } + +// if (cur_section->format==2){ +// if (cur_section->size&&yon_size_long_convert_to_mod(cur_section->full_part_size,cur_section->size_letter)>cur_section->size){ + +// char *size_str = yon_char_from_long(cur_section->size); +// char *sz_str = yon_char_append_c(size_str,cur_section->size_letter); +// part_size[0]=sz_str; +// } else { +// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOT_ENOUGH_SPACE_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); +// return 0; +// } +// if (!yon_char_is_empty(cur_section->part_label)){ +// part_label[0]=cur_section->part_label; +// } +// if (!yon_char_is_empty(cur_section->fs_type)){ +// fs_type[0]=cur_section->fs_type; +// } +// if (!yon_char_is_empty(cur_section->fs_label)){ +// fs_label[0]=cur_section->fs_label; +// } +// } +// if (sections_size>1){ +// cur_section = sections[0]->sys_section?sections[1]:sections[0]; + +// if (cur_section->format==2){ +// format[1]="yes"; +// } else if (cur_section->format==1){ +// format[1]="no"; +// } else { +// format[1] = NULL; +// } + +// devices[1]=cur_section->device; +// if (!yon_char_is_empty(cur_section->partition)){ +// parts[1]=cur_section->partition; +// } else { +// parts[1]=""; +// } + +// if (cur_section->format==2){ +// if (cur_section->size){ +// char *size_str = yon_char_from_long(cur_section->size); +// char *sz_str = yon_char_append_c(size_str,cur_section->size_letter); +// part_size[1]=sz_str; +// } +// if (!yon_char_is_empty(cur_section->part_label)){ +// part_label[1]=cur_section->part_label; +// } +// if (!yon_char_is_empty(cur_section->fs_type)){ +// fs_type[1]=cur_section->fs_type; +// } +// if (!yon_char_is_empty(cur_section->fs_label)){ +// fs_label[1]=cur_section->fs_label; +// } +// if (!yon_char_is_empty(cur_section->encryption)){ +// char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL); +// encryption[1]=encrypt_str; +// } +// } +// } + +// if (devices[0]||devices[1]){ +// char *devices_str = yon_char_parsed_to_string_full(devices,2,","); +// yon_config_register(device_parameter,device_parameter_command,devices_str); +// } +// if (!yon_char_is_empty(parts[0])||!yon_char_is_empty(parts[1])){ +// char *parts_str = yon_char_parsed_to_string_full(parts,2,","); +// yon_config_register(part_parameter,part_parameter_command,parts_str); +// } else { +// yon_config_remove_by_key(part_parameter); +// } +// if (part_size[0]||part_size[1]){ +// char *part_size_str = yon_char_parsed_to_string_full(part_size,2,","); +// yon_config_register(part_size_parameter,part_size_parameter_command,part_size_str); +// } else { +// yon_config_remove_by_key(part_size_parameter); +// } +// if (part_label[0]||part_label[1]){ +// char *part_label_str = yon_char_parsed_to_string_full(part_label,2,","); +// yon_config_register(part_label_parameter,part_label_parameter_command,part_label_str); + +// } else { +// yon_config_remove_by_key(part_label_parameter); +// } +// if (fs_type[0]||fs_type[1]){ +// char *fs_type_str = yon_char_parsed_to_string_full(fs_type,2,","); +// yon_config_register(part_fs_type_parameter,part_fs_type_parameter_command,fs_type_str); + +// } else { +// yon_config_remove_by_key(part_fs_type_parameter); +// } +// if (fs_label[0]||fs_label[1]){ +// char *fs_label_str = yon_char_parsed_to_string_full(fs_label,2,","); +// yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label_str); + +// } else { +// yon_config_remove_by_key(part_fs_label_parameter); +// } +// if (encryption[0]||encryption[1]){ +// char *encryption_str = yon_char_parsed_to_string_full(encryption,2,","); +// yon_config_register(part_crypt_parameter,part_crypt_parameter_command,encryption_str); + +// } else { +// yon_config_remove_by_key(part_crypt_parameter); +// } +// if (format[0]||format[1]){ +// char *format_str = yon_char_parsed_to_string_full(format,2,","); +// yon_config_register(part_format_parameter,part_format_parameter_command,format_str); + +// } else { +// yon_config_remove_by_key(part_format_parameter); +// } +// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){ +// char *boot = NULL; +// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))){ +// yon_char_append_element(boot,"bios","+"); +// } +// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))){ +// yon_char_append_element(boot,"efi","+"); + +// } +// if (!yon_char_is_empty(boot)){ +// yon_config_register(boot_parameter,boot_parameter_command,boot); +// } else { +// yon_config_remove_by_key(boot_parameter); +// } +// } else { +// yon_config_remove_by_key(boot_parameter); +// } +// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){ +// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){ +// yon_config_register(swap_parameter,swap_parameter_command,"auto"); + +// } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){ +// yon_config_register(swap_parameter,swap_parameter_command,"yes"); +// yon_config_register(swap_size_parameter,swap_parameter_command,"ram"); + +// } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapFixedSwitch))){ +// yon_config_register(swap_parameter,swap_parameter_command,"yes"); +// long swap_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)); +// int size_letter = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapFixedSizeSwitch)); +// char *swap_str = yon_char_from_long(swap_size); +// char *size_final = yon_char_unite(swap_str,size_letter?"G":"M",NULL); +// yon_config_register(swap_size_parameter,swap_parameter_command,size_final); +// } else { +// yon_config_remove_by_key(swap_parameter); +// yon_config_remove_by_key(swap_size_parameter); +// } +// } +// char *parameters = yon_config_get_all_info(); +// yon_debug_output("%s\n",parameters); +// return 1; +// } + + +// void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_part_widgets *part){ +// advanced_section *section = sections[yon_advanced_section_get_by_part(part)]; +// if (self == part->SizeCombo||self == part->SizeSpin){ +// section->size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(part->SizeSpin)); +// int size_id = gtk_combo_box_get_active(GTK_COMBO_BOX(part->SizeCombo)); +// section->size_letter = *yon_size_get_mod(size_id>-1?size_id:0); +// } else if (self == part->PartLabelEntry){ +// section->part_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->PartLabelEntry))); +// } else if (self == part->FileSystemTypeCombo){ +// if (!gtk_combo_box_get_active(GTK_COMBO_BOX(part->FileSystemTypeCombo))){ +// section->fs_type = NULL; +// } else { +// GList *list = gtk_container_get_children(GTK_CONTAINER(part->FileSystemTypeCombo)); +// section->fs_type = yon_char_new(gtk_entry_get_text(GTK_ENTRY(list->data))); +// g_list_free(list); +// } +// } else if (self == part->FileSystemLabelEntry){ +// section->fs_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->FileSystemLabelEntry))); +// } else if (self == part->EncryptionCombo||self == part->EncryptionEntry){ +// section->encryption = yon_char_new(gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->EncryptionCombo))); +// section->encryption_password = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->EncryptionEntry))); +// } else if (self == part->FormatCombo){ +// section->format = gtk_combo_box_get_active(GTK_COMBO_BOX(part->FormatCombo)); +// } +// } + +// void on_format_changed(GtkWidget *self, advanced_part_widgets *part){ +// int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self)); +// switch (active){ +// case 0: +// case 1: gtk_revealer_set_reveal_child(GTK_REVEALER(part->FormatRevealer),0); +// break; +// case 2: gtk_revealer_set_reveal_child(GTK_REVEALER(part->FormatRevealer),1); +// } +// yon_advanced_part_parameter_changed(self, part); +// } + +// advanced_part_widgets *yon_advanced_partition_new(){ +// advanced_part_widgets *part = new(advanced_part_widgets); +// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_advanced_part); +// yon_scroll_block_for_builder(builder); +// part->MainBox = yon_gtk_builder_get_widget(builder,"MainBox"); +// part->SectionLabel = yon_gtk_builder_get_widget(builder,"SectionLabel"); +// part->SystemSectionToggle = yon_gtk_builder_get_widget(builder,"SystemSectionToggle"); +// part->UserDataSectionToggle = yon_gtk_builder_get_widget(builder,"UserDataSectionToggle"); +// part->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton"); +// part->FormatCombo = yon_gtk_builder_get_widget(builder,"FormatCombo"); +// part->SizeSpin = yon_gtk_builder_get_widget(builder,"SizeSpin"); +// part->SizeCombo = yon_gtk_builder_get_widget(builder,"SizeCombo"); +// part->PartLabelEntry = yon_gtk_builder_get_widget(builder,"PartLabelEntry"); +// part->FileSystemTypeCombo = yon_gtk_builder_get_widget(builder,"FileSystemTypeCombo"); +// part->FileSystemLabelEntry = yon_gtk_builder_get_widget(builder,"FileSystemLabelEntry"); +// part->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo"); +// part->EncryptionEntry = yon_gtk_builder_get_widget(builder,"EncryptionEntry"); +// part->EncryptionButton = yon_gtk_builder_get_widget(builder,"EncryptionButton"); +// part->FormatRevealer = yon_gtk_builder_get_widget(builder,"FormatRevealer"); +// part->order_iter = NULL; +// part->part = NULL; +// part->device = NULL; + +// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"K",_("Kb")); +// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"M",_("Mb")); +// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"G",_("Gb")); +// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"T",_("Tb")); +// gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),0); + +// gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),DEFAULT_LABEL); +// gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),DO_NOT_FORMAT_LABEL); +// gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),FORMAT_LABEL); +// gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),0); + +// g_signal_connect(G_OBJECT(part->EncryptionButton),"clicked",G_CALLBACK(on_advanced_password_clicked),part); +// g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionButton); +// g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionEntry); +// g_signal_connect(G_OBJECT(part->EncryptionEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); +// g_signal_connect(G_OBJECT(part->FormatCombo),"changed",G_CALLBACK(on_format_changed),part); +// g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); +// g_signal_connect(G_OBJECT(part->SizeSpin),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); +// g_signal_connect(G_OBJECT(part->PartLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); +// g_signal_connect(G_OBJECT(part->FileSystemTypeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); +// g_signal_connect(G_OBJECT(part->FileSystemLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); +// g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); + +// yon_fs_type_setup(GTK_COMBO_BOX_TEXT(part->FileSystemTypeCombo)); + +// g_object_set_data(G_OBJECT(part->MainBox),"advanced_part_widgets",part); +// g_object_set_data(G_OBJECT(part->SizeCombo),"advanced_part_widgets",part); +// g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_part_widgets",part); +// g_object_set_data(G_OBJECT(part->SystemSectionToggle),"advanced_part_widgets",part); +// g_object_set_data(G_OBJECT(part->UserDataSectionToggle),"advanced_part_widgets",part); + +// int size; +// config_str encryptions = yon_char_parsed_new(&size,encryptions_list,NULL); +// for (int i=0;iEncryptionCombo),encryptions[i],encryptions[i]); +// } +// yon_char_parsed_free(encryptions,size); +// return part; +// } + +// void on_advanced_part_remove(GtkWidget *self, main_window *widgets){ +// advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); +// yon_advanced_section_remove(part); +// if (sections_size){ +// sections[0]->sys_section=1; +// sections[0]->user_section=1; +// } +// yon_advanced_update(widgets); + +// } + +// int yon_advanced_section_append(advanced_section *section){ +// if (sections_size==2) return -1; +// sections[sections_size] = section; +// sections_size++; +// return sections_size-1; +// } -void yon_advanced_update(main_window *widgets){ - yon_advanced_partition_clear(widgets); - int virtual_found = 0; - for (int i=0;ipartition_widgets) sections[i]->partition_widgets = NULL; - sections[i]->partition_widgets = part; - g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove),widgets); - g_signal_connect(G_OBJECT(part->SystemSectionToggle),"clicked",G_CALLBACK(on_advanced_section_toggled),widgets); - g_signal_connect(G_OBJECT(part->UserDataSectionToggle),"clicked",G_CALLBACK(on_advanced_section_toggled),widgets); - // g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(on_advanced_size_changed),widgets); - if (i==0){ - gtk_widget_set_sensitive(part->SystemSectionToggle,0); - gtk_widget_set_sensitive(part->UserDataSectionToggle,0); - GtkWidget *SystemImage = gtk_button_get_image(GTK_BUTTON(part->SystemSectionToggle)); - GtkWidget *UserImage = gtk_button_get_image(GTK_BUTTON(part->UserDataSectionToggle)); - gtk_image_set_from_icon_name(GTK_IMAGE(SystemImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_image_set_from_icon_name(GTK_IMAGE(UserImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON); - } - yon_advanced_partition_set_from_section(part,sections[i]); - // yon_advanced_set_max_size_from_partition(part,widgets); - gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); - g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); - if (!virtual_found&>k_combo_box_set_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),sections[i]->part_source==PART_SOURCE_PART?sections[i]->partition:sections[i]->device)){ - virtual_found=1; +void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ + char *device = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo)); + int size; + config_str vfs_file = yon_resource_open_file(vfs_list_path,&size); + for (int i=0;iAdvancedVirtualDeviceLabel),_(parsed[1])); + gtk_widget_show(gtk_widget_get_parent(widgets->AdvancedVirtualDeviceLabel)); + yon_char_parsed_free(parsed,parsed_size); + break; + } else { + gtk_widget_hide(gtk_widget_get_parent(widgets->AdvancedVirtualDeviceLabel)); + yon_char_parsed_free(parsed,parsed_size); } - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); - - part->part_type = ADVANCED_PART_EXISTING; - } - if (!virtual_found||!sections_size) { - g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); } - yon_advanced_section_update(widgets); - GtkTreeIter itar; - for_iter(GTK_TREE_MODEL(widgets->PartitionsList),&itar){ - int status; - char *target; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->PartitionsList),&itar,0,&target,7,&status,-1); - if (!((sections_size>0&&!strcmp(target,sections[0]->part_source==PART_SOURCE_PART?sections[0]->partition:sections[0]->device))||(sections_size>1&&!strcmp(target,sections[1]->part_source==PART_SOURCE_PART?sections[1]->partition:sections[1]->device)))){ - gtk_list_store_set(widgets->PartitionsList,&itar,7,0,-1); + if (!yon_char_is_empty(device)){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); + int active_devices=0; + for_iter(model,&iter){ + int status; + gtk_tree_model_get(model,&iter,5,&status,-1); + if (status) active_devices++; } - } - if (sections_size>=2){ - gtk_widget_hide(widgets->AdvancedAddButton); - } else { - gtk_widget_show(widgets->AdvancedAddButton); + advanced_part_data *data = yon_advanced_part_data_new(); + advanced_part_widgets *part = yon_advanced_part_create(data); + data->part_source = PART_SOURCE_VIRTUAL; + data->partition = device; + data->device = device; + gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); } + yon_char_parsed_free(vfs_file,size); + // yon_advanced_update(widgets); } -void on_advanced_partition_create(GtkWidget *, main_window *widgets){ - int found = 0; - GtkTreeIter iter, *last_unvalid = NULL; - GtkTreeModel *model; - if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){ - char *target; - int active; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->DevicesList),&iter,0,&target,5,&active,-1); - if (active){ - if (!yon_advanced_section_get(target)){ - last_unvalid = gtk_tree_iter_copy(&iter); - } else { - found=1; - if (sections_size==2) return; - advanced_section *section = yon_advanced_section_new(); - section->part_source = PART_SOURCE_DEVICE; - section->device = target; - section->partition = NULL; - sections[sections_size]=section; - sections_size++; - } - } - } - if (!found&&last_unvalid){ - char *target; - int active; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->DevicesList),last_unvalid,0,&target,5,&active,-1); - - if (sections_size==2) return; - advanced_section *section = yon_advanced_section_new(); - section->part_source = PART_SOURCE_DEVICE; - section->device = target; - section->partition = NULL; - sections[sections_size]=section; - sections_size++; - } - yon_advanced_update(widgets); + +advanced_part_data *yon_advanced_part_data_new(){ + advanced_part_data *data = malloc(sizeof(advanced_part_data)); + memset(data,0,sizeof(advanced_part_data)); + return data; } -void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets){ - GtkTreeIter iter; - if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PartitionsList),&iter,path)){ - char *target, *device; - int status; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->PartitionsList),&iter,0,&target,7,&status,9,&device,-1); - gtk_list_store_set(widgets->DevicesList,&iter,7,!status,-1); - if (!status){ - if (sections_size==2) return; - advanced_section *section = yon_advanced_section_new(); - section->part_source = PART_SOURCE_PART; - section->device = NULL; - section->partition = target = device; - sections[sections_size]=section; - sections_size++; - } else { - yon_advanced_section_remove_by_name(target); +char *yon_advanced_part_data_get_parameter(const char *config_param, int pos){ + char *final = NULL; + char *parameter = (char*)config((char*)config_param); + if (!yon_char_is_empty(parameter)){ + int size; + config_str parsed = yon_char_parse(parameter,&size,","); + if (size&&posDevicesList); - for_iter(model, &iter){ - char *target; - gtk_tree_model_get(model,&iter,0,&target,-1); - if (!yon_char_is_empty(target)&&strstr(device,target)){ - char *path = gtk_tree_model_get_string_from_iter(model,&iter); - g_signal_emit_by_name(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",path,NULL); - } +advanced_part_data *yon_advanced_get_config_data(int pos){ + advanced_part_data *data = yon_advanced_part_data_new(); + data->device = yon_advanced_part_data_get_parameter(device_parameter,pos); + data->partition = yon_advanced_part_data_get_parameter(part_parameter,pos); + data->part_label = yon_advanced_part_data_get_parameter(part_label_parameter,pos); + data->fs_type = yon_advanced_part_data_get_parameter(part_fs_type_parameter,pos); + data->fs_label = yon_advanced_part_data_get_parameter(part_fs_label_parameter,pos); + data->encryption = yon_advanced_part_data_get_parameter(part_crypt_parameter,pos); + data->format = yon_advanced_part_data_get_parameter(part_format_parameter,pos); + data->encryption_password = yon_advanced_part_data_get_parameter(part_crypt_parameter, pos); + char *size_str = yon_advanced_part_data_get_parameter(part_size_parameter,pos); + if (!yon_char_is_empty(size_str)){ + data->size = atol(size_str); } + return data; } -void yon_advanced_part_choose(main_window *widgets, const char *part){ - if (yon_char_is_empty(part)) return; - GtkTreeIter iter; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); - for_iter(model, &iter){ - char *target; - gtk_tree_model_get(model,&iter,0,&target,-1); - if (!yon_char_is_empty(target)&&strstr(part,target)){ - char *path = gtk_tree_model_get_string_from_iter(model,&iter); - g_signal_emit_by_name(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",path,NULL); - } - } +void yon_advanced_part_create_for_device(advanced_part_data *data, main_window *widgets){ + advanced_part_widgets *part = yon_advanced_part_create(data); + gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); + } -void yon_install_advanced_init(main_window *widgets){ - yon_advanced_partition_clear(widgets); - g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); - gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->AdvancedVirtualDeviceCombo)); - gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->AdvancedVirtualDeviceCombo),NO_LABEL); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); - int size; - config_str vmf_file = yon_resource_open_file(vfs_list_path,&size); - for (int i=1;iAdvancedVirtualDeviceCombo),parsed[2],parsed[0]); - yon_char_parsed_free(parsed,parsed_size); - } - yon_char_parsed_free(vmf_file,size); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); - char *device = config(device_parameter); - char *parts = config(part_parameter); - char *part_size = config(part_size_parameter); - char *part_label = config(part_label_parameter); - char *part_fs_type = config(part_fs_type_parameter); - char *part_fs_label = config(part_fs_label_parameter); - char *part_crypt = config(part_crypt_parameter); - char *part_format = config(part_format_parameter); - char *boot = config(boot_parameter); - char *swap = config(swap_parameter); - char *swap_size = config(swap_size_parameter); - if (yon_char_is_empty(device)&&yon_char_is_empty(parts)) return; - { +void yon_advanced_part_add_parts_for_device(const char *device_name, main_window *widgets){ + for (int i=0;i0&&!yon_char_is_empty(device_parsed[0])){ - yon_advanced_device_choose(widgets,device_parsed[0]); - // sections[0] = yon_advanced_section_new(); - while(gtk_events_pending()) gtk_main_iteration(); - sections[0]->device=device_parsed[0]; - on_advanced_partition_create(NULL,widgets); - if (size>1&&!yon_char_is_empty(device_parsed[1])){ - yon_advanced_device_choose(widgets,device_parsed[1]); - // sections[1] = yon_advanced_section_new(); - while(gtk_events_pending()) gtk_main_iteration(); - sections[1]->device=device_parsed[1]; - on_advanced_partition_create(NULL,widgets); - } - free(device_parsed); - }; - } - { - int size; - config_str part_parsed = yon_char_parse(parts,&size,","); - if (size>0){ - // sections[0] = yon_advanced_section_new(); - yon_advanced_device_choose(widgets,part_parsed[0]); - yon_advanced_part_choose(widgets,part_parsed[0]); - while(gtk_events_pending()) gtk_main_iteration(); - sections[0]->partition=part_parsed[0]; - if (size>1&&!yon_char_is_empty(part_parsed[1])){ - // sections[1] = yon_advanced_section_new(); - yon_advanced_device_choose(widgets,part_parsed[1]); - yon_advanced_part_choose(widgets,part_parsed[1]); - while(gtk_events_pending()) gtk_main_iteration(); - sections[1]->device=part_parsed[1]; - } - free(part_parsed); - }; - } - { - if (!yon_char_is_empty(part_size)){ - int size; - config_str parsed = yon_char_parse(part_size,&size,","); - if (size>0&&!yon_char_is_empty(parsed[0])){ - sections[0]->size = atol(parsed[0]); - sections[0]->size_letter = parsed[0][strlen(parsed[0])-1]; - if (size>1&&!yon_char_is_empty(parsed[1])){ - - sections[1]->size = atol(parsed[1]); - sections[1]->size_letter = parsed[1][strlen(parsed[1])-1]; - } - } - free(parsed); - } - if (!yon_char_is_empty(part_label)){ - int size; - config_str parsed = yon_char_parse(part_label,&size,","); - if (size>0&&!yon_char_is_empty(parsed[0])){ - sections[0]->part_label = parsed[0]; - if (size>1&&!yon_char_is_empty(parsed[1])){ - sections[1]->part_label = parsed[1]; - } - } - free(parsed); - } - if (!yon_char_is_empty(part_fs_type)){ - int size; - config_str parsed = yon_char_parse(part_fs_type,&size,","); - if (size>0&&!yon_char_is_empty(parsed[0])){ - sections[0]->fs_type = parsed[0]; - if (size>1&&!yon_char_is_empty(parsed[1])){ - sections[1]->fs_type = parsed[1]; - } - } - free(parsed); - } - if (!yon_char_is_empty(part_fs_label)){ - int size; - config_str parsed = yon_char_parse(part_fs_label,&size,","); - if (size>0&&!yon_char_is_empty(parsed[0])){ - sections[0]->fs_label = parsed[0]; - if (size>1&&!yon_char_is_empty(parsed[1])){ - sections[1]->fs_label = parsed[1]; - } - } - free(parsed); - } - if (!yon_char_is_empty(part_crypt)){ - int size; - config_str parsed = yon_char_parse(part_crypt,&size,","); - if (size>0&&!yon_char_is_empty(parsed[0])){ - sections[0]->encryption = parsed[0]; - if (size>1&&!yon_char_is_empty(parsed[1])){ - sections[1]->encryption = parsed[1]; - } + config_str parsed = yon_char_parse(main_config.partitions[i],&size,";"); + if (strstr(device_name,parsed[0])){ + GtkTreeIter iter; + long capacity = 0; + if (size>3&&!yon_char_is_empty(parsed[3])){ + capacity = atol(parsed[3]); } - free(parsed); - } - if (!yon_char_is_empty(part_format)){ - int size; - config_str parsed = yon_char_parse(part_format,&size,","); - if (size>0&&!yon_char_is_empty(parsed[0])){ - if (!strcmp(parsed[0],"yes")){ - sections[0]->format = 2; - } else if (!strcmp(parsed[0],"no")){ - sections[0]->format = 1; - } - if (size>1&&!yon_char_is_empty(parsed[1])){ - if (!strcmp(parsed[1],"yes")){ - sections[1]->format = 2; - } else if (!strcmp(parsed[1],"no")){ - sections[1]->format = 1; - } - } + char *capacity_string = capacity? yon_size_long_convert_automatic_to_string(capacity) : yon_char_new(""); + long free_space = 0; + if (size>8&&!yon_char_is_empty(parsed[8])){ + free_space = capacity-atol(parsed[8]); } - free(parsed); - } - if (!yon_char_is_empty(boot)){ - - } - if (!yon_char_is_empty(swap)){ - - } - if (!yon_char_is_empty(swap_size)){ - + char *free_space_string = free_space ? yon_size_long_convert_automatic_to_string(free_space) : yon_char_new(""); + gtk_list_store_append(widgets->PartitionsList,&iter); + gtk_list_store_set(widgets->PartitionsList,&iter, + 0,parsed[1], 1,capacity_string, + 2,free_space_string, 3,parsed[4], + 4,parsed[5], 5,capacity, + 6,free_space, 8,1, + 9,parsed[7], 10,parsed[0], + 11,parsed[10],-1); } - } - yon_advanced_update(widgets); } -void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){ +void yon_advanced_part_remove_parts_for_device(const char *device_name, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); - - int chosen = 0; - chosen = yon_advanced_get_part_size(widgets); - - gtk_tree_model_get_iter_from_string(model,&iter,path); - int status; - char *target_part, *device; - gulong part_size; - gtk_tree_model_get(model,&iter,0,&target_part,5,&part_size,7,&status,9,&device,-1); - - if (!status){ - if (chosen<2){ - gtk_list_store_set(widgets->PartitionsList,&iter,7,1,-1); - chosen++; - advanced_section *section = yon_advanced_section_new(); - section->part_source = PART_SOURCE_PART; - section->partition = target_part; - section->device = NULL; - section->full_part_size = part_size; - sections[sections_size]=section; - sections_size++; - } - } else { - yon_advanced_section_remove_by_name(target_part); - gtk_list_store_set(widgets->PartitionsList,&iter,7,0,-1); - } - yon_advanced_update(widgets); -} - -void yon_advanced_parts_update(main_window *widgets){ - int size; - config_str partitions; - partitions = yon_config_load(yon_debug_output("%s\n",get_parts_and_devices_command),&size); - for (int i=0;iDevicesList); - GtkTreeIter iter; - for_iter (model,&iter){ - char *disk_path; - int status; - gtk_tree_model_get(model,&iter,0,&disk_path,5,&status,-1); - if (!status) continue; - - for (int i=0;i2){ - char sizemod='\0'; - capacity_long = atol(parsed[2]); - - char *temp = yon_char_from_double(yon_size_long_convert_automatic(capacity_long,&sizemod)); - capacity = yon_char_append_c(temp,sizemod); - free(temp); - } - if (parsed_size>7&&!yon_char_is_empty(parsed[7])){ - char sizemod='\0'; - free_space_long = capacity_long-atol(parsed[7]); - char *temp = yon_char_from_double(yon_size_long_convert_automatic(free_space_long,&sizemod)); - free_space = yon_char_append_c(temp,sizemod); - free(temp); - } - if (parsed_size>3){ - fs_type = parsed[3]; - } - if (parsed_size>4){ - label = parsed[4]; - } - - GtkTreeIter itar; - gtk_list_store_append(widgets->PartitionsList,&itar); - gtk_list_store_set(widgets->PartitionsList,&itar,0,name,1,capacity,2,free_space,3,fs_type,4,label,5,capacity_long,6,free_space_long,8,1,9,disk_path,-1); - } - yon_char_parsed_free(parsed,parsed_size); - } - } - } - yon_char_parsed_free(partitions,size); -} - -void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets){ - char *cur_name = part->part_type == ADVANCED_PART_EXISTING?part->device:part->part; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); - GtkTreeIter iter; - long selected_size; - - for_iter(model,&iter){ + for_iter(model, &iter){ char *target; - gtk_tree_model_get(model,&iter,part->part_type == ADVANCED_PART_EXISTING?9:0,&target,-1); - if (!strcmp(target,cur_name)){ - gtk_tree_model_get(model,&iter,6,&selected_size,-1); - if (!selected_size){ - gtk_tree_model_get(model,&iter,5,&selected_size,-1); - } - if (selected_size){ - GtkAdjustment *adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(part->SizeSpin)); - const char *sizemod = gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->SizeCombo)); - double new_size = yon_size_long_convert_to_mod(selected_size,sizemod[0]); - gtk_adjustment_set_upper(adj,new_size); - gdouble old_value = gtk_adjustment_get_value(adj); - if (old_value>new_size){ - gtk_adjustment_set_value(adj,new_size); - } + gtk_tree_model_get(model,&iter,0,&target,-1); + for (int i=0;iPartitionsList,&iter); } + yon_char_parsed_free(parsed,size); } } } -void on_advanced_size_changed(GtkWidget *,main_window *){ - // advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition"); - // yon_advanced_set_max_size_from_partition(part,widgets); -} - -void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){ - gtk_list_store_clear(widgets->PartitionsList); - yon_advanced_section_remove_all(); +void on_advanced_part_create(GtkWidget *, main_window *widgets){ GtkTreeIter iter; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); - // chosen = yon_advanced_get_part_size(widgets); - - if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ - int status; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){ char *target; - gtk_tree_model_get(model,&iter,0,&target,5,&status,-1); - if (!status){ // checks - gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1); - - } else { // unchecks - gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1); - for_iter (model,&iter){ - gtk_list_store_set(widgets->DevicesList,&iter,6,1,-1); - } - } - } - int chosen_amount = 0; - for_iter(model,&iter){ - int status; - gtk_tree_model_get(model,&iter,5,&status,-1); - if (status)chosen_amount++; - } - // gtk_widget_set_sensitive(widgets->AdvancedVirtualDeviceCombo,chosen_amount>=2); - // if (chosen) gtk_widget_set_sensitive(widgets->AdvancedAddButton,1); - // else gtk_widget_set_sensitive(widgets->AdvancedAddButton,0); - yon_advanced_parts_update(widgets); - yon_advanced_update(widgets); -} - -void on_advanced_password_clicked(GtkWidget *, advanced_partition *part){ - yon_password_window *window = yon_password_open(GTK_ENTRY(part->EncryptionEntry)); - gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo)); - gtk_widget_hide(window->HashBox); - gtk_widget_hide(window->NoEncriptionCheck); -} - -void yon_advanced_partition_clear(main_window *widgets){ - GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); - GList *iter; - for (iter=list;iter;iter=iter->next){ - advanced_partition *part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition"); - gtk_widget_destroy(GTK_WIDGET(iter->data)); - free(part); - } -} - -int yon_advanced_get_part_size(main_window *widgets){ - int size = 0; - GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); - size = g_list_length(list); - g_list_free(list); - return size; -} - -void yon_advanced_section_update_section(advanced_partition *part,GtkWidget *cur_toggle,main_window *widgets){ - int systoggle = cur_toggle == part->SystemSectionToggle; - advanced_section *section = sections[yon_advanced_section_get_by_part(part)]; - g_signal_handlers_block_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets); - gboolean active = systoggle?section->sys_section:section->user_section; - gtk_widget_set_sensitive(cur_toggle,!active); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_toggle),active); - g_signal_handlers_unblock_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets); - GtkWidget *compare_image = gtk_button_get_image(GTK_BUTTON(cur_toggle)); - gtk_image_set_from_icon_name(GTK_IMAGE(compare_image),!active?untoggled_icon_name:toggled_icon_name,GTK_ICON_SIZE_BUTTON); -} - -void yon_advanced_section_update(main_window *widgets){ - GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); - GList *iter; - for (iter=list;iter;iter=iter->next){ - advanced_partition *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition"); - GtkWidget *cur_toggle = compare_part->SystemSectionToggle; - yon_advanced_section_update_section(compare_part,cur_toggle,widgets); - cur_toggle = compare_part->UserDataSectionToggle; - yon_advanced_section_update_section(compare_part,cur_toggle,widgets); - } -} - -void on_advanced_section_toggled(GtkWidget *self, main_window *widgets){ - advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition"); - int pos = yon_advanced_section_get_by_part(part); - if (self == part->SystemSectionToggle){ - sections[pos]->sys_section = 1; - if (sections[!pos]&§ions[pos]->user_section){ - sections[pos]->user_section=0; - sections[!pos]->user_section=1; - } - } else { - sections[pos]->user_section = 1; - if (sections[!pos]&§ions[pos]->sys_section){ - sections[pos]->sys_section=0; - sections[!pos]->sys_section=1; - } - } - GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); - GList *iter; - for (iter=list;iter;iter=iter->next){ - advanced_partition *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition"); - if (part != compare_part) { - if (self == part->SystemSectionToggle){ - sections[yon_advanced_section_get_by_part(compare_part)]->sys_section = 0; - } else { - sections[yon_advanced_section_get_by_part(compare_part)]->user_section = 0; - } - } + gtk_tree_model_get(model,&iter,0,&target,-1); + advanced_part_data *data = yon_advanced_part_data_new(); + yon_advanced_part_create_for_device(data,widgets); } - yon_advanced_section_update(widgets); } -int yon_advanced_save(main_window *widgets){ - yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"custom"); - char *devices[2] = {NULL}; - char *parts[2] = {NULL}; - char *part_size[2] = {NULL}; - char *part_label[2] = {NULL}; - char *fs_type[2] = {NULL}; - char *fs_label[2] = {NULL}; - char *encryption[2] = {NULL}; - char *format[2] = {NULL}; - if (!sections_size){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - return 0; - } - advanced_section *cur_section = sections[0]->sys_section?sections[0]:sections[1]; - if (cur_section->part_source == PART_SOURCE_VIRTUAL){ - - char *device = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo)); - int size; - config_str vfs_file = yon_resource_open_file(vfs_list_path,&size); - config_str cur_device = NULL; - for (int i=0;iDevicesList); - int active_devices=0; - for_iter(model,&iter){ - int status; - gtk_tree_model_get(model,&iter,5,&status,-1); - if (status) active_devices++; - } - if (atoi(cur_device[3])>active_devices){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),COUNT_INVALID_LABEL(cur_device[3]),5,BACKGROUND_IMAGE_INFO_TYPE); - yon_ubl_status_highlight_incorrect(widgets->AdvancedVirtualDeviceCombo); - yon_char_parsed_free(cur_device,4); - return 0; - } - - if (atoi(cur_device[4])%active_devices!=0){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),PARITY_INVALID_LABEL(cur_device[4]),5,BACKGROUND_IMAGE_INFO_TYPE); - yon_ubl_status_highlight_incorrect(widgets->AdvancedVirtualDeviceCombo); - yon_char_parsed_free(cur_device,4); - return 0; - } - } - } - - if (cur_section->format==2){ - format[0]="yes"; - } else if (cur_section->format == 1){ - format[0]="no"; - } else { - format[0]=NULL; - } - if (!yon_char_is_empty(cur_section->partition)){ - if (!yon_char_is_empty(cur_section->partition)){ - parts[0]=cur_section->partition; - } else { - parts[0]=""; - } - } else { - devices[0]=cur_section->device; - } - if (cur_section->user_section){ - if (!yon_char_is_empty(cur_section->device)){ - if (!yon_char_is_empty(cur_section->partition)){ - parts[1]=cur_section->partition; - } else { - parts[1]=""; +int yon_advanced_part_select_for_data(advanced_part_data *data, main_window *widgets){ + GtkTreeIter device_iter; + GtkTreeModel *device_model = GTK_TREE_MODEL(widgets->DevicesList); + for_iter(device_model, &device_iter){ + char *device_name; + gtk_tree_model_get(device_model,&device_iter,0,&device_name,-1); + if (!strcmp(device_name,data->device)){ + gtk_list_store_set(widgets->DevicesList,&device_iter, 5,1,-1); + yon_advanced_part_add_parts_for_device(device_name,widgets); + if (yon_char_is_empty(data->partition)){ + yon_advanced_part_create_for_device(data,widgets); } - } else { - devices[1]=cur_section->device; - } - } - - if (cur_section->format==2){ - if (cur_section->size&&yon_size_long_convert_to_mod(cur_section->full_part_size,cur_section->size_letter)>cur_section->size){ - - char *size_str = yon_char_from_long(cur_section->size); - char *sz_str = yon_char_append_c(size_str,cur_section->size_letter); - part_size[0]=sz_str; - } else { - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOT_ENOUGH_SPACE_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - return 0; - } - if (!yon_char_is_empty(cur_section->part_label)){ - part_label[0]=cur_section->part_label; - } - if (!yon_char_is_empty(cur_section->fs_type)){ - fs_type[0]=cur_section->fs_type; - } - if (!yon_char_is_empty(cur_section->fs_label)){ - fs_label[0]=cur_section->fs_label; } } - if (sections_size>1){ - cur_section = sections[0]->sys_section?sections[1]:sections[0]; - - if (cur_section->format==2){ - format[1]="yes"; - } else if (cur_section->format==1){ - format[1]="no"; - } else { - format[1] = NULL; - } - - devices[1]=cur_section->device; - if (!yon_char_is_empty(cur_section->partition)){ - parts[1]=cur_section->partition; - } else { - parts[1]=""; - } - - if (cur_section->format==2){ - if (cur_section->size){ - char *size_str = yon_char_from_long(cur_section->size); - char *sz_str = yon_char_append_c(size_str,cur_section->size_letter); - part_size[1]=sz_str; + if (!yon_char_is_empty(data->partition)){ + GtkTreeIter part_iter; + GtkTreeModel *part_model = GTK_TREE_MODEL(widgets->PartitionsList); + for_iter(part_model,&part_iter){ + char *part_name; + gtk_tree_model_get(part_model,&part_iter,0,&part_name,-1); + if (!strcmp(part_name,data->partition)){ + gtk_list_store_set(GTK_LIST_STORE(widgets->PartitionsList),&part_iter,7,1,-1); + } - if (!yon_char_is_empty(cur_section->part_label)){ - part_label[1]=cur_section->part_label; - } - if (!yon_char_is_empty(cur_section->fs_type)){ - fs_type[1]=cur_section->fs_type; - } - if (!yon_char_is_empty(cur_section->fs_label)){ - fs_label[1]=cur_section->fs_label; - } - if (!yon_char_is_empty(cur_section->encryption)){ - char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL); - encryption[1]=encrypt_str; - } - } - } - - if (devices[0]||devices[1]){ - char *devices_str = yon_char_parsed_to_string_full(devices,2,","); - yon_config_register(device_parameter,device_parameter_command,devices_str); - } - if (!yon_char_is_empty(parts[0])||!yon_char_is_empty(parts[1])){ - char *parts_str = yon_char_parsed_to_string_full(parts,2,","); - yon_config_register(part_parameter,part_parameter_command,parts_str); - } else { - yon_config_remove_by_key(part_parameter); - } - if (part_size[0]||part_size[1]){ - char *part_size_str = yon_char_parsed_to_string_full(part_size,2,","); - yon_config_register(part_size_parameter,part_size_parameter_command,part_size_str); - } else { - yon_config_remove_by_key(part_size_parameter); - } - if (part_label[0]||part_label[1]){ - char *part_label_str = yon_char_parsed_to_string_full(part_label,2,","); - yon_config_register(part_label_parameter,part_label_parameter_command,part_label_str); - - } else { - yon_config_remove_by_key(part_label_parameter); - } - if (fs_type[0]||fs_type[1]){ - char *fs_type_str = yon_char_parsed_to_string_full(fs_type,2,","); - yon_config_register(part_fs_type_parameter,part_fs_type_parameter_command,fs_type_str); - - } else { - yon_config_remove_by_key(part_fs_type_parameter); - } - if (fs_label[0]||fs_label[1]){ - char *fs_label_str = yon_char_parsed_to_string_full(fs_label,2,","); - yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label_str); - - } else { - yon_config_remove_by_key(part_fs_label_parameter); - } - if (encryption[0]||encryption[1]){ - char *encryption_str = yon_char_parsed_to_string_full(encryption,2,","); - yon_config_register(part_crypt_parameter,part_crypt_parameter_command,encryption_str); - - } else { - yon_config_remove_by_key(part_crypt_parameter); - } - if (format[0]||format[1]){ - char *format_str = yon_char_parsed_to_string_full(format,2,","); - yon_config_register(part_format_parameter,part_format_parameter_command,format_str); - - } else { - yon_config_remove_by_key(part_format_parameter); - } - if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){ - char *boot = NULL; - if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))){ - yon_char_append_element(boot,"bios","+"); - } - if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))){ - yon_char_append_element(boot,"efi","+"); - - } - if (!yon_char_is_empty(boot)){ - yon_config_register(boot_parameter,boot_parameter_command,boot); - } else { - yon_config_remove_by_key(boot_parameter); - } - } else { - yon_config_remove_by_key(boot_parameter); - } - if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){ - if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){ - yon_config_register(swap_parameter,swap_parameter_command,"auto"); - - } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){ - yon_config_register(swap_parameter,swap_parameter_command,"yes"); - yon_config_register(swap_size_parameter,swap_parameter_command,"ram"); - - } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapFixedSwitch))){ - yon_config_register(swap_parameter,swap_parameter_command,"yes"); - long swap_size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)); - int size_letter = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapFixedSizeSwitch)); - char *swap_str = yon_char_from_long(swap_size); - char *size_final = yon_char_unite(swap_str,size_letter?"G":"M",NULL); - yon_config_register(swap_size_parameter,swap_parameter_command,size_final); - } else { - yon_config_remove_by_key(swap_parameter); - yon_config_remove_by_key(swap_size_parameter); } } - char *parameters = yon_config_get_all_info(); - yon_debug_output("%s\n",parameters); return 1; } +void yon_advanced_init(main_window *widgets){ + advanced_part_data *data1 = yon_advanced_get_config_data(0); + advanced_part_data *data2 = yon_advanced_get_config_data(1); + yon_advanced_part_select_for_data(data1,widgets); + yon_advanced_part_select_for_data(data2,widgets); -void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part){ - advanced_section *section = sections[yon_advanced_section_get_by_part(part)]; - if (self == part->SizeCombo||self == part->SizeSpin){ - section->size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(part->SizeSpin)); - int size_id = gtk_combo_box_get_active(GTK_COMBO_BOX(part->SizeCombo)); - section->size_letter = *yon_size_get_mod(size_id>-1?size_id:0); - } else if (self == part->PartLabelEntry){ - section->part_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->PartLabelEntry))); - } else if (self == part->FileSystemTypeCombo){ - if (!gtk_combo_box_get_active(GTK_COMBO_BOX(part->FileSystemTypeCombo))){ - section->fs_type = NULL; - } else { - GList *list = gtk_container_get_children(GTK_CONTAINER(part->FileSystemTypeCombo)); - section->fs_type = yon_char_new(gtk_entry_get_text(GTK_ENTRY(list->data))); - g_list_free(list); - } - } else if (self == part->FileSystemLabelEntry){ - section->fs_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->FileSystemLabelEntry))); - } else if (self == part->EncryptionCombo||self == part->EncryptionEntry){ - section->encryption = yon_char_new(gtk_combo_box_get_active_id(GTK_COMBO_BOX(part->EncryptionCombo))); - section->encryption_password = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->EncryptionEntry))); - } else if (self == part->FormatCombo){ - section->format = gtk_combo_box_get_active(GTK_COMBO_BOX(part->FormatCombo)); - } -} - -void on_format_changed(GtkWidget *self, advanced_partition *part){ - int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self)); - switch (active){ - case 0: - case 1: gtk_revealer_set_reveal_child(GTK_REVEALER(part->FormatRevealer),0); - break; - case 2: gtk_revealer_set_reveal_child(GTK_REVEALER(part->FormatRevealer),1); - } - yon_advanced_part_parameter_changed(self, part); + } -advanced_partition *yon_advanced_partition_new(){ - advanced_partition *part = new(advanced_partition); +advanced_part_widgets *yon_advanced_part_create(advanced_part_data *part_data){ + advanced_part_widgets *part = new(advanced_part_widgets); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_advanced_part); yon_scroll_block_for_builder(builder); part->MainBox = yon_gtk_builder_get_widget(builder,"MainBox"); @@ -976,10 +1235,10 @@ advanced_partition *yon_advanced_partition_new(){ part->part = NULL; part->device = NULL; - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"K",_("Kb")); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"M",_("Mb")); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"G",_("Gb")); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"T",_("Tb")); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"K",KB_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"M",MB_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"G",GB_LABEL); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"T",TB_LABEL); gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),0); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),DEFAULT_LABEL); @@ -987,25 +1246,19 @@ advanced_partition *yon_advanced_partition_new(){ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(part->FormatCombo),FORMAT_LABEL); gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),0); - g_signal_connect(G_OBJECT(part->EncryptionButton),"clicked",G_CALLBACK(on_advanced_password_clicked),part); + // g_signal_connect(G_OBJECT(part->EncryptionButton),"clicked",G_CALLBACK(on_advanced_password_clicked),part); g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionButton); g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),part->EncryptionEntry); - g_signal_connect(G_OBJECT(part->EncryptionEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); - g_signal_connect(G_OBJECT(part->FormatCombo),"changed",G_CALLBACK(on_format_changed),part); - g_signal_connect(G_OBJECT(part->SizeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); - g_signal_connect(G_OBJECT(part->SizeSpin),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); - g_signal_connect(G_OBJECT(part->PartLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); - g_signal_connect(G_OBJECT(part->FileSystemTypeCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); - g_signal_connect(G_OBJECT(part->FileSystemLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); - g_signal_connect(G_OBJECT(part->EncryptionCombo),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part); + // g_signal_connect(G_OBJECT(part->FormatCombo),"changed",G_CALLBACK(on_format_changed),part); yon_fs_type_setup(GTK_COMBO_BOX_TEXT(part->FileSystemTypeCombo)); - g_object_set_data(G_OBJECT(part->MainBox),"advanced_partition",part); - g_object_set_data(G_OBJECT(part->SizeCombo),"advanced_partition",part); - g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_partition",part); - g_object_set_data(G_OBJECT(part->SystemSectionToggle),"advanced_partition",part); - g_object_set_data(G_OBJECT(part->UserDataSectionToggle),"advanced_partition",part); + g_object_set_data(G_OBJECT(part->MainBox),"advanced_part_widgets",part); + g_object_set_data(G_OBJECT(part->MainBox),"advanced_part_data",part_data); + g_object_set_data(G_OBJECT(part->SizeCombo),"advanced_part_widgets",part); + g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_part_widgets",part); + g_object_set_data(G_OBJECT(part->SystemSectionToggle),"advanced_part_widgets",part); + g_object_set_data(G_OBJECT(part->UserDataSectionToggle),"advanced_part_widgets",part); int size; config_str encryptions = yon_char_parsed_new(&size,encryptions_list,NULL); @@ -1014,61 +1267,4 @@ advanced_partition *yon_advanced_partition_new(){ } yon_char_parsed_free(encryptions,size); return part; -} - -void on_advanced_part_remove(GtkWidget *self, main_window *widgets){ - advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition"); - yon_advanced_section_remove(part); - if (sections_size){ - sections[0]->sys_section=1; - sections[0]->user_section=1; - } - yon_advanced_update(widgets); - -} - -int yon_advanced_section_append(advanced_section *section){ - if (sections_size==2) return -1; - sections[sections_size] = section; - sections_size++; - return sections_size-1; -} - -void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ - yon_advanced_section_remove_all(); - char *device = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo)); - int size; - config_str vfs_file = yon_resource_open_file(vfs_list_path,&size); - for (int i=0;iAdvancedVirtualDeviceLabel),_(parsed[1])); - gtk_widget_show(gtk_widget_get_parent(widgets->AdvancedVirtualDeviceLabel)); - yon_char_parsed_free(parsed,parsed_size); - break; - } else { - gtk_widget_hide(gtk_widget_get_parent(widgets->AdvancedVirtualDeviceLabel)); - yon_char_parsed_free(parsed,parsed_size); - } - } - if (!yon_char_is_empty(device)){ - GtkTreeIter iter; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); - int active_devices=0; - for_iter(model,&iter){ - int status; - gtk_tree_model_get(model,&iter,5,&status,-1); - if (status) active_devices++; - } - - advanced_section *section = yon_advanced_section_new(); - section->part_source = PART_SOURCE_VIRTUAL; - section->partition = device; - section->device = device; - yon_advanced_section_append(section); - - } - yon_char_parsed_free(vfs_file,size); - yon_advanced_update(widgets); } \ No newline at end of file diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index 86b6b18..6990577 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -185,10 +185,10 @@ int yon_install_same_partition_save(main_window *widgets){ int yon_advanced_sections_save(dictionary *dict){ if (!dict) return 0; - advanced_partition *first_section = yon_dictionary_get_data(dict->first,advanced_partition*); - advanced_partition *last_section = NULL; + advanced_part_widgets *first_section = yon_dictionary_get_data(dict->first,advanced_part_widgets*); + advanced_part_widgets *last_section = NULL; if (dict->first->next){ - last_section = yon_dictionary_get_data(dict->first->next,advanced_partition*); + last_section = yon_dictionary_get_data(dict->first->next,advanced_part_widgets*); } char *part_first = first_section->part; @@ -435,7 +435,7 @@ void yon_install_init(main_window *widgets, enum YON_PAGES page){ break; case YON_PAGE_INSTALL_ADVANCED: - yon_install_advanced_init(widgets); + // yon_install_advanced_init(widgets); return; break; case YON_PAGE_RECOVERY_GRUB_INSTALL: diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index e205f8c..0982c5d 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -281,7 +281,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){ return yon_install_same_partition_save(widgets); break; case YON_PAGE_INSTALL_ADVANCED: - return yon_advanced_save(widgets); + // return yon_advanced_save(widgets); break; case YON_PAGE_RECOVERY_GRUB_INSTALL: return yon_grub_install_save(widgets); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index d731b25..bb562b6 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -773,11 +773,11 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSpin); g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSizeSwitch); - g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets); + // g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets); g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets); g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets); - g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); + g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_part_create),widgets); + // g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),"changed",G_CALLBACK(on_advanced_virtual_device_changed),widgets); g_signal_connect(G_OBJECT(widgets->PackagesTree),"cursor-changed",G_CALLBACK(yon_on_packages_selected),widgets); g_signal_connect(G_OBJECT(widgets->PackagesTree),"row-activated",G_CALLBACK(yon_on_packages_activated),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index af3840e..7b26eb9 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -828,7 +828,7 @@ typedef struct enum ADVANCED_PART_TYPE part_type; char *part; char *device; -} advanced_partition; +} advanced_part_widgets; typedef struct { @@ -1097,7 +1097,7 @@ typedef struct char *device; int sys_section; int user_section; - int format; + char *format; gulong full_part_size; unsigned long size; char size_letter; @@ -1107,8 +1107,8 @@ typedef struct char *encryption; char *encryption_password; enum PART_SOURCE part_source; - advanced_partition *partition_widgets; -} advanced_section; + advanced_part_widgets *partition_widgets; +} advanced_part_data; struct row_data { @@ -1361,8 +1361,8 @@ void yon_software_init(main_window *widgets); void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets); void on_install_advanced_partition_chosen(GtkCellRenderer *, gchar *path, main_window *widgets); void yon_devices_setup(main_window *widgets); -void on_advanced_password_clicked(GtkWidget *, advanced_partition *part); -advanced_partition *yon_advanced_partition_new(); +void on_advanced_password_clicked(GtkWidget *, advanced_part_widgets *part); +advanced_part_widgets *yon_advanced_partition_new(); void on_advanced_part_remove(GtkWidget *self, main_window *widgets); int yon_advanced_get_part_size(main_window *widgets); void yon_advanced_partition_clear(main_window *widgets); @@ -1392,28 +1392,28 @@ gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *w gboolean yon_os_component_insert(struct row_data *row_input); void *yon_os_components_setup(main_window *widgets); gboolean yon_spinner_switch_off(GtkSpinner *target); -void on_advanced_added(GtkWidget *, char *, main_window *); -void on_advanced_new(GtkWidget *, main_window *); -int yon_advanced_section_get(char *partition); -void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section); -void yon_advanced_update(main_window *widgets); -void on_advanced_partition_create(GtkWidget *, main_window *widgets); -void yon_advanced_parts_update(main_window *widgets); -void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets); -void yon_advanced_section_remove_all(); -void on_advanced_section_toggled(GtkWidget *self, main_window *widgets); +// void on_advanced_added(GtkWidget *, char *, main_window *); +// void on_advanced_new(GtkWidget *, main_window *); +// int yon_advanced_section_get(char *partition); +// void yon_advanced_partition_set_from_section(advanced_part_widgets *part, advanced_part_widgets *section); +// void yon_advanced_update(main_window *widgets); +// void on_advanced_partition_create(GtkWidget *, main_window *widgets); +// void yon_advanced_parts_update(main_window *widgets); +// void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets); +// void yon_advanced_section_remove_all(); +// void on_advanced_section_toggled(GtkWidget *self, main_window *widgets); void yon_fs_type_setup(GtkComboBoxText *target); -void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets); -void on_advanced_size_changed(GtkWidget *self, main_window *widgets); -int yon_advanced_save(main_window *widgets); -void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part); -void yon_advanced_section_update(main_window *widgets); -void yon_advanced_section_update_section(advanced_partition *part, GtkWidget *cur_toggle, main_window *widgets); -int yon_advanced_section_get_by_part(advanced_partition *part); -void yon_advanced_section_remove_by_name(char *part); -void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets); -int yon_advanced_section_append(advanced_section *section); -void on_format_changed(GtkWidget *self, advanced_partition *part); +// void yon_advanced_set_max_size_from_partition(advanced_part_widgets *part, main_window *widgets); +// void on_advanced_size_changed(GtkWidget *self, main_window *widgets); +// int yon_advanced_save(main_window *widgets); +// void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_part_widgets *part); +// void yon_advanced_section_update(main_window *widgets); +// void yon_advanced_section_update_section(advanced_part_widgets *part, GtkWidget *cur_toggle, main_window *widgets); +// int yon_advanced_section_get_by_part(advanced_part_widgets *part); +// void yon_advanced_section_remove_by_name(char *part); +// void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets); +// int yon_advanced_section_append(advanced_part_widgets *section); +void on_format_changed(GtkWidget *self, advanced_part_widgets *part); int yon_layouts_get(); void on_link(GtkWidget *self, char *uri, gpointer); void on_source_changed(GtkComboBox *self); @@ -1533,4 +1533,15 @@ gboolean on_log_window_exit(GtkWidget *,GdkEvent*, log_window *window); void yon_modules_missed_func(main_window *widgets); void yon_scroll_block_for_builder(GtkBuilder *builder); void yon_advanced_device_choose(main_window *widgets, const char *device); -void yon_advanced_part_choose(main_window *widgets, const char *part); \ No newline at end of file +void yon_advanced_part_choose(main_window *widgets, const char *part); +advanced_part_data *yon_advanced_part_data_new(); +char *yon_advanced_part_data_get_parameter(const char *config_param, int pos); +advanced_part_data *yon_advanced_get_config_data(int pos); +void yon_advanced_part_create_for_device(advanced_part_data *data, main_window *widgets); +void yon_advanced_part_add_parts_for_device(const char *device_name, main_window *widgets); +void yon_advanced_part_remove_parts_for_device(const char *device_name, main_window *widgets); +void yon_advanced_init(main_window *widgets); +advanced_part_widgets *yon_advanced_part_create(advanced_part_data *part_data); +void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets); +void on_advanced_part_create(GtkWidget *self, main_window *widgets); +int yon_advanced_part_select_for_data(advanced_part_data *data, main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk-keyboard-layouts.glade b/ubinstall-gtk-keyboard-layouts.glade index 8bc5236..a44c65a 100644 --- a/ubinstall-gtk-keyboard-layouts.glade +++ b/ubinstall-gtk-keyboard-layouts.glade @@ -1,5 +1,5 @@ - + @@ -17,6 +17,7 @@ 550 True False + True com.ublinux.ubl-settings-keyboard @@ -29,6 +30,9 @@ True False 1 + + + column diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 1a30674..c248eae 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -10134,6 +10134,9 @@ separately into the selected partition. + + + False