Merge pull request 'master' (#109) from YanTheKaller/ubinstall-gtk:master into master

Reviewed-on: #109
master
Dmitry Razumov 2 weeks ago
commit 98a85a5348

@ -57,5 +57,6 @@
<file>services-list.csv</file> <file>services-list.csv</file>
<file>network-list.csv</file> <file>network-list.csv</file>
<file>filesystems-format-list.csv</file> <file>filesystems-format-list.csv</file>
<file>vfs-list.csv</file>
</gresource> </gresource>
</gresources> </gresources>

@ -296,7 +296,7 @@ msgstr "Расширенный режим установки"
msgid "" msgid ""
"Installing OS files, user data on different partitions, creating RAID, etc." "Installing OS files, user data on different partitions, creating RAID, etc."
msgstr "" msgstr ""
"Установка файлов ОС, пользовательских данныъ на разные разделы, создание " "Установка файлов ОС, пользовательских данных на разные разделы, создание "
"RAID и др." "RAID и др."
#: source/ubl-strings.h:77 #: source/ubl-strings.h:77

@ -79,6 +79,7 @@ set(DEPENDFILES
../services-list.csv ../services-list.csv
../network-list.csv ../network-list.csv
../filesystems-format-list.csv ../filesystems-format-list.csv
../vfs-list.csv
../icons-builtin/install_type_custom_normal.png ../icons-builtin/install_type_custom_normal.png
../icons-builtin/install_type_data_only_normal.png ../icons-builtin/install_type_data_only_normal.png
../icons-builtin/install_type_fast_normal.png ../icons-builtin/install_type_fast_normal.png

@ -13,6 +13,15 @@ advanced_section *yon_advanced_section_new(){
if (sections_size>=2) return NULL; if (sections_size>=2) return NULL;
advanced_section *section = malloc(sizeof(advanced_section)); advanced_section *section = malloc(sizeof(advanced_section));
memset(section,0,sizeof(advanced_section)); memset(section,0,sizeof(advanced_section));
if (!sections_size){
section->sys_section=1;
section->user_section=1;
} else {
section->sys_section=0;
section->user_section=1;
sections[0]->sys_section=1;
sections[0]->user_section=0;
}
return section; return section;
} }
@ -28,7 +37,7 @@ void yon_advanced_section_remove_all(){
sections_size=0; sections_size=0;
} }
void yon_advanced_section_remove(char *part){ void yon_advanced_section_remove_by_name(char *part){
int pos = yon_advanced_section_get(part); int pos = yon_advanced_section_get(part);
switch(pos){ switch(pos){
case 0: case 0:
@ -53,12 +62,47 @@ void yon_advanced_section_remove(char *part){
default: return; default: return;
} }
} }
void yon_advanced_section_remove(advanced_partition *part){
int pos = yon_advanced_section_get_by_part(part);
switch(pos){
case 0:
if (sections[0]){
free(sections[0]);
if (sections[1]){
sections[0]=sections[1];
sections[1]=NULL;
} else {
sections[0]=NULL;
}
sections_size--;
}
break;
case 1:
if (sections[1]){
free(sections[1]);
sections[1]=NULL;
sections_size--;
}
break;
default:return;
}
}
int yon_advanced_section_get_by_part(advanced_partition *part){
if (!part) return -1;
if (sections_size>0&&sections[0]->partition_widgets==part){
return 0;
} else if (sections_size>1&&sections[1]->partition_widgets==part){
return 1;
}
return -1;
}
int yon_advanced_section_get(char *partition){ int yon_advanced_section_get(char *partition){
if (yon_char_is_empty(partition)) return -1; if (yon_char_is_empty(partition)) return -1;
if (sections_size>0&&!strcmp(sections[0]->partition,partition)){ if (sections_size>0&&!strcmp(sections[0]->part_source==PART_SOURCE_PART?sections[0]->partition:sections[0]->device,partition)){
return 0; return 0;
} else if (sections_size>1&&!strcmp(sections[1]->partition,partition)){ } else if (sections_size>1&&!strcmp(sections[1]->part_source==PART_SOURCE_PART?sections[1]->partition:sections[1]->device,partition)){
return 1; return 1;
} }
return -1; return -1;
@ -66,26 +110,40 @@ int yon_advanced_section_get(char *partition){
void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section){ void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section){
if (part&&section){ if (part&&section){
gtk_label_set_text(GTK_LABEL(part->SectionLabel),section->partition); 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->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){ if (section->format){
gtk_switch_set_active(GTK_SWITCH(part->FormatSwitch),1); gtk_switch_set_active(GTK_SWITCH(part->FormatSwitch),1);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),section->size); if (section->size){
gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),yon_get_size_get_from_letter(section->size_letter)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(part->SizeSpin),section->size);
gtk_entry_set_text(GTK_ENTRY(part->PartLabelEntry),section->part_label); gtk_combo_box_set_active(GTK_COMBO_BOX(part->SizeCombo),yon_get_size_get_from_letter(section->size_letter));
gtk_entry_set_text(GTK_ENTRY(part->FileSystemLabelEntry),section->fs_label); }
gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->FileSystemTypeCombo),section->fs_type); if (section->part_label){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(part->EncryptionCombo),section->encryption); gtk_entry_set_text(GTK_ENTRY(part->PartLabelEntry),section->part_label);
gtk_entry_set_text(GTK_ENTRY(part->EncryptionEntry),section->encryption_password); }
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){ void yon_advanced_update(main_window *widgets){
yon_advanced_partition_clear(widgets); yon_advanced_partition_clear(widgets);
int virtual_found = 0;
for (int i=0;i<sections_size;i++){ for (int i=0;i<sections_size;i++){
advanced_partition *part = yon_advanced_partition_new(); advanced_partition *part = yon_advanced_partition_new();
if (sections[i]->partition_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->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);
@ -97,16 +155,34 @@ void yon_advanced_update(main_window *widgets){
GtkWidget *UserImage = gtk_button_get_image(GTK_BUTTON(part->UserDataSectionToggle)); 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(SystemImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON);
gtk_image_set_from_icon_name(GTK_IMAGE(UserImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON); gtk_image_set_from_icon_name(GTK_IMAGE(UserImage),toggled_icon_name,GTK_ICON_SIZE_BUTTON);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),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); 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);
g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets);
if (!virtual_found&&gtk_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; part->part_type = ADVANCED_PART_EXISTING;
} }
if (sections_size==2){ 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); gtk_widget_hide(widgets->AdvancedAddButton);
} else { } else {
gtk_widget_show(widgets->AdvancedAddButton); gtk_widget_show(widgets->AdvancedAddButton);
@ -130,7 +206,7 @@ void on_advanced_partition_create(GtkWidget *, main_window *widgets){
advanced_section *section = yon_advanced_section_new(); advanced_section *section = yon_advanced_section_new();
section->part_source = PART_SOURCE_DEVICE; section->part_source = PART_SOURCE_DEVICE;
section->device = target; section->device = target;
section->partition = target; section->partition = NULL;
sections[sections_size]=section; sections[sections_size]=section;
sections_size++; sections_size++;
break; break;
@ -146,7 +222,7 @@ void on_advanced_partition_create(GtkWidget *, main_window *widgets){
advanced_section *section = yon_advanced_section_new(); advanced_section *section = yon_advanced_section_new();
section->part_source = PART_SOURCE_DEVICE; section->part_source = PART_SOURCE_DEVICE;
section->device = target; section->device = target;
section->partition = target; section->partition = NULL;
sections[sections_size]=section; sections[sections_size]=section;
sections_size++; sections_size++;
} }
@ -164,19 +240,31 @@ void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets){
if (sections_size==2) return; if (sections_size==2) return;
advanced_section *section = yon_advanced_section_new(); advanced_section *section = yon_advanced_section_new();
section->part_source = PART_SOURCE_PART; section->part_source = PART_SOURCE_PART;
section->device = device; section->device = NULL;
section->partition = target = device; section->partition = target = device;
sections[sections_size]=section; sections[sections_size]=section;
sections_size++; sections_size++;
} else { } else {
yon_advanced_section_remove(target); yon_advanced_section_remove_by_name(target);
} }
} }
yon_advanced_update(widgets); yon_advanced_update(widgets);
} }
void yon_install_advanced_init(main_window *){ void yon_install_advanced_init(main_window *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;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(vmf_file[i],&parsed_size,";");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->AdvancedVirtualDeviceCombo),parsed[2],parsed[0]);
yon_char_parsed_free(parsed,parsed_size);
}
yon_char_parsed_free(vmf_file,size);
} }
void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){ void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets){
@ -198,14 +286,13 @@ void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_wi
advanced_section *section = yon_advanced_section_new(); advanced_section *section = yon_advanced_section_new();
section->part_source = PART_SOURCE_PART; section->part_source = PART_SOURCE_PART;
section->partition = target_part; section->partition = target_part;
section->device = device; section->device = NULL;
section->device = device;
sections[sections_size]=section; sections[sections_size]=section;
sections_size++; sections_size++;
} }
} else { } else {
gtk_list_store_set(widgets->PartitionsList,&iter,7,!status,-1); gtk_list_store_set(widgets->PartitionsList,&iter,7,!status,-1);
yon_advanced_section_remove(target_part); yon_advanced_section_remove_by_name(target_part);
} }
yon_advanced_update(widgets); yon_advanced_update(widgets);
} }
@ -263,7 +350,7 @@ void yon_advanced_parts_update(main_window *widgets){
GtkTreeIter itar; GtkTreeIter itar;
gtk_list_store_append(widgets->PartitionsList,&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,-1); 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(parsed,parsed_size);
} }
@ -273,14 +360,14 @@ void yon_advanced_parts_update(main_window *widgets){
} }
void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets){ void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets){
char *cur_name = part->part; char *cur_name = part->part_type == ADVANCED_PART_EXISTING?part->device:part->part;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList);
GtkTreeIter iter; GtkTreeIter iter;
long selected_size; long selected_size;
for_iter(model,&iter){ for_iter(model,&iter){
char *target; char *target;
gtk_tree_model_get(model,&iter,0,&target,-1); gtk_tree_model_get(model,&iter,part->part_type == ADVANCED_PART_EXISTING?9:0,&target,-1);
if (!strcmp(target,cur_name)){ if (!strcmp(target,cur_name)){
gtk_tree_model_get(model,&iter,6,&selected_size,-1); gtk_tree_model_get(model,&iter,6,&selected_size,-1);
if (!selected_size){ if (!selected_size){
@ -310,7 +397,6 @@ void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_wind
yon_advanced_section_remove_all(); yon_advanced_section_remove_all();
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList);
// int chosen = 0;
// chosen = yon_advanced_get_part_size(widgets); // chosen = yon_advanced_get_part_size(widgets);
if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ if (gtk_tree_model_get_iter_from_string(model,&iter,path)){
@ -327,7 +413,13 @@ void on_install_advanced_device_chosen(GtkCellRenderer *, gchar *path, main_wind
} }
} }
} }
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); // if (chosen) gtk_widget_set_sensitive(widgets->AdvancedAddButton,1);
// else gtk_widget_set_sensitive(widgets->AdvancedAddButton,0); // else gtk_widget_set_sensitive(widgets->AdvancedAddButton,0);
yon_advanced_parts_update(widgets); yon_advanced_parts_update(widgets);
@ -359,154 +451,187 @@ int yon_advanced_get_part_size(main_window *widgets){
return size; return size;
} }
void yon_advanced_section_update_section(advanced_partition *part,GtkWidget *cur_toggle,main_window *widgets){
int systoggle = cur_toggle == part->SystemSectionToggle;
advanced_section *section = sections[yon_advanced_section_get_by_part(part)];
g_signal_handlers_block_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets);
gboolean active = systoggle?section->sys_section:section->user_section;
gtk_widget_set_sensitive(cur_toggle,!active);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_toggle),active);
g_signal_handlers_unblock_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets);
GtkWidget *compare_image = gtk_button_get_image(GTK_BUTTON(cur_toggle));
gtk_image_set_from_icon_name(GTK_IMAGE(compare_image),!active?untoggled_icon_name:toggled_icon_name,GTK_ICON_SIZE_BUTTON);
}
void yon_advanced_section_update(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
GList *iter;
for (iter=list;iter;iter=iter->next){
advanced_partition *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition");
GtkWidget *cur_toggle = compare_part->SystemSectionToggle;
yon_advanced_section_update_section(compare_part,cur_toggle,widgets);
cur_toggle = compare_part->UserDataSectionToggle;
yon_advanced_section_update_section(compare_part,cur_toggle,widgets);
}
}
void on_advanced_section_toggled(GtkWidget *self, main_window *widgets){ void on_advanced_section_toggled(GtkWidget *self, main_window *widgets){
advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition"); advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition");
gtk_widget_set_sensitive(self,0); int pos = yon_advanced_section_get_by_part(part);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self),1); if (self == part->SystemSectionToggle){
GtkWidget *image = gtk_button_get_image(GTK_BUTTON(self)); sections[pos]->sys_section = 1;
gtk_image_set_from_icon_name(GTK_IMAGE(image),toggled_icon_name,GTK_ICON_SIZE_BUTTON); if (sections[!pos]&&sections[pos]->user_section){
sections[pos]->user_section=0;
sections[!pos]->user_section=1;
}
} else {
sections[pos]->user_section = 1;
if (sections[!pos]&&sections[pos]->sys_section){
sections[pos]->sys_section=0;
sections[!pos]->sys_section=1;
}
}
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
GList *iter; GList *iter;
for (iter=list;iter;iter=iter->next){ for (iter=list;iter;iter=iter->next){
advanced_partition *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition"); advanced_partition *compare_part = g_object_get_data(G_OBJECT(iter->data),"advanced_partition");
if (part != compare_part) { if (part != compare_part) {
GtkWidget *cur_toggle = self == part->SystemSectionToggle?compare_part->SystemSectionToggle:compare_part->UserDataSectionToggle; if (self == part->SystemSectionToggle){
g_signal_handlers_block_by_func(G_OBJECT(cur_toggle),G_CALLBACK(on_advanced_section_toggled),widgets); sections[yon_advanced_section_get_by_part(compare_part)]->sys_section = 0;
gtk_widget_set_sensitive(cur_toggle,1); } else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cur_toggle),0); sections[yon_advanced_section_get_by_part(compare_part)]->user_section = 0;
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),untoggled_icon_name,GTK_ICON_SIZE_BUTTON);
} }
} }
yon_advanced_section_update(widgets);
} }
int yon_advanced_save(main_window *widgets){ int yon_advanced_save(main_window *widgets){
yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"custom"); yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"custom");
int devices_size; char *devices[2] = {NULL};
config_str devices = NULL; char *parts[2] = {NULL};
int parts_size; char *part_size[2] = {NULL};
config_str parts = NULL; char *part_label[2] = {NULL};
int part_size_size; char *fs_type[2] = {NULL};
config_str part_size = NULL; char *fs_label[2] = {NULL};
int part_label_size; char *encryption[2] = {NULL};
config_str part_label = NULL; char *format[2] = {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){ if (!sections_size){
return 0; return 0;
} }
advanced_section *cur_section = sections[0]->sys_section?sections[0]:sections[1]; 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->device){
yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device);
}
if (!yon_char_is_empty(cur_section->partition)){ if (!yon_char_is_empty(cur_section->partition)){
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,cur_section->partition); if (!yon_char_is_empty(cur_section->partition)){
parts[0]=cur_section->partition;
} else {
parts[0]="";
}
} else { } else {
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,""); 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->size){ if (cur_section->size){
char *size_str = yon_char_from_long(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); 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); part_size[0]=sz_str;
} }
if (!yon_char_is_empty(cur_section->part_label)){ 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); part_label[0]=cur_section->part_label;
} }
if (!yon_char_is_empty(cur_section->fs_type)){ 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); fs_type[0]=cur_section->fs_type;
} }
if (!yon_char_is_empty(cur_section->fs_label)){ 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); fs_label[0]=cur_section->fs_label;
} }
if (cur_section->format){ if (cur_section->format){
yon_char_parsed_add_or_create_if_exists(format,&format_size,"yes"); format[0]="yes";
} else { } else {
yon_char_parsed_add_or_create_if_exists(format,&format_size,"no"); format[0]="no";
} }
if (!yon_char_is_empty(cur_section->encryption)){ if (!yon_char_is_empty(cur_section->encryption)){
char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL); 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); encryption[0]=encrypt_str;
} }
if (sections_size>1){ if (sections_size>1){
cur_section = sections[0]->sys_section?sections[1]:sections[0]; cur_section = sections[0]->sys_section?sections[1]:sections[0];
yon_char_parsed_add_or_create_if_exists(devices,&devices_size,cur_section->device); devices[1]=cur_section->device;
if (!yon_char_is_empty(cur_section->partition)){ if (!yon_char_is_empty(cur_section->partition)){
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,cur_section->partition); parts[1]=cur_section->partition;
} else { } else {
yon_char_parsed_add_or_create_if_exists(parts,&parts_size,""); parts[1]="";
} }
if (cur_section->size){ if (cur_section->size){
char *size_str = yon_char_from_long(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); 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); part_size[1]=sz_str;
} }
if (!yon_char_is_empty(cur_section->part_label)){ 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); part_label[1]=cur_section->part_label;
} }
if (!yon_char_is_empty(cur_section->fs_type)){ 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); fs_type[1]=cur_section->fs_type;
} }
if (!yon_char_is_empty(cur_section->fs_label)){ 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); fs_label[1]=cur_section->fs_label;
} }
if (cur_section->format){ if (cur_section->format){
yon_char_parsed_add_or_create_if_exists(format,&format_size,"yes"); format[1]="yes";
} else { } else {
yon_char_parsed_add_or_create_if_exists(format,&format_size,"no"); format[1]="no";
} }
if (!yon_char_is_empty(cur_section->encryption)){ if (!yon_char_is_empty(cur_section->encryption)){
char *encrypt_str = yon_char_unite(cur_section->encryption,":",cur_section->encryption_password,NULL); 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); encryption[1]=encrypt_str;
} }
} }
if (devices_size){ if (devices[0]||devices[1]){
char *devices_str = yon_char_parsed_to_string(devices,devices_size,","); char *devices_str = yon_char_parsed_to_string_full(devices,2,",");
yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,devices_str); yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,devices_str);
} }
if (parts_size){ if (!yon_char_is_empty(parts[0])||!yon_char_is_empty(parts[1])){
char *parts_str = yon_char_parsed_to_string(parts,parts_size,","); char *parts_str = yon_char_parsed_to_string_full(parts,2,",");
yon_config_register(part_parameter,part_parameter_command,parts_str); yon_config_register(part_parameter,part_parameter_command,parts_str);
} }
if (part_size_size){ if (part_size[0]||part_size[1]){
char *part_size_str = yon_char_parsed_to_string(part_size,part_size_size,","); 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); yon_config_register(part_size_parameter,part_size_parameter_command,part_size_str);
} }
if (part_label_size){ if (part_label[0]||part_label[1]){
char *part_label_str = yon_char_parsed_to_string(part_label,part_label_size,","); 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); yon_config_register(part_label_parameter,part_label_parameter_command,part_label_str);
} }
if (fs_type_size){ if (fs_type[0]||fs_type[1]){
char *fs_type_str = yon_char_parsed_to_string(fs_type,fs_type_size,","); 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); yon_config_register(part_fs_type_parameter,part_fs_type_parameter_command,fs_type_str);
} }
if (fs_label_size){ if (fs_label[0]||fs_label[1]){
char *fs_label_str = yon_char_parsed_to_string(fs_label,fs_label_size,","); 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); yon_config_register(part_fs_label_parameter,part_fs_label_parameter_command,fs_label_str);
} }
if (encryption_size){ if (encryption[0]||encryption[1]){
char *encryption_str = yon_char_parsed_to_string(encryption,encryption_size,","); char *encryption_str = yon_char_parsed_to_string_full(encryption,2,",");
yon_config_register(part_crypt_parameter,part_crypt_parameter_command,encryption_str); yon_config_register(part_crypt_parameter,part_crypt_parameter_command,encryption_str);
} }
if (format_size){ if (format[0]||format[1]){
char *format_str = yon_char_parsed_to_string(format,format_size,","); char *format_str = yon_char_parsed_to_string_full(format,2,",");
yon_config_register(part_format_parameter,part_format_parameter_command,format_str); yon_config_register(part_format_parameter,part_format_parameter_command,format_str);
} }
if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){ if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
@ -546,15 +671,18 @@ int yon_advanced_save(main_window *widgets){
yon_config_remove_by_key(swap_size_parameter); yon_config_remove_by_key(swap_size_parameter);
} }
} }
char *parameters = yon_config_get_all_info();
yon_debug_output("%s\n",parameters);
return 1; return 1;
} }
void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part){ void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part){
advanced_section *section = sections[yon_advanced_section_get(part->part)]; advanced_section *section = sections[yon_advanced_section_get_by_part(part)];
if (self == part->SizeCombo||self == part->SizeSpin){ if (self == part->SizeCombo||self == part->SizeSpin){
section->size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(part->SizeSpin)); section->size = gtk_spin_button_get_value(GTK_SPIN_BUTTON(part->SizeSpin));
section->size_letter = *yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(part->SizeCombo))); 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){ } else if (self == part->PartLabelEntry){
section->part_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->PartLabelEntry))); section->part_label = yon_char_new(gtk_entry_get_text(GTK_ENTRY(part->PartLabelEntry)));
} else if (self == part->FileSystemTypeCombo){ } else if (self == part->FileSystemTypeCombo){
@ -573,6 +701,11 @@ void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *pa
} }
} }
gboolean on_format_changed(GtkWidget *self, gboolean , advanced_partition *part){
yon_advanced_part_parameter_changed(self, part);
return 0;
}
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);
@ -593,13 +726,14 @@ advanced_partition *yon_advanced_partition_new(){
part->FormatRevealer = yon_gtk_builder_get_widget(builder,"FormatRevealer"); part->FormatRevealer = yon_gtk_builder_get_widget(builder,"FormatRevealer");
part->order_iter = NULL; part->order_iter = NULL;
part->part = NULL; part->part = NULL;
part->device = NULL;
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->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->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->EncryptionEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
g_signal_connect(G_OBJECT(part->FormatSwitch),"activate",G_CALLBACK(yon_advanced_part_parameter_changed),part); g_signal_connect(G_OBJECT(part->FormatSwitch),"state-set",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->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->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->PartLabelEntry),"changed",G_CALLBACK(yon_advanced_part_parameter_changed),part);
@ -627,8 +761,68 @@ advanced_partition *yon_advanced_partition_new(){
void on_advanced_part_remove(GtkWidget *self, main_window *widgets){ void on_advanced_part_remove(GtkWidget *self, main_window *widgets){
advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition"); advanced_partition *part = g_object_get_data(G_OBJECT(self),"advanced_partition");
yon_advanced_section_remove(part);
yon_advanced_section_remove(part->part); if (sections_size){
sections[0]->sys_section=1;
sections[0]->user_section=1;
}
yon_advanced_update(widgets); yon_advanced_update(widgets);
} }
int yon_advanced_section_append(advanced_section *section){
if (sections_size==2) return -1;
sections[sections_size] = section;
sections_size++;
return sections_size-1;
}
void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){
yon_advanced_section_remove_all();
char *device = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo));
int size;
config_str vfs_file = yon_resource_open_file(vfs_list_path,&size);
config_str cur_device = NULL;
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(vfs_file[i],&parsed_size,";");
if (!yon_char_is_empty(device)&&!yon_char_is_empty(parsed[2])&!strcmp(parsed[2],device)){
cur_device = parsed;
gtk_label_set_text(GTK_LABEL(widgets->AdvancedVirtualDeviceLabel),parsed[1]);
} else {
yon_char_parsed_free(parsed,parsed_size);
}
}
if (!yon_char_is_empty(device)){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList);
int active_devices=0;
for_iter(model,&iter){
int status;
gtk_tree_model_get(model,&iter,5,&status,-1);
if (status) active_devices++;
}
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;
}
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;
}
advanced_section *section = yon_advanced_section_new();
section->part_source = PART_SOURCE_VIRTUAL;
section->partition = device;
section->device = device;
yon_advanced_section_append(section);
}
yon_char_parsed_free(vfs_file,size);
yon_advanced_update(widgets);
}

