diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index ad5d5e3..bbf67fe 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -1,7 +1,7 @@ #include "ubinstall-gtk.h" int yon_keyboard_save(main_window *widgets){ - GtkTreeIter iter; + GtkTreeIter iter,iter_child; if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutList),&iter)){ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),LAYOUTS_CHOSEN_BUT_EMPTY_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->LayoutTree)); @@ -12,9 +12,23 @@ int yon_keyboard_save(main_window *widgets){ char *cur_layout=NULL; for_iter(layouts_model,&iter){ int chosen=0; - gtk_tree_model_get(layouts_model,&iter,0,&cur_layout,3,&chosen,-1); + int primary=0; + gtk_tree_model_get(layouts_model,&iter,0,&cur_layout,3,&chosen,4,&primary,-1); if (chosen) layouts_list = yon_char_unite(layouts_list,yon_char_is_empty(layouts_list)?"":",",cur_layout,NULL); + if (primary){ + yon_config_register(xkbvariant_parameter,xkbvariant_parameter_command,cur_layout); + } + if (gtk_tree_model_iter_children(layouts_model,&iter_child,&iter)){ + for(int valid2=1;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LayoutList),&iter_child)){ + gtk_tree_model_get(layouts_model,&iter_child,0,&cur_layout,3,&chosen,4,&primary,-1); + if (chosen) + layouts_list = yon_char_unite(layouts_list,yon_char_is_empty(layouts_list)?"":",",cur_layout,NULL); + if (primary){ + yon_config_register(xkbvariant_parameter,xkbvariant_parameter_command,cur_layout); + } + } + } } if (yon_char_is_empty(layouts_list)) @@ -211,6 +225,7 @@ void on_keyboard_clicked (GtkWidget *, main_window *widgets){ ubinstall_keyboard_window *window = yon_ubinstall_keyboard_new(); yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->MainWindow),KEYBOARD_TITLE_LABEL,icon_path,"keyboard-window"); gtk_tree_view_set_model(GTK_TREE_VIEW(window->LayoutsTree),GTK_TREE_MODEL(widgets->LayoutList)); + gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(window->LayoutsTree),1)); g_signal_connect(G_OBJECT(window->ActiveToggle),"toggled",G_CALLBACK(on_layout_toggle),window); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_keyboard_accept),widgets); @@ -228,7 +243,7 @@ void yon_layout_build(char *key, GHashTable *value, main_window *widgets){ for (iterator=list;iterator;iterator=iterator->next){ if (!yon_char_is_empty((char*)iterator->data)){ gtk_tree_store_append(widgets->LayoutList,&iter,&parent); - gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,-1); + gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,4,1,-1); } } } @@ -299,4 +314,33 @@ void yon_keyboard_init(main_window *widgets){ } else { } +} + +void on_keyboard_layout_chosen(GtkCellRenderer *, gchar *path, main_window *widgets){ + GtkTreeIter iter, itar, itor, itur; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->LayoutsFilter),&iter,path); + int status; + char *target; + gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),&itur,&iter); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutList),&itur,4,&status,1,&target,-1); + // g_signal_handlers_block_by_func(self,G_CALLBACK(on_keyboard_layout_chosen),widgets); + for_iter(GTK_TREE_MODEL(widgets->LayoutsFilter),&itar){ + gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),&itor,&itar); + // gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(widgets->LayoutList),&itar,&itor); + gtk_tree_store_set(widgets->LayoutList,&itor,4,0,-1); + GtkTreeIter itor_child; + if (gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->LayoutList),&itor_child,&itor)){ + for(int valid2=1;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LayoutList),&itor_child)){ + gtk_tree_store_set(widgets->LayoutList,&itor_child,4,0,-1); + } + } + + } + gtk_tree_store_set(widgets->LayoutList,&itur,4,!status,-1); + // g_signal_handlers_unblock_by_func(self,G_CALLBACK(on_keyboard_layout_chosen),widgets); + if (!status){ + yon_config_register(xkbvariant_parameter,xkbvariant_parameter_command,target); + } else { + yon_config_remove_by_key(xkbvariant_parameter); + } } \ No newline at end of file diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 24a0e8b..5bf7785 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -174,6 +174,7 @@ int yon_network_save(main_window *widgets){ yon_ubl_status_highlight_incorrect(widgets->NetworkDomainPasswordEntry); return 0; } + yon_char_remove_last_symbol(encrypted_password[0],'\n'); char *admin_string_full = yon_char_unite(domain_admin,":",encrypted_password[0],NULL); yon_config_register(DOMAIN_admanger_parameter,DOMAIN_parameter_command,admin_string_full); } else { diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index f86481f..553573d 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -520,16 +520,16 @@ void *on_config_save(void *data){ enum INSTALL_TYPE install_mode = yon_ubl_get_install_mode(); switch(install_mode){ case INSTALL_COMMON: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_common_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_common_parameters,modules_parameter,NULL); break; case INSTALL_PART: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_part_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_part_parameters,modules_parameter,NULL); break; case INSTALL_NEXT: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_next_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_next_parameters,modules_parameter,NULL); break; case INSTALL_ADVANCED: - parameters = yon_config_get_selection_by_key_no_ignored(&size,install_advanced_parameters,NULL); + parameters = yon_config_get_selection_by_key_no_ignored(&size,install_advanced_parameters,modules_parameter,NULL); break; case INSTALL_GRUB_INSTALL: case INSTALL_GRUB_UPDATE: @@ -603,7 +603,6 @@ void *on_setup_system_configuration(void * data){ NTPSERVERS_parameter, modules_extra_parameter, KERNEL_BOOT_parameter, - modules_parameter, packages_parameter, NULL); int user_size=0; @@ -637,6 +636,27 @@ void *on_setup_system_configuration(void * data){ } if (all_parameters){ + for (int i=0;iRegionAspect = yon_gtk_builder_get_widget(builder,"RegionAspect"); widgets->KeyboardImage = yon_gtk_builder_get_widget(builder,"KeyboardImage"); widgets->KeyboardBox = yon_gtk_builder_get_widget(builder,"KeyboardBox"); + widgets->KeyboardLayoutChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"KeyboardLayoutChosenCell")); widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList")); widgets->AdditionalSoftwareTree = yon_gtk_builder_get_widget(builder,"AdditionalSoftwareTree"); @@ -622,6 +623,7 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_install_advanced_add_new),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutChosenCell),"toggled",G_CALLBACK(on_keyboard_layout_chosen),widgets); // g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"add",G_CALLBACK(on_advanced_parts_added),widgets); // g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"remove",G_CALLBACK(on_advanced_parts_removed),widgets); g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 4a54db1..c13c51d 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -119,6 +119,7 @@ layout && /description:/ {\ #define get_devices_command "lsblk --noheadings --nodeps -Jo PATH,SIZE,MODEL,VENDOR,SERIAL --exclude 7,253" #define get_parts_and_devices_command "lsblk --noheadings --bytes -o TYPE,PATH,SIZE,FSTYPE,LABEL,PARTLABEL,MOUNTPOINT,FSUSED,FSUSE% --exclude 7,253 |awk '{print ($1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8\";\"$9)}'" +#define AUTOINSTALL(target) yon_char_unite("AUTOINSTALL[",target,"]",NULL) #define AUTOINSTALL_TYPE_INSTALL "AUTOINSTALL[install_type]" #define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get [autoinstall] AUTOINSTALL[install_type]" @@ -185,7 +186,7 @@ layout && /description:/ {\ #define packages_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[packages]" #define device_typevfs_parameter "AUTOINSTALL[device_typevfs]" #define device_typevfs_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_typevfs]" -#define NTPSERVERS_parameter "AOUTINSTALL['ubconfig set [network] NTPSERVERS]" +#define NTPSERVERS_parameter "AOUTINSTALL[ubconfig set [network] NTPSERVERS]" #define NTPSERVERS_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] NTPSERVERS']" #define DOMAIN_parameter "AOUTINSTALL['ubconfig set [network] DOMAIN]" #define DOMAIN_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN']" @@ -470,6 +471,7 @@ typedef struct { GtkWidget *RegionAspect; GtkWidget *KeyboardImage; GtkWidget *KeyboardBox; + GtkCellRenderer *KeyboardLayoutChosenCell; GtkWidget *Notebook; GtkWidget *LicenceLabel; @@ -1049,4 +1051,5 @@ void yon_advanced_partition_clear(main_window *widgets); void yon_layout_build(char *key, GHashTable *value, main_window *widgets); void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description); os_row *yon_os_row_new(); -void yon_quick_install(GtkWidget *, main_window *widgets); \ No newline at end of file +void yon_quick_install(GtkWidget *, main_window *widgets); +void on_keyboard_layout_chosen(GtkCellRenderer *self, gchar *path, main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk-keyboard.glade b/ubinstall-gtk-keyboard.glade index baebf96..2a1cdae 100644 --- a/ubinstall-gtk-keyboard.glade +++ b/ubinstall-gtk-keyboard.glade @@ -1,5 +1,5 @@ - + @@ -52,6 +52,7 @@ True True treeviewcolumn1 + 0 @@ -70,6 +71,8 @@ Id + True + 0 diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 43d5ad2..392fe86 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -97,6 +97,8 @@ + + @@ -2947,13 +2949,10 @@ and help you install UBLinux on your computer - column - - True - + - 3 + 4