WIP advanced install saving

pull/102/head
parent 0275a402e0
commit 2abd3a7b86
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -89,6 +89,7 @@ void yon_advanced_update(main_window *widgets){
g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove),widgets); 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->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->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){ if (i==0){
gtk_widget_set_sensitive(part->SystemSectionToggle,0); gtk_widget_set_sensitive(part->SystemSectionToggle,0);
gtk_widget_set_sensitive(part->UserDataSectionToggle,0); gtk_widget_set_sensitive(part->UserDataSectionToggle,0);
@ -100,6 +101,7 @@ void yon_advanced_update(main_window *widgets){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1);
} }
yon_advanced_partition_set_from_section(part,sections[i]); 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); gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0);
part->part_type = ADVANCED_PART_EXISTING; part->part_type = ADVANCED_PART_EXISTING;
@ -265,6 +267,39 @@ void yon_advanced_parts_update(main_window *widgets){
yon_char_parsed_free(partitions,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;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
GtkTreeIter iter;
long selected_size;
for_iter(model,&iter){
char *target;
gtk_tree_model_get(model,&iter,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 *self,main_window *widgets){
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){ void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){
gtk_list_store_clear(widgets->PartitionsList); gtk_list_store_clear(widgets->PartitionsList);
yon_advanced_section_remove_all(); yon_advanced_section_remove_all();
@ -295,7 +330,10 @@ void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_wind
} }
void on_advanced_password_clicked(GtkWidget *, advanced_partition *part){ void on_advanced_password_clicked(GtkWidget *, advanced_partition *part){
yon_password_open(GTK_ENTRY(part->EncryptionEntry)); 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){ void yon_advanced_partition_clear(main_window *widgets){
@ -338,6 +376,96 @@ void on_advanced_section_toggled(GtkWidget *self, main_window *widgets){
} }
} }
int yon_advanced_save(main_window *){
int devices_size;
config_str devices = NULL;
int parts_size;
config_str parts = NULL;
int part_size_size;
config_str part_size = NULL;
int part_label_size;
config_str part_label = NULL;
int fs_type_size;
config_str fs_type = NULL;
int fs_label_size;
config_str fs_label = NULL;
int encryption_size;
config_str encryption = NULL;
int format_size;
config_str format = NULL;
if (!sections_size){
return 0;
}
advanced_section *cur_section = sections[0]->sys_section?sections[0]:sections[1];
yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
if (cur_section->user_section){
yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
}
if (!yon_char_is_empty(cur_section->partition)){
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,cur_section->partition);
} else {
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,"");
}
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);
yon_char_parsed_add_or_create_if_exists(part_size,&part_size_size,sz_str);
}
if (!yon_char_is_empty(cur_section->part_label)){
yon_char_parsed_add_or_create_if_exists(part_label,&part_label_size,cur_section->part_label);
}
if (!yon_char_is_empty(cur_section->fs_type)){
yon_char_parsed_add_or_create_if_exists(fs_type,&fs_type_size,cur_section->fs_type);
}
if (!yon_char_is_empty(cur_section->fs_label)){
yon_char_parsed_add_or_create_if_exists(fs_label,&fs_label_size,cur_section->fs_label);
}
if (cur_section->format){
yon_char_parsed_add_or_create_if_exists(format,&format_size,"yes");
} else {
yon_char_parsed_add_or_create_if_exists(format,&format_size,"no");
}
if (!yon_char_is_empty(cur_section->encryption)){
char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL);
yon_char_parsed_add_or_create_if_exists(encryption,&encryption_size,encrypt_str);
}
if (sections_size>1){
cur_section = sections[0]->sys_section?sections[1]:sections[0];
yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
if (!yon_char_is_empty(cur_section->partition)){
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,cur_section->partition);
} else {
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,"");
}
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);
yon_char_parsed_add_or_create_if_exists(part_size,&part_size_size,sz_str);
}
if (!yon_char_is_empty(cur_section->part_label)){
yon_char_parsed_add_or_create_if_exists(part_label,&part_label_size,cur_section->part_label);
}
if (!yon_char_is_empty(cur_section->fs_type)){
yon_char_parsed_add_or_create_if_exists(fs_type,&fs_type_size,cur_section->fs_type);
}
if (!yon_char_is_empty(cur_section->fs_label)){
yon_char_parsed_add_or_create_if_exists(fs_label,&fs_label_size,cur_section->fs_label);
}
if (cur_section->format){
yon_char_parsed_add_or_create_if_exists(format,&format_size,"yes");
} else {
yon_char_parsed_add_or_create_if_exists(format,&format_size,"no");
}
if (!yon_char_is_empty(cur_section->encryption)){
char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL);
yon_char_parsed_add_or_create_if_exists(encryption,&encryption_size,encrypt_str);
}
}
return 1;
}
advanced_partition *yon_advanced_partition_new(){ advanced_partition *yon_advanced_partition_new(){
advanced_partition *part = new(advanced_partition); advanced_partition *part = new(advanced_partition);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_advanced_part); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_advanced_part);
@ -361,14 +489,23 @@ advanced_partition *yon_advanced_partition_new(){
yon_gtk_revealer_set_from_switch(GTK_REVEALER(part->FormatRevealer),GTK_SWITCH(part->FormatSwitch)); yon_gtk_revealer_set_from_switch(GTK_REVEALER(part->FormatRevealer),GTK_SWITCH(part->FormatSwitch));
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);
yon_fs_type_setup(GTK_COMBO_BOX_TEXT(part->FileSystemTypeCombo)); 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->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->RemoveButton),"advanced_partition",part);
g_object_set_data(G_OBJECT(part->SystemSectionToggle),"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->UserDataSectionToggle),"advanced_partition",part);
int size;
config_str encryptions = yon_char_parsed_new(&size,encryptions_list,NULL);
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(part->EncryptionCombo),encryptions[i],encryptions[i]);
}
yon_char_parsed_free(encryptions,size);
return part; return part;
} }