@ -29,6 +29,11 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_COMPLETED:
case YON_PAGE_INSTALL_ERROR:
case YON_PAGE_CONFIGURE_END:
on_reboot_accepted(widgets);
break;
default:return YON_PAGE_WELCOME; default:return YON_PAGE_WELCOME;
} }
return YON_PAGE_WELCOME; return YON_PAGE_WELCOME;
@ -360,10 +365,12 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_NETWORK: case YON_PAGE_NETWORK:
yon_network_init(widgets); yon_network_init(widgets);
break; break;
case YON_PAGE_INSTALL_ADVANCED:
yon_install_advanced_init(widgets);
[[fallthrough]];
case YON_PAGE_INSTALL_COMMON: case YON_PAGE_INSTALL_COMMON:
case YON_PAGE_INSTALL_SEPARATE: case YON_PAGE_INSTALL_SEPARATE:
case YON_PAGE_INSTALL_SAME_PARTITION: case YON_PAGE_INSTALL_SAME_PARTITION:
case YON_PAGE_INSTALL_ADVANCED:
case YON_PAGE_RECOVERY_GRUB_INSTALL: case YON_PAGE_RECOVERY_GRUB_INSTALL:
case YON_PAGE_RECOVERY_GRUB_UPDATE: case YON_PAGE_RECOVERY_GRUB_UPDATE:
case YON_PAGE_RECOVERY_OS_ONLY: case YON_PAGE_RECOVERY_OS_ONLY:

@ -820,6 +820,7 @@ void yon_main_window_create(main_window *widgets){
widgets->NetworkConnectionsAddButton = yon_gtk_builder_get_widget(builder,"NetworkConnectionsAddButton"); widgets->NetworkConnectionsAddButton = yon_gtk_builder_get_widget(builder,"NetworkConnectionsAddButton");
widgets->HostnameSensitiveSwitch = yon_gtk_builder_get_widget(builder,"HostnameSensitiveSwitch"); widgets->HostnameSensitiveSwitch = yon_gtk_builder_get_widget(builder,"HostnameSensitiveSwitch");
widgets->AutoHostnameCheck=yon_gtk_builder_get_widget(builder,"AutoHostnameCheck"); widgets->AutoHostnameCheck=yon_gtk_builder_get_widget(builder,"AutoHostnameCheck");
widgets->AdvancedVirtualDeviceLabel = yon_gtk_builder_get_widget(builder,"AdvancedVirtualDeviceLabel");
widgets->network_connections = NULL; widgets->network_connections = NULL;
widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL); widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
@ -932,6 +933,7 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets); g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); g_signal_connect(G_OBJECT(widgets->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);
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL);
{ {

@ -71,6 +71,7 @@
#define services_list_path "resource:///com/ublinux/csv/services-list.csv" #define services_list_path "resource:///com/ublinux/csv/services-list.csv"
#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 vfs_list_path "resource:///com/ublinux/csv/vfs-list.csv"
#define encryptions_list "luks1","luks2" #define encryptions_list "luks1","luks2"
@ -92,6 +93,7 @@
"/com/ublinux/images/slide-12.png", \ "/com/ublinux/images/slide-12.png", \
NULL NULL
#define get_modules_command "pacman --color never -Ss ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\"" #define get_modules_command "pacman --color never -Ss ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\""
#define get_local_module_info_command(target) yon_char_unite("pacman --color never -Sp $(pacman -Ssq '",target,"') --print-format '%n;%v;%d' | grep -v \"^::\"",NULL); #define get_local_module_info_command(target) yon_char_unite("pacman --color never -Sp $(pacman -Ssq '",target,"') --print-format '%n;%v;%d' | grep -v \"^::\"",NULL);
@ -677,6 +679,7 @@ typedef struct {
GtkWidget *AdvancedSwapFixedSizeSwitch; GtkWidget *AdvancedSwapFixedSizeSwitch;
GtkWidget *AdvancedSwapRevealer; GtkWidget *AdvancedSwapRevealer;
GtkWidget *AdvancedLoadTypeRevealer; GtkWidget *AdvancedLoadTypeRevealer;
GtkWidget *AdvancedVirtualDeviceLabel;
dictionary *advanced_sections; dictionary *advanced_sections;
GSequence *advanced_partition_order; GSequence *advanced_partition_order;
@ -709,10 +712,12 @@ typedef struct {
GtkWidget *EncryptionCombo; GtkWidget *EncryptionCombo;
GtkWidget *EncryptionEntry; GtkWidget *EncryptionEntry;
GtkWidget *EncryptionButton; GtkWidget *EncryptionButton;
GtkWidget *SectionPartitionLabel;
GSequenceIter *order_iter; GSequenceIter *order_iter;
enum ADVANCED_PART_TYPE part_type; enum ADVANCED_PART_TYPE part_type;
char *part; char *part;
char *device;
} advanced_partition; } advanced_partition;
typedef struct { typedef struct {
@ -934,7 +939,8 @@ typedef struct {
enum PART_SOURCE { enum PART_SOURCE {
PART_SOURCE_DEVICE, PART_SOURCE_DEVICE,
PART_SOURCE_PART PART_SOURCE_PART,
PART_SOURCE_VIRTUAL
}; };
typedef struct { typedef struct {
@ -951,6 +957,7 @@ typedef struct {
char *encryption; char *encryption;
char *encryption_password; char *encryption_password;
enum PART_SOURCE part_source; enum PART_SOURCE part_source;
advanced_partition *partition_widgets;
} advanced_section; } advanced_section;
@ -1173,3 +1180,10 @@ void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_win
void on_advanced_size_changed(GtkWidget *self,main_window *widgets); void on_advanced_size_changed(GtkWidget *self,main_window *widgets);
int yon_advanced_save(main_window *widgets); int yon_advanced_save(main_window *widgets);
void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part); void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part);
void yon_advanced_section_update(main_window *widgets);
void yon_advanced_section_update_section(advanced_partition *part,GtkWidget *cur_toggle,main_window *widgets);
int yon_advanced_section_get_by_part(advanced_partition *part);
void yon_advanced_section_remove_by_name(char *part);
void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets);
int yon_advanced_section_append(advanced_section *section);
gboolean on_format_changed(GtkWidget *self, gboolean state, advanced_partition *part);

@ -212,6 +212,10 @@
#define CONFIGURATION_MODE_TITLE_LABEL _("Choose installation configuration file") #define CONFIGURATION_MODE_TITLE_LABEL _("Choose installation configuration file")
#define SAVE_AND_EXIT_LABEL _("Save and exit") #define SAVE_AND_EXIT_LABEL _("Save and exit")
#define NO_LABEL _("No")
#define PARITY_INVALID_LABEL(target) yon_char_unite(_("Cu"),target,NULL)
#define COUNT_INVALID_LABEL(target) yon_char_unite(_("Cues"),target,NULL)
// #define _LABEL _("New section at") // #define _LABEL _("New section at")
// #define _LABEL _("\"/ublinux-data/\" user data section") // #define _LABEL _("\"/ublinux-data/\" user data section")
@ -323,7 +327,6 @@
// #define _LABEL _("Common Installation") // #define _LABEL _("Common Installation")
// #define _LABEL _("Select partiton:") // #define _LABEL _("Select partiton:")
// #define _LABEL _("Installation on same partition") // #define _LABEL _("Installation on same partition")
// #define _LABEL _("No")
// #define _LABEL _("Advanced section") // #define _LABEL _("Advanced section")
// #define _LABEL _("Recovery section") // #define _LABEL _("Recovery section")
// #define _LABEL _("Start installation scenario") // #define _LABEL _("Start installation scenario")

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.40.0 -->
<interface domain="ubinstall-gtk"> <interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css --> <!-- interface-css-provider-path ubinstall-gtk.css -->
@ -48,7 +48,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="SectionPartitionLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">New section at</property> <property name="label" translatable="yes">New section at</property>
@ -223,6 +223,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property> <property name="active">0</property>
<items> <items>
<item id="K" translatable="yes">Kb</item>
<item id="M" translatable="yes">Mb</item> <item id="M" translatable="yes">Mb</item>
<item id="G" translatable="yes">Gb</item> <item id="G" translatable="yes">Gb</item>
<item id="T" translatable="yes">Tb</item> <item id="T" translatable="yes">Tb</item>

@ -15,6 +15,11 @@
<column type="gchararray"/> <column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkAdjustment" id="AdvancedSwapAdjustment">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkListStore" id="BootloadUsersList"> <object class="GtkListStore" id="BootloadUsersList">
<columns> <columns>
<!-- column-name Admin --> <!-- column-name Admin -->
@ -6837,6 +6842,55 @@ separately into the selected partition.</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Virtual device type:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="AdvancedVirtualDeviceCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="AdvancedVirtualDeviceLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -6986,54 +7040,6 @@ separately into the selected partition.</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Virtual device type:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="AdvancedVirtualDeviceCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item id="none" translatable="yes">No</item>
<item id="raid0" translatable="yes">RAID0</item>
<item id="raid1" translatable="yes">RAID1</item>
<item id="raid4" translatable="yes">DAID4</item>
<item id="raid5" translatable="yes">RAID5</item>
<item id="raid6" translatable="yes">RAID6</item>
<item id="lvm" translatable="yes">LVM</item>
<item id="lvm_dynamic" translatable="yes">LVM_DYNAMIC</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
@ -7632,6 +7638,7 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="adjustment">AdvancedSwapAdjustment</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

@ -0,0 +1,9 @@
VFS_NAME;VFS_DESCRIPTION;VFS_CONFIG;VFS_MIN;VSF_PATITY
RAID0;raid0 description;raid0;2;
RAID1;raid1 description;raid1;2;2
RAID4;raid4 description;raid4;2;
RAID5;raid5 description;raid5;3;
RAID6;raid5 description;raid6;2;
RAID10;raid10 description;raid10;4;2
LVM;lvm description;lvm;2;
LVM DYNAMIC;lvm_dynamic description;lvm_dynamic;2;
1 VFS_NAME VFS_DESCRIPTION VFS_CONFIG VFS_MIN VSF_PATITY
2 RAID0 raid0 description raid0 2
3 RAID1 raid1 description raid1 2 2
4 RAID4 raid4 description raid4 2
5 RAID5 raid5 description raid5 3
6 RAID6 raid5 description raid6 2
7 RAID10 raid10 description raid10 4 2
8 LVM lvm description lvm 2
9 LVM DYNAMIC lvm_dynamic description lvm_dynamic 2
Loading…
Cancel
Save