diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c index 8ba3949..91f9a83 100644 --- a/source/ubinstall-gtk-advanced.c +++ b/source/ubinstall-gtk-advanced.c @@ -3,1041 +3,112 @@ #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; -// 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 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); + } +} -// } +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_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 on_advanced_part_content_changed(GtkWidget *, GtkWidget *, main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + int size = g_list_length(list); + if (!size){ + return; + } else if (size == 1){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(list->data),"advanced_part_widgets"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); + } else if (size == 2){ + advanced_part_widgets *part1 = g_object_get_data(G_OBJECT(list->data),"advanced_part_widgets"); + advanced_part_widgets *part2 = g_object_get_data(G_OBJECT(list->next->data),"advanced_part_widgets"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part1->SystemSectionToggle),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part1->UserDataSectionToggle),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part2->SystemSectionToggle),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part2->UserDataSectionToggle),1); + } +} -// 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); -// } -// } -// } +advanced_part_widgets *yon_advanced_part_get_for_name(const char *part_name,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"); + advanced_part_data *data = g_object_get_data(G_OBJECT(iter->data),"advanced_part_data"); + if (!yon_char_is_empty(data->device)){ + if (!strcmp(data->device,part_name)) return part; + } + if (!yon_char_is_empty(data->partition)){ + if (!strcmp(data->partition,part_name)) return part; + } + } + return 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])){ +void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); + 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); + gtk_list_store_set(widgets->DevicesList,&iter,5,!status,-1); + if (status){ + for_iter (model,&iter){ + gtk_list_store_set(widgets->DevicesList,&iter,6,1,-1); + } + yon_advanced_part_remove_parts_for_device(target,widgets); + } else { + yon_advanced_part_add_parts_for_device(target,widgets); + } + } +} -// 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_part_check_count(main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + int len = g_list_length(list); + g_list_free(list); + if (len<2) return 1; + return 0; +} -// } -// if (!yon_char_is_empty(swap_size)){ +void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); -// } + 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){ + advanced_part_widgets *part = yon_advanced_part_get_for_name(target_part,widgets); + if (part){ + gtk_list_store_set(widgets->PartitionsList,&iter,7,0,-1); + gtk_widget_destroy(part->MainBox); + free(part); + } -// } -// 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","+"); + } else if (yon_advanced_part_check_count(widgets)){ -// } -// 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"); + gtk_list_store_set(widgets->PartitionsList,&iter,7,1,-1); + yon_advanced_part_create_for_part(&iter,widgets); -// } 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 on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ - char *device = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo)); + const char *device = 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;iDevicesList); - int active_devices=0; - for_iter(model,&iter){ - int status; - gtk_tree_model_get(model,&iter,5,&status,-1); - if (status) active_devices++; + + advanced_part_widgets *part = NULL; + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + GList *iter; + for (iter = list; iter; iter=iter->next){ + advanced_part_data *data = g_object_get_data(G_OBJECT(iter->data),"advanced_part_data"); + if (data->part_source == PART_SOURCE_VIRTUAL){ + part = g_object_get_data(G_OBJECT(iter->data),"advanced_part_widgets"); + break; } + } - 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); + if (!yon_char_is_empty(device)){ + + if (part){ + advanced_part_data *data = g_object_get_data(G_OBJECT(part->MainBox),"advanced_part_data"); + free(data->device); + data->device = yon_char_new(device); + // yon_advanced_part_update_from_data(part, data); + } else { + if (yon_advanced_part_check_count(widgets)){ + advanced_part_data *data = yon_advanced_part_data_new(); + data->part_source = PART_SOURCE_VIRTUAL; + data->device = yon_char_new(device); + advanced_part_widgets *part = yon_advanced_part_create(data); + gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); + // yon_advanced_part_update_from_data(part, data); + + } else { + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + return; + } + } + } else { + if (part){ + gtk_widget_destroy(part->MainBox); + advanced_part_data *data = g_object_get_data(G_OBJECT(part->MainBox),"advanced_part_data"); + yon_advanced_part_data_unref(data); + free(part); + } } yon_char_parsed_free(vfs_file,size); // yon_advanced_update(widgets); } +int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets){ + GList *list = NULL; + if (widgets){ + list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + } else if (part){ + list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(part->MainBox))); + } + int size = g_list_length(list); + g_list_free(list); + return size; +} + +int yon_advanced_part_get_pos(advanced_part_widgets *part, main_window *widgets){ + if (!part) return -1; + GList *list = NULL; + if (widgets){ + list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + } else { + list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(part->MainBox))); + } + int pos = g_list_index(list,part->MainBox); + g_list_free(list); + return pos; +} advanced_part_data *yon_advanced_part_data_new(){ advanced_part_data *data = malloc(sizeof(advanced_part_data)); @@ -1081,6 +201,20 @@ advanced_part_data *yon_advanced_part_data_new(){ return data; } +void yon_advanced_part_data_unref(advanced_part_data *data){ + if (!data) return; + if (!yon_char_is_empty(data->device)) free(data->device); + if (!yon_char_is_empty(data->part_label)) free(data->part_label); + if (!yon_char_is_empty(data->encryption)) free(data->encryption); + if (!yon_char_is_empty(data->encryption_password)) free(data->encryption_password); + if (!yon_char_is_empty(data->format)) free(data->format); + if (!yon_char_is_empty(data->fs_label)) free(data->fs_label); + if (!yon_char_is_empty(data->fs_type)) free(data->fs_type); + if (!yon_char_is_empty(data->part_label)) free(data->part_label); + if (!yon_char_is_empty(data->partition)) free(data->partition); + free(data); +} + char *yon_advanced_part_data_get_parameter(const char *config_param, int pos){ char *final = NULL; char *parameter = (char*)config((char*)config_param); @@ -1112,12 +246,82 @@ advanced_part_data *yon_advanced_get_config_data(int pos){ return data; } -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_advanced_part_update_from_data(advanced_part_widgets *part, advanced_part_data *data){ + if (!part||!data) return; + char *source_string = NULL; + if (!yon_char_is_empty(data->partition)){ + source_string = data->partition; + } else if (!yon_char_is_empty(data->device)) { + source_string = data->device; + } + gtk_label_set_text(GTK_LABEL(part->SectionLabel),source_string); + + //toggle buttons + int pos = yon_advanced_part_get_pos(part,NULL); + int size = yon_advanced_part_get_size(part,NULL); + if (size == 1){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); + } else if (pos == 0){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),0); + } else if (pos == 1){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); + } + + // format + int format = 0; + if (yon_char_is_empty(data->format)) return; + if (!strcmp(data->format,"yes")){ + format = 2; + } else if (!strcmp(data->format,"no")){ + format = 1; + } + gtk_combo_box_set_active(GTK_COMBO_BOX(part->FormatCombo),format); + + //size + char *mod = yon_char_new("\n"); + double size_convert = yon_size_long_convert_automatic(data->size,mod); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),size_convert); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->SizeCombo),mod); + free(mod); + + // other + gtk_entry_set_text(GTK_ENTRY(part->PartLabelEntry),data->part_label); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->EncryptionCombo),data->encryption); + gtk_entry_set_text(GTK_ENTRY(part->EncryptionEntry),data->encryption_password); + gtk_entry_set_text(GTK_ENTRY(part->FileSystemLabelEntry),data->fs_label); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->FileSystemTypeCombo),data->fs_type); } +void yon_advanced_part_create_for_device(GtkTreeIter *iter, main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); + int status; + char *target; + gtk_tree_model_get(model,iter,0,&target,5,&status,-1); + if (status&&yon_advanced_part_check_count(widgets)){ + advanced_part_data *data = yon_advanced_part_data_new(); + data->device = target; + advanced_part_widgets *part = yon_advanced_part_create(data); + gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); + // yon_advanced_part_update_from_data(part,data); + } +} + +void yon_advanced_part_create_for_part(GtkTreeIter *iter, main_window *widgets){ + if (yon_advanced_part_check_count(widgets)){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PartitionsList),iter,0,&target,-1); + advanced_part_data *data = yon_advanced_part_data_new(); + data->partition = target; + advanced_part_widgets *part = yon_advanced_part_create(data); + gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); + // yon_advanced_part_update_from_data(part,data); + } +} + void yon_advanced_part_add_parts_for_device(const char *device_name, main_window *widgets){ for (int i=0;iPartitionsList,&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); + gtk_list_store_set(widgets->PartitionsList,&iter, + 0,yon_char_return_if_exist(parsed[2],""), 1,capacity_string, + 2,free_space_string, 3,yon_char_return_if_exist(parsed[4],""), + 4,yon_char_return_if_exist(parsed[5],""), 5,capacity, + 6,free_space, 8,1, + 9,yon_char_return_if_exist(parsed[7],""), 10,yon_char_return_if_exist(parsed[0],""), + 11,yon_char_return_if_exist(parsed[10],""),-1); + // } else { + // gtk_list_store_set(widgets->PartitionsList,&iter, ); + + } } } } @@ -1150,27 +359,28 @@ void yon_advanced_part_remove_parts_for_device(const char *device_name, main_win GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); for_iter(model, &iter){ - char *target; - gtk_tree_model_get(model,&iter,0,&target,-1); - for (int i=0;iPartitionsList,&iter); - } - yon_char_parsed_free(parsed,size); + char *target, *name; + gtk_tree_model_get(model,&iter,0,&name,10,&target,-1); + printf("%s\n",name); + if (strstr(device_name,target)){ + gtk_list_store_remove(widgets->PartitionsList,&iter); + if (!gtk_tree_model_get_iter_first(model,&iter)) break; } } + if (gtk_tree_model_get_iter_first(model,&iter)) { + char *target, *name; + gtk_tree_model_get(model,&iter,0,&name,10,&target,-1); + if (strstr(device_name,target)){ + gtk_list_store_remove(widgets->PartitionsList,&iter); + } + } } void on_advanced_part_create(GtkWidget *, main_window *widgets){ GtkTreeIter iter; 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,-1); - advanced_part_data *data = yon_advanced_part_data_new(); - yon_advanced_part_create_for_device(data,widgets); + yon_advanced_part_create_for_device(&iter,widgets); } } @@ -1180,11 +390,11 @@ int yon_advanced_part_select_for_data(advanced_part_data *data, main_window *wid 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)){ + if (!yon_char_is_empty(data->device)&&!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); + yon_advanced_part_create_for_device(&device_iter,widgets); } } } @@ -1204,6 +414,22 @@ int yon_advanced_part_select_for_data(advanced_part_data *data, main_window *wid } void yon_advanced_init(main_window *widgets){ + yon_devices_setup(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); + 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); @@ -1231,9 +457,6 @@ advanced_part_widgets *yon_advanced_part_create(advanced_part_data *part_data){ 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_LABEL); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->SizeCombo),"M",MB_LABEL); @@ -1246,10 +469,10 @@ advanced_part_widgets *yon_advanced_part_create(advanced_part_data *part_data){ 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->FormatCombo),"changed",G_CALLBACK(on_format_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)); diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c index 5c2523c..0c8d4bc 100644 --- a/source/ubinstall-gtk-config-hub.c +++ b/source/ubinstall-gtk-config-hub.c @@ -240,11 +240,10 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum config_hub_icon *cur_icon = malloc(sizeof(config_hub_icon)); memset(cur_icon,0,sizeof(config_hub_icon)); - GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE); - cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); cur_icon->Label = gtk_label_new(name); - cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL)); + cur_icon->Image = gtk_image_new_from_icon_name(icon,GTK_ICON_SIZE_BUTTON); + gtk_image_set_pixel_size(GTK_IMAGE(cur_icon->Image),54); cur_icon->page = page; GtkWidget *flow = gtk_flow_box_child_new(); gtk_style_context_add_class(gtk_widget_get_style_context(flow),"bggrey"); diff --git a/source/ubinstall-gtk-decorations.c b/source/ubinstall-gtk-decorations.c index 4fd5410..463a537 100644 --- a/source/ubinstall-gtk-decorations.c +++ b/source/ubinstall-gtk-decorations.c @@ -50,11 +50,11 @@ void yon_install_slider_update(main_window *widgets){ GtkWidget *Image = NULL; int chosen = iter==main_config.chosen_slide||(main_config.chosen_slide->next&&iter==main_config.chosen_slide->next)||(!main_config.chosen_slide->next&&iter==g_list_first(main_config.chosen_slide)); if (chosen){ - GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),toggled_icon_path,8,1,GTK_ICON_LOOKUP_FORCE_SIZE); - Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL)); + Image = gtk_image_new_from_icon_name(toggled_icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_pixel_size(GTK_IMAGE(Image),8); } else { - GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),untoggled_icon_path,8,1,GTK_ICON_LOOKUP_FORCE_SIZE); - Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL)); + Image = gtk_image_new_from_icon_name(untoggled_icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_pixel_size(GTK_IMAGE(Image),8); } gtk_box_pack_start(GTK_BOX(widgets->SliderProgressBox),Image,0,0,0); gtk_widget_show(Image); diff --git a/source/ubinstall-gtk-installation.c b/source/ubinstall-gtk-installation.c index 6990577..91d3466 100644 --- a/source/ubinstall-gtk-installation.c +++ b/source/ubinstall-gtk-installation.c @@ -183,61 +183,61 @@ int yon_install_same_partition_save(main_window *widgets){ return 1; } -int yon_advanced_sections_save(dictionary *dict){ - if (!dict) return 0; - 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_part_widgets*); - } - - char *part_first = first_section->part; - char *part_last = last_section?last_section->part:NULL; - char *part = yon_char_unite(part_first,last_section?",":NULL,part_last,NULL); - yon_config_register(part_parameter,part_parameter_command,part); - - int format_first_active = gtk_switch_get_active(GTK_SWITCH(first_section->FormatCombo)); - int format_last_active = gtk_switch_get_active(GTK_SWITCH(last_section->FormatCombo)); - char * format_first = format_first_active==1?"yes":format_first_active==2?"no":NULL; - char * format_last = format_last_active==1?"yes":format_last_active==2?"no":NULL; - char *format = yon_char_unite(format_first,part_last?",":NULL,format_last,NULL); - yon_config_register(part_format_parameter,part_format_parameter_command,format); - - if (!yon_char_is_empty(format)){ - char *size_first = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(first_section->SizeSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(first_section->SizeCombo)))); - char *size_last = last_section&&!strcmp(format_last,"yes")?g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(last_section->SizeSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(last_section->SizeCombo)))):NULL; - char *size = yon_char_unite(size_first,size_last?",":NULL,size_last,NULL); - yon_config_register(part_size_parameter,part_size_parameter_command,size); +// int yon_advanced_sections_save(dictionary *dict){ +// if (!dict) return 0; +// 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_part_widgets*); +// } + +// char *part_first = first_section->part; +// char *part_last = last_section?last_section->part:NULL; +// char *part = yon_char_unite(part_first,last_section?",":NULL,part_last,NULL); +// yon_config_register(part_parameter,part_parameter_command,part); + +// int format_first_active = gtk_switch_get_active(GTK_SWITCH(first_section->FormatCombo)); +// int format_last_active = gtk_switch_get_active(GTK_SWITCH(last_section->FormatCombo)); +// char * format_first = format_first_active==1?"yes":format_first_active==2?"no":NULL; +// char * format_last = format_last_active==1?"yes":format_last_active==2?"no":NULL; +// char *format = yon_char_unite(format_first,part_last?",":NULL,format_last,NULL); +// yon_config_register(part_format_parameter,part_format_parameter_command,format); + +// if (!yon_char_is_empty(format)){ +// char *size_first = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(first_section->SizeSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(first_section->SizeCombo)))); +// char *size_last = last_section&&!strcmp(format_last,"yes")?g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(last_section->SizeSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(last_section->SizeCombo)))):NULL; +// char *size = yon_char_unite(size_first,size_last?",":NULL,size_last,NULL); +// yon_config_register(part_size_parameter,part_size_parameter_command,size); - char *part_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->PartLabelEntry)); - char *part_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->PartLabelEntry)):NULL; - char *part_label = yon_char_unite(part_label_first,part_label_last?",":NULL,part_label_last,NULL); - yon_config_register(part_label_parameter,part_label_parameter_command,part_label); - - char *fs_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->FileSystemLabelEntry)); - char *fs_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->FileSystemLabelEntry)):NULL; - char *fs_label = yon_char_unite(fs_label_first,fs_label_last?",":NULL,fs_label_last,NULL); - yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label); - - char *fs_type_first = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(first_section->FileSystemTypeCombo)); - char *fs_type_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(last_section->FileSystemTypeCombo)):NULL; - char *fs_type = yon_char_unite(fs_type_first,fs_type_last?",":NULL,fs_type_last,NULL); - yon_config_register(part_fs_type_parameter,part_fs_type_parameter_command,fs_type); - - char *part_crypt_first = gtk_combo_box_get_active(GTK_COMBO_BOX(first_section->EncryptionCombo))?(char*)gtk_entry_get_text(GTK_ENTRY(first_section->EncryptionEntry)):NULL; - char *part_crypt_last = last_section&&!strcmp(format_last,"yes")&>k_combo_box_get_active(GTK_COMBO_BOX(last_section->EncryptionCombo))?(char*)gtk_entry_get_text(GTK_ENTRY(first_section->EncryptionEntry)):NULL; - char *part_crypt = NULL; - if (part_crypt_first||part_crypt_last){ - part_crypt = yon_char_unite(part_crypt_first,part_crypt_last?",":NULL,part_crypt_last,NULL); - } - if (part_crypt){ - yon_config_register(part_crypt_parameter,part_crypt_parameter_command,part_crypt); - } else { - yon_config_remove_by_key(part_crypt_parameter); - } - } - return 1; -} +// char *part_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->PartLabelEntry)); +// char *part_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->PartLabelEntry)):NULL; +// char *part_label = yon_char_unite(part_label_first,part_label_last?",":NULL,part_label_last,NULL); +// yon_config_register(part_label_parameter,part_label_parameter_command,part_label); + +// char *fs_label_first = (char*)gtk_entry_get_text(GTK_ENTRY(first_section->FileSystemLabelEntry)); +// char *fs_label_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_entry_get_text(GTK_ENTRY(last_section->FileSystemLabelEntry)):NULL; +// char *fs_label = yon_char_unite(fs_label_first,fs_label_last?",":NULL,fs_label_last,NULL); +// yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label); + +// char *fs_type_first = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(first_section->FileSystemTypeCombo)); +// char *fs_type_last = last_section&&!strcmp(format_last,"yes")?(char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(last_section->FileSystemTypeCombo)):NULL; +// char *fs_type = yon_char_unite(fs_type_first,fs_type_last?",":NULL,fs_type_last,NULL); +// yon_config_register(part_fs_type_parameter,part_fs_type_parameter_command,fs_type); + +// char *part_crypt_first = gtk_combo_box_get_active(GTK_COMBO_BOX(first_section->EncryptionCombo))?(char*)gtk_entry_get_text(GTK_ENTRY(first_section->EncryptionEntry)):NULL; +// char *part_crypt_last = last_section&&!strcmp(format_last,"yes")&>k_combo_box_get_active(GTK_COMBO_BOX(last_section->EncryptionCombo))?(char*)gtk_entry_get_text(GTK_ENTRY(first_section->EncryptionEntry)):NULL; +// char *part_crypt = NULL; +// if (part_crypt_first||part_crypt_last){ +// part_crypt = yon_char_unite(part_crypt_first,part_crypt_last?",":NULL,part_crypt_last,NULL); +// } +// if (part_crypt){ +// yon_config_register(part_crypt_parameter,part_crypt_parameter_command,part_crypt); +// } else { +// yon_config_remove_by_key(part_crypt_parameter); +// } +// } +// return 1; +// } void yon_size_changed(GtkSpinButton *self, main_window *widgets){ int cur_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); @@ -276,6 +276,9 @@ void yon_size_changed(GtkSpinButton *self, main_window *widgets){ void *yon_partitions_list_load(main_window *){ main_config.partitions = yon_config_load(yon_debug_output("%s\n",get_parts_for_device_command),&main_config.part_size); + for (int i=0;iTimeZoneMapOverlayInfoLabel),title_info); if (!yon_char_is_empty(icon_name)){ gtk_widget_show(widgets->TimeZoneMapOverlayImage); - GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), icon_path, 48,1,GTK_ICON_LOOKUP_FORCE_SIZE); - gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->TimeZoneMapOverlayImage),gtk_icon_info_load_icon(info,NULL)); + widgets->TimeZoneMapOverlayImage = gtk_image_new_from_icon_name(icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_pixel_size(GTK_IMAGE(widgets->TimeZoneMapOverlayImage),48); } else { gtk_widget_hide(widgets->TimeZoneMapOverlayImage); } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index bb562b6..9440563 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -773,11 +773,13 @@ 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->AdvancedPartitionAddBox),"add",G_CALLBACK(on_advanced_part_content_changed),widgets); + g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"remove",G_CALLBACK(on_advanced_part_content_changed),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_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->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 7b26eb9..7a43841 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -823,11 +823,6 @@ typedef struct GtkWidget *EncryptionEntry; GtkWidget *EncryptionButton; GtkWidget *SectionPartitionLabel; - GSequenceIter *order_iter; - - enum ADVANCED_PART_TYPE part_type; - char *part; - char *device; } advanced_part_widgets; typedef struct @@ -1100,7 +1095,7 @@ typedef struct char *format; gulong full_part_size; unsigned long size; - char size_letter; + // char size_letter; char *part_label; char *fs_type; char *fs_label; @@ -1295,7 +1290,7 @@ int yon_install_advanced_save(main_window *widgets); int yon_network_save(main_window *widgets); void on_connection_add(GtkWidget *, main_window *widgets); void on_ntp_sync(GtkWidget *, main_window *widgets); -int yon_advanced_sections_save(dictionary *dict); +// int yon_advanced_sections_save(dictionary *dict); void yon_configuration_mode_check(main_window *widgets); void on_configuration_mode_switch(GtkWidget *self, main_window *widgets); void *_yon_installation_start(main_window *widgets); @@ -1537,11 +1532,19 @@ 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_create_for_device(GtkTreeIter *iter, 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 +int yon_advanced_part_select_for_data(advanced_part_data *data, main_window *widgets); +int yon_advanced_part_check_count(main_window *widgets); +advanced_part_widgets *yon_advanced_part_get_for_name(const char *part_name,main_window *widgets); +void yon_advanced_part_create_for_part(GtkTreeIter *iter, main_window *widgets); +int yon_advanced_part_get_pos(advanced_part_widgets *part, main_window *widgets); +int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets); +void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_part_data *data); +void yon_advanced_part_data_unref(advanced_part_data *data); +void on_advanced_part_content_changed(GtkWidget *, GtkWidget *, main_window *widgets); \ No newline at end of file