@ -225,59 +225,59 @@ int yon_advanced_sections_save(dictionary *dict){
return 1; return 1;
} }
int yon_install_advanced_save(main_window *widgets){ // int yon_install_advanced_save(main_window *widgets){
GtkTreeModel *model; // GtkTreeModel *model;
GtkTreeIter iter; // GtkTreeIter iter;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){ // if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); // yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedDeviceTree)); // yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedDeviceTree));
return 0; // return 0;
} // }
char *device; // char *device;
gtk_tree_model_get(model,&iter,0,&device,-1); // gtk_tree_model_get(model,&iter,0,&device,-1);
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedPartitionTree)),&model,&iter)){ // if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedPartitionTree)),&model,&iter)){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); // yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedPartitionTree)); // yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedPartitionTree));
return 0; // return 0;
} // }
yon_config_remove_by_key(part_size_parameter); // yon_config_remove_by_key(part_size_parameter);
char *part; // char *part;
gtk_tree_model_get(model,&iter,0,&part,-1); // gtk_tree_model_get(model,&iter,0,&part,-1);
if (!yon_advanced_sections_save(widgets->advanced_sections)){ // if (!yon_advanced_sections_save(widgets->advanced_sections)){
return 0; // return 0;
} // }
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){ // if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){ // if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){
yon_config_register(swap_parameter,swap_parameter_command,"auto"); // yon_config_register(swap_parameter,swap_parameter_command,"auto");
} else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){ // } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){
yon_config_register(swap_parameter,swap_parameter_command,"yes"); // yon_config_register(swap_parameter,swap_parameter_command,"yes");
yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram"); // yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram");
} else { // } else {
yon_config_register(swap_parameter,swap_parameter_command,"yes"); // yon_config_register(swap_parameter,swap_parameter_command,"yes");
char *swap = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdvancedSwapFixedSizeSwitch))+1)); // char *swap = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdvancedSwapFixedSizeSwitch))+1));
yon_config_register(swap_size_parameter,swap_size_parameter_command,swap); // yon_config_register(swap_size_parameter,swap_size_parameter_command,swap);
} // }
} // }
const char *device_typevfs = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo)); // const char *device_typevfs = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo));
if (!yon_char_is_empty(device_typevfs)){ // if (!yon_char_is_empty(device_typevfs)){
yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs); // yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs);
} else { // } else {
yon_config_remove_by_key(device_typevfs_parameter); // yon_config_remove_by_key(device_typevfs_parameter);
} // }
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){ // if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":""; // char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":"";
char *efi = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))?"efi":NULL; // char *efi = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))?"efi":NULL;
char *boot = yon_char_unite(bios,!yon_char_is_empty(bios)&&!yon_char_is_empty(efi)?"+":"",efi,NULL); // char *boot = yon_char_unite(bios,!yon_char_is_empty(bios)&&!yon_char_is_empty(efi)?"+":"",efi,NULL);
yon_config_register(boot_parameter,boot_parameter_command,boot); // yon_config_register(boot_parameter,boot_parameter_command,boot);
} else { // } else {
yon_config_register(boot_parameter,boot_parameter_command,"none"); // yon_config_register(boot_parameter,boot_parameter_command,"none");
} // }
return 1; // return 1;
} // }
void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_button, GtkComboBox *spin_combo){ void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_button, GtkComboBox *spin_combo){
GtkTreeModel *model; GtkTreeModel *model;
@ -305,9 +305,6 @@ void on_partition_changed(GtkWidget *self, main_window *widgets){
if (self==widgets->NextInstallationSysSectionTree||self == widgets->NextInstallationSizeTypeSpin){ if (self==widgets->NextInstallationSysSectionTree||self == widgets->NextInstallationSizeTypeSpin){
yon_set_max_size_from_partition(GTK_TREE_VIEW(widgets->NextInstallationSysSectionTree),GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin),GTK_COMBO_BOX(widgets->NextInstallationSizeTypeSpin)); yon_set_max_size_from_partition(GTK_TREE_VIEW(widgets->NextInstallationSysSectionTree),GTK_SPIN_BUTTON(widgets->NextInstallationSizeSpin),GTK_COMBO_BOX(widgets->NextInstallationSizeTypeSpin));
} }
if (self==widgets->AdvancedPartitionTree){
}
} }

@ -191,7 +191,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
return yon_install_same_partition_save(widgets); return yon_install_same_partition_save(widgets);
break; break;
case YON_PAGE_INSTALL_ADVANCED: case YON_PAGE_INSTALL_ADVANCED:
return yon_install_advanced_save(widgets); return yon_advanced_save(widgets);
break; break;
case YON_PAGE_RECOVERY_GRUB_INSTALL: case YON_PAGE_RECOVERY_GRUB_INSTALL:
return yon_grub_install_save(widgets); return yon_grub_install_save(widgets);

@ -72,6 +72,8 @@
#define network_path "resource:///com/ublinux/csv/network-list.csv" #define network_path "resource:///com/ublinux/csv/network-list.csv"
#define fs_types_path "resource:///com/ublinux/csv/filesystems-format-list.csv" #define fs_types_path "resource:///com/ublinux/csv/filesystems-format-list.csv"
#define encryptions_list "luks1","luks2"
#define locales_list_command "/usr/share/i18n/locales/" #define locales_list_command "/usr/share/i18n/locales/"
#define slide_0_path "/com/ublinux/images/slide-0.png" #define slide_0_path "/com/ublinux/images/slide-0.png"
@ -937,7 +939,9 @@ enum PART_SOURCE {
typedef struct { typedef struct {
char *partition; char *partition;
char *device_source; char *device;
int sys_section;
int user_section;
gboolean format; gboolean format;
unsigned long size; unsigned long size;
char size_letter; char size_letter;
@ -1165,3 +1169,6 @@ void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets);
void yon_advanced_section_remove_all(); void yon_advanced_section_remove_all();
void on_advanced_section_toggled(GtkWidget *self, main_window *widgets); void on_advanced_section_toggled(GtkWidget *self, main_window *widgets);
void yon_fs_type_setup(GtkComboBoxText *target); 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);

@ -364,6 +364,7 @@
<child> <child>
<object class="GtkEntry" id="EncryptionEntry"> <object class="GtkEntry" id="EncryptionEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
@ -375,6 +376,7 @@
<child> <child>
<object class="GtkButton" id="EncryptionButton"> <object class="GtkButton" id="EncryptionButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image4</property> <property name="image">image4</property>

Loading…
Cancel
Save