From ada03f1e0c06ca4f36b3693eeb5926b534e48f7f Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 12 Dec 2025 16:47:17 +0000 Subject: [PATCH] Keyboard slide remake; Localisation for new windows --- gresource.xml | 1 + locale/ubinstall-gtk.pot | 105 +++- locale/ubinstall-gtk_ru.po | 153 ++++-- source/CMakeLists.txt | 1 + source/ubinstall-gtk-decorations.c | 9 - source/ubinstall-gtk-keyboard.c | 700 +++++++++++++++------------ source/ubinstall-gtk-language.c | 2 +- source/ubinstall-gtk-page-switch.c | 3 +- source/ubinstall-gtk.c | 46 +- source/ubinstall-gtk.h | 73 ++- source/ubl-strings.h | 38 +- ubinstall-gtk-keyboard-layouts.glade | 123 +++++ ubinstall-gtk.glade | 687 +++++++++++++++++++------- 13 files changed, 1379 insertions(+), 562 deletions(-) create mode 100644 ubinstall-gtk-keyboard-layouts.glade diff --git a/gresource.xml b/gresource.xml index ead2b57..cfb8b35 100644 --- a/gresource.xml +++ b/gresource.xml @@ -20,6 +20,7 @@ ubinstall-gtk-source.glade ubinstall-gtk-source-element.glade ubinstall-gtk-layouts.glade + ubinstall-gtk-keyboard-layouts.glade ubinstall-gtk.css diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index 73f1292..608a5bb 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -1173,10 +1173,6 @@ msgstr "" msgid "Skip configuration" msgstr "" -#: source/ubl-strings.h:331 -msgid "Are you sure want to exit and\ninterrupt installation process?" -msgstr "" - #: source/ubl-strings.h:331 msgid "Are you sure want to interrupt installation process?" msgstr "" @@ -1206,5 +1202,104 @@ msgid "Yes, I agree to the License Agreement" msgstr "" #: source/ubl-strings.h:331 -msgid "No, i do not agree" +msgid "No, I do not agree" +msgstr "" + +#: source/ubl-strings.h:11 +msgid "Keyboard layouts:" +msgstr "" + + + +#: source/ubl-strings.h:13 +msgid "Move layout up" +msgstr "" + +#: source/ubl-strings.h:14 +msgid "Move layout down" +msgstr "" + +#: source/ubl-strings.h:15 +msgid "Add layout" +msgstr "" + +#: source/ubl-strings.h:24 +msgid "Layouts:" +msgstr "" + +#: source/ubl-strings.h:25 +msgid "Default layout" +msgstr "" + +#: source/ubl-strings.h:26 +msgid "Changing the layout:" +msgstr "" + + +#: source/ubl-strings.h:28 +msgid "Set Compose (Multi_Key) to the right Win key" +msgstr "" + +#: source/ubl-strings.h:29 +msgid "Scroll Lock indication when switching layouts" msgstr "" + +#: source/ubl-strings.h:32 +msgid "NumLock:" +msgstr "" + +#: source/ubl-strings.h:34 +msgid "Key layout and switch:" +msgstr "" + +#: source/ubl-strings.h:37 +msgid "Variant" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Are you sure you want to remove current layout?" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Layout deletion" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Manual input:" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Specify your preferred keyboard settings" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Available locales in the system:" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "System locale" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Locale" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Language" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Territory" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Add locales" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Specify your preferred system languages" +msgstr "" + +#: source/ubl-strings.h:20 +msgid "Remove locale" +msgstr "" \ No newline at end of file diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 38b3438..c690083 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -101,8 +101,7 @@ msgid "Installation completion" msgstr "Завершение установки" #: source/ubl-strings.h:24 -msgid "" -"Deleting all data on the selected disk and then installing the system" +msgid "Deleting all data on the selected disk and then installing the system" msgstr "" "Удаление всех данных на выбранном диске с последующей установкой системы " "UBLinux" @@ -120,7 +119,8 @@ msgid "Installation on the same partition as another system" msgstr "Установка в раздел другой системы" #: source/ubl-strings.h:28 -msgid "Unpacking the system into an existing system" +#, fuzzy +msgid "Unpacking the file system into an existing system" msgstr "Установить ОС в уже существующий раздел" #: source/ubl-strings.h:29 source/ubl-strings.h:281 @@ -413,10 +413,11 @@ msgid "Format" msgstr "Форматировать" #: source/ubl-strings.h:107 +#, fuzzy msgid "" "You have system installed on your computer.\n" "You can reboot and use your new system\n" -"or continue working in the environment, booted from the Live image." +"or continue working in the system Live environment." msgstr "" "На вашем компьютере установлена система.\n" "Вы можете перезагрузить и использовать свою новую систему\n" @@ -509,8 +510,8 @@ msgstr "Ошибка установки" #: source/ubl-strings.h:135 msgid "" -"Attention! The system will be installed on the selected partition with " -"OS already installed. All user data will be saved." +"Attention! The system will be installed on the selected partition with OS " +"already installed. All user data will be saved." msgstr "" "Внимание! В выбранный раздел будет произведена установка системы. " "Если не менять тип ФС и не форматировать, все данные на разделе будут " @@ -663,10 +664,6 @@ msgstr "" "Вы уверены, что хотите закрыть программу и\n" "прервать процесс установки?" -#: source/ubl-strings.h:331 -msgid "Are you sure want to interrupt installation process?" -msgstr "Вы уверены, что хотите прервать процесс установки?" - #: source/ubl-strings.h:187 msgid "Are you sure want to reboot system?" msgstr "Вы уверены что хотите перезагрузить систему?" @@ -1212,6 +1209,94 @@ msgstr "Источник" msgid "Skip configuration" msgstr "Пропустить настройку" +#: source/ubl-strings.h:331 +msgid "Are you sure want to interrupt installation process?" +msgstr "Вы уверены, что хотите прервать процесс установки?" + +#: source/ubl-strings.h:331 +msgid "Repeating values" +msgstr "Повторяющиеся значения" + +#: source/ubl-strings.h:331 +msgid "Package information" +msgstr "Информация о пакете" + +#: source/ubl-strings.h:331 +msgid "Package:" +msgstr "Пакет:" + +#: source/ubl-strings.h:331 +msgid "Module:" +msgstr "Модуль:" + +#: source/ubl-strings.h:331 +msgid "Yes, I agree to the License Agreement" +msgstr "Да, я согласен с лицензионным соглашением" + +#: source/ubl-strings.h:331 +msgid "No, I do not agree" +msgstr "Нет, я не согласен" + +#: source/ubl-strings.h:11 +msgid "Keyboard layouts:" +msgstr "Раскладки клавиатуры:" + +#: source/ubl-strings.h:13 +msgid "Move layout up" +msgstr "Переместить раскладку выше" + +#: source/ubl-strings.h:14 +msgid "Move layout down" +msgstr "Переместить раскладку ниже" + +#: source/ubl-strings.h:15 +msgid "Add layout" +msgstr "Добавить раскладку" + +#: source/ubl-strings.h:24 +msgid "Layouts:" +msgstr "Раскладки:" + +#: source/ubl-strings.h:25 +msgid "Default layout" +msgstr "Раскладка по умолчанию" + +#: source/ubl-strings.h:26 +msgid "Changing the layout:" +msgstr "Смена раскладки:" + +#: source/ubl-strings.h:28 +msgid "Set Compose (Multi_Key) to the right Win key" +msgstr "Установить Compose (Multi_Key) на клавишу \"правая Win\"" + +#: source/ubl-strings.h:29 +msgid "Scroll Lock indication when switching layouts" +msgstr "Индикация Scroll Lock при переключении раскладки" + +#: source/ubl-strings.h:32 +msgid "NumLock:" +msgstr "NumLock:" + +#: source/ubl-strings.h:34 +msgid "Key layout and switch:" +msgstr "Раскладка клавиш и переключатель:" + +#: source/ubl-strings.h:37 +msgid "Variant" +msgstr "Вариант" + +#: source/ubl-strings.h:20 +msgid "Are you sure you want to remove current layout?" +msgstr "Вы уверены что хотите удалить данную раскладку?" + +#: source/ubl-strings.h:20 +msgid "Layout deletion" +msgstr "Удаление раскладки" + +#: source/ubl-strings.h:20 +msgid "Manual input:" +msgstr "Ручной выбор:" + msgid "" "Attention! The system will be installed in the selected partition. " "If you do not change the FS type or format, all data on the partition " @@ -3025,26 +3110,38 @@ msgstr "Зулу" msgid "Zurich" msgstr "Цюрих" -#: source/ubl-strings.h:331 -msgid "Repeating values" -msgstr "Повторяющиеся значения" +#: source/ubl-strings.h:20 +msgid "Specify your preferred keyboard settings" +msgstr "Укажите предпочитаемые настройки клавиатуры" -#: source/ubl-strings.h:331 -msgid "Package information" -msgstr "Информация о пакете" +#: source/ubl-strings.h:20 +msgid "Available locales in the system:" +msgstr "Доступные языки системы:" -#: source/ubl-strings.h:331 -msgid "Package:" -msgstr "Пакет:" +#: source/ubl-strings.h:20 +msgid "System locale" +msgstr "Язык системы" -#: source/ubl-strings.h:331 -msgid "Module:" -msgstr "Модуль:" +#: source/ubl-strings.h:20 +msgid "Locale" +msgstr "Локаль" -#: source/ubl-strings.h:331 -msgid "Yes, I agree to the License Agreement" -msgstr "Да, я согласен с лицензионным соглашением" +#: source/ubl-strings.h:20 +msgid "Language" +msgstr "Язык" -#: source/ubl-strings.h:331 -msgid "No, i do not agree" -msgstr "Нет, я не согласен" +#: source/ubl-strings.h:20 +msgid "Territory" +msgstr "Территория" + +#: source/ubl-strings.h:20 +msgid "Add locales" +msgstr "Добавить локаль" + +#: source/ubl-strings.h:20 +msgid "Specify your preferred system languages" +msgstr "Укажите предпочитаемый язык системы" + +#: source/ubl-strings.h:20 +msgid "Remove locale" +msgstr "Удалить локаль" \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 797d534..eb5a90b 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -73,6 +73,7 @@ set(DEPENDFILES ../ubinstall-gtk-source.glade ../ubinstall-gtk-source-element.glade ../ubinstall-gtk-layouts.glade + ../ubinstall-gtk-keyboard-layouts.glade ../gresource.xml ../ubinstall-gtk.css ../modules.csv diff --git a/source/ubinstall-gtk-decorations.c b/source/ubinstall-gtk-decorations.c index 9545480..603f6d8 100644 --- a/source/ubinstall-gtk-decorations.c +++ b/source/ubinstall-gtk-decorations.c @@ -4,7 +4,6 @@ void yon_resize_images_update(main_window *widgets){ enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)); gtk_widget_hide(widgets->BootloaderImage); gtk_widget_hide(widgets->RegionImage); - gtk_widget_hide(widgets->KeyboardImage); gtk_widget_hide(widgets->UserImage); gtk_widget_hide(widgets->StartupImage); gtk_widget_hide(widgets->NetworkImage); @@ -16,9 +15,6 @@ void yon_resize_images_update(main_window *widgets){ case YON_PAGE_REGION: gtk_widget_show(widgets->RegionImage); break; - case YON_PAGE_KEYBOARD: - gtk_widget_show(widgets->KeyboardImage); - break; case YON_PAGE_USERS: gtk_widget_show(widgets->UserImage); break; @@ -51,11 +47,6 @@ void on_region_resized(GtkWidget *,main_window *widgets){ target = GTK_IMAGE(widgets->RegionImage); pixbuf = widgets->region_original; - break; - case YON_PAGE_KEYBOARD: - target = GTK_IMAGE(widgets->KeyboardImage); - pixbuf = widgets->keyboard_original; - break; case YON_PAGE_USERS: target = GTK_IMAGE(widgets->UserImage); diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 0c2f096..9ff1a63 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -1,385 +1,467 @@ #include "ubinstall-gtk.h" int yon_keyboard_save(main_window *widgets){ - 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)); + if (gtk_switch_get_active(GTK_SWITCH(widgets->KeyboardDefaultLayoutsSwitch))){ + yon_config_remove_by_key(xkblayout_parameter); + } else { + GtkTreeIter iter; + if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutsList),&iter)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),yon_char_get_localised_from_lib(EMPTY_IMPORTANT_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(widgets->KeyboardLayoutTree); return 0; } - char *layouts_list=""; - GtkTreeModel *layouts_model=GTK_TREE_MODEL(widgets->LayoutList); - char *cur_layout=NULL; - for_iter(layouts_model,&iter){ - int chosen=0; - 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); - } - } - } - } + } + return 1; +} - if (!yon_char_is_empty(layouts_list)) - yon_config_register(xkblayout_parameter,xkblayout_parameter_command,layouts_list); - else - yon_config_remove_by_key(xkblayout_parameter); +void yon_keyboard_init(main_window *widgets){ + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardLayoutChangingCombo),G_CALLBACK(on_options_save),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardNumLockCombo),G_CALLBACK(on_num_lock_changed),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardComposeSwitch),G_CALLBACK(on_compose_switch),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo)); + int size; + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo),DEFAULT_LABEL); + config_str models = yon_config_load(get_keyboard_models_command,&size); + for (int i=0;iKeyboardModelCombo),parsed[0],_(parsed[1])); + yon_char_parsed_free(parsed,parsed_size); + } + yon_char_parsed_free(models,size); + + // g_signal_handlers_block_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets); - if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo))){ - char *model = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo)); - if (!yon_char_is_empty(model)) - yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,model); - } else{ - yon_config_remove_by_key(xkbmodel_parameter); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),0); + { + char *kbmodel = yon_config_get_by_key(xkbmodel_parameter); + if (kbmodel) { + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo),kbmodel); + } } - - if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LayoutBindingCombo))){ - char *options = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LayoutBindingCombo)); - if (options){}; - yon_config_register(xkboptions_parameter,xkboptions_parameter_command,options); - } else { - yon_config_remove_by_key(xkboptions_parameter); + { + gtk_list_store_clear(widgets->LayoutsList); + char *layouts = config(xkblayout_parameter); + + int layouts_parsed_size; + config_str layouts_parsed = yon_char_parse(layouts,&layouts_parsed_size,","); + for(int i=0;iKeyboardDefaultLayoutsSwitch),1); + } else { + gtk_switch_set_active(GTK_SWITCH(widgets->KeyboardDefaultLayoutsSwitch),0); + } + + if (yon_char_is_empty(layouts)){ + char *element = yon_char_parsed_check_exist_begins_with(main_config.layouts_list,main_config.layouts_size,"us|"); + if (element){ + int parsed_size; + config_str parsed = yon_char_parse(element,&parsed_size,"|"); + GtkTreeIter iter; + gtk_list_store_append(widgets->LayoutsList,&iter); + gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],2,_(parsed[1]),-1); + yon_char_parsed_free(parsed,parsed_size); + } + } } - - if (!main_config.configure_mode){ + { + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KeyboardLayoutChangingCombo)); + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KeyboardLayoutChangingCombo),DEFAULT_LABEL); int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,xkbvariant_parameter,xkblayout_parameter,xkbmodel_parameter,xkboptions_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,size," -- "); - char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL); - if (!system(yon_debug_output("%s\n",command))){} - free(command); - yon_char_parsed_free(parameters,size); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardLayoutChangingCombo),0); + config_str options = yon_config_load(grp_options_command,&size); + + for (int i=0;iKeyboardLayoutChangingCombo),parsed[0],_(parsed[1])); + yon_char_parsed_free(parsed,parsed_size); } + yon_char_parsed_free(options,size); } - return 1; -} - -ubinstall_keyboard_window *yon_ubinstall_keyboard_new(){ -void on_additional_software_toggled(); - ubinstall_keyboard_window *window = malloc(sizeof(ubinstall_keyboard_window)); - GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubinstall_keyboard); - window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); - window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox"); - window->headerBar=yon_gtk_builder_get_widget(builder,"headerBar"); - window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); - window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); - window->LayoutsTree=yon_gtk_builder_get_widget(builder,"LayoutsTree"); - window->ActiveToggle = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ActiveToggle")); + { + char *name = yon_config_get_by_key(num_lock_boot_parameter); + if (name) { + if (!strcmp(name,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),1); + else if (!strcmp(name,"no")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),2); + } + } + { + char *options = config(xkboptions_parameter); + if (!yon_char_is_empty(options)){ + int size; + config_str parsed = yon_char_parse(options,&size,","); + if (!yon_char_is_empty(parsed[0])){ + gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->KeyboardLayoutChangingCombo),parsed[0]); + } else { + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardLayoutChangingCombo),0); + } + if (yon_char_parsed_check_exist(parsed,size,"compose:rwin")>-1){ + gtk_switch_set_active(GTK_SWITCH(widgets->KeyboardComposeSwitch),1); + } else { + gtk_switch_set_active(GTK_SWITCH(widgets->KeyboardComposeSwitch),0); + } + if (yon_char_parsed_check_exist(parsed,size,"grp_led:scroll")>-1){ + gtk_switch_set_active(GTK_SWITCH(widgets->KeyboardScrollLockSwitch),1); + } else { + gtk_switch_set_active(GTK_SWITCH(widgets->KeyboardScrollLockSwitch),0); + } + } - g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + } -return window; + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardNumLockCombo),G_CALLBACK(on_num_lock_changed),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardLayoutChangingCombo),G_CALLBACK(on_options_save),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardComposeSwitch),G_CALLBACK(on_compose_switch),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets); } -void on_keyboard_removed(GtkWidget *, main_window *widgets){ - GtkTreeModel *model; - GtkTreeIter iter, childiter; - if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutTree)),&model,&iter)){ - gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),&childiter,&iter); - gtk_tree_store_set(widgets->LayoutList,&childiter,3,0,-1); +void on_layouts_accept(GtkWidget *self, layouts_window *window){ + main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets"); + if (!yon_char_is_empty(window->parameters)){ + yon_config_register(xkblayout_parameter,xkblayout_parameter_command,window->parameters); + } else { + yon_config_remove_by_key(xkblayout_parameter); } + on_subwindow_close(self); + yon_keyboard_init(widgets); } -void yon_language_selection_changed(GtkCellRenderer *, char *path, ubinstall_language_window *window){ +void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){ GtkTreeIter iter; - int state; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path); + int chosen; + char *layout, *variant; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&layout,1,&variant,3,&chosen,-1); + gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,3,!chosen,-1); - if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->liststore1),&iter,path)){ - gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&state,-1); - gtk_list_store_set(window->liststore1,&iter,0,!state,-1); - } -} -void on_language_window_accept(GtkWidget *,dictionary *dict){ - main_window *widgets= yon_dictionary_get_data(dict->first,main_window*); - ubinstall_language_window *window = yon_dictionary_get_data(dict->first->next,ubinstall_language_window*); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultCheck))){ - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); - GtkTreeIter iter; - int size; - config_str lang_parsed = default_langs(&size); - - char *final = ""; - for_iter(widgets->LanguagesList,&iter){ - char *code, *labl; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,1,&code,2,&labl,-1); - if (yon_char_parsed_check_exist(lang_parsed,size,code)!=-1){ - gtk_list_store_set(widgets->LanguagesList,&iter,0,1,-1); - char *tmp = yon_char_unite(final,!yon_char_is_empty(final)?";":"",labl,NULL); - if (!yon_char_is_empty(final)) free(final); - final = tmp; - } else - gtk_list_store_set(widgets->LanguagesList,&iter,0,0,-1); - } - if (!yon_char_is_empty(final)){ - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),final); - } - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguagesCombo),-1); - gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); + char *full_layout = NULL; + if (!yon_char_is_empty(variant)){ + full_layout = yon_char_unite(layout,"_",variant,NULL); } else { - yon_gtk_list_store_copy_full(widgets->LanguagesList,window->liststore1); - gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter)); - config_str parsed = NULL; - int size; - GtkTreeIter iter; - for_iter(GTK_TREE_MODEL(window->liststore1),&iter){ - char *current; - int status; - gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,2,¤t,-1); - if (status) - yon_char_parsed_add_or_create_if_exists(parsed,&size,current); - } - if (parsed){ - char *final = yon_char_parsed_to_string(parsed,size,"; "); - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),!yon_char_is_empty(final)?final:""); - if (yon_char_is_empty(final)) { - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguagesCombo),-1); - } - if (final) free(final); - yon_char_parsed_free(parsed,size); - } else - gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),""); - + full_layout = layout; } - on_subwindow_close(window->MainWindow); - free(window); + if (!chosen){ + char *temp = yon_char_append_element(window->parameters,full_layout,","); + free(window->parameters); + window->parameters = temp; + } else { + char *temp = yon_char_remove_element(window->parameters,full_layout,","); + free(window->parameters); + window->parameters = temp; + } + free(full_layout); } -void yon_focus_set(GtkWidget *,GtkWidget *target){ - gtk_widget_grab_focus(target); - +void on_system_layouts_add(GtkWidget *, main_window *widgets){ + yon_layouts_add(GTK_TREE_VIEW(widgets->KeyboardLayoutTree),widgets->LayoutsList,widgets); } -ubinstall_language_window *yon_ubinstall_language_new(){ - ubinstall_language_window *window = malloc(sizeof(ubinstall_language_window)); - GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubinstall_language); - window->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); - window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); - window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox"); - window->DefaultCheck=yon_gtk_builder_get_widget(builder,"DefaultCheck"); - window->LanguagesTree=yon_gtk_builder_get_widget(builder,"LanguagesTree"); - window->headerBar=yon_gtk_builder_get_widget(builder,"headerBar"); - window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); - window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); - window->ToggleRenderer=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleRenderer")); - - g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->LanguagesTree); - g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_focus_set),window->LanguagesTree); - g_signal_connect(G_OBJECT(window->ToggleRenderer),"toggled",G_CALLBACK(yon_language_selection_changed),window); +layouts_window *yon_layouts_window_new(){ + GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path); + layouts_window *window = malloc(sizeof(layouts_window)); + memset(window,0,sizeof(layouts_window)); + window->Window = yon_gtk_builder_get_widget(builder,"Window"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell")); + window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree"); + window->parameters = yon_char_new(config(xkblayout_parameter)); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); -return window; + g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_layouts_chosen),window); + return window; } -void on_language_clicked(GtkWidget *, main_window *widgets){ - ubinstall_language_window *window = yon_ubinstall_language_new(); - g_object_ref(G_OBJECT(window->liststore1)); - gtk_tree_view_set_model(GTK_TREE_VIEW(window->LanguagesTree),NULL); - yon_gtk_list_store_copy_full(window->liststore1,widgets->LanguagesList); - gtk_tree_view_set_model(GTK_TREE_VIEW(window->LanguagesTree),GTK_TREE_MODEL(window->liststore1)); - yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->MainWindow),TITLE_LABEL,icon_path,"language-chooser-window"); - gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->LanguagesTree),2); - if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AvailableLanguagesEntry)))){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1); - } +void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets){ + layouts_window *window = yon_layouts_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),TITLE_LABEL,icon_path,"layout_window"); + + window->list = main_config.layouts_store; + + gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(main_config.layouts_store)); + gtk_tree_view_column_clicked(GTK_TREE_VIEW_COLUMN(gtk_tree_view_get_column(GTK_TREE_VIEW(window->MainTree),0))); + yon_layout_build(window); + g_object_set_data(G_OBJECT(window->Window),"widgets",widgets); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_layouts_accept),window); + char *languages = config(xkblayout_parameter); int size; - int found=0; - int statusfound=0; - config_str langs = default_langs(&size); - GtkTreeIter iter; - for_iter(widgets->LanguagesList,&iter){ - char *cur; - int status; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,0,&status,2,&cur,-1); - if (status){ - statusfound++; - if (yon_char_parsed_check_exist(langs,size,cur)>-1) - found++; + config_str parsed = yon_char_parse(languages,&size,","); + GtkTreeIter iter,itar; + for_iter(window->list,&iter){ + int found = 0; + char *id, *id_var; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&id,-1); + for (int i=0;ilist),&iter,3,1,-1); + found=1; + break; + } + } + if (!found) { + gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,3,0,-1); + } + if (gtk_tree_model_iter_children(GTK_TREE_MODEL(window->list),&itar,&iter)){ + for (int valid2=1;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){ + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&id,1,&id_var,-1); + for (int i=0;ilist),&itar,3,1,-1); + found=1; + break; + } + } + } } - } - if ((found==size)&&statusfound==size){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1); - } - dictionary *dict=NULL; - yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); - yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); - g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_language_window_accept),dict); - gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(window->LanguagesTree),0)); - gtk_widget_show(window->MainWindow); - + } } - - -void on_layout_toggle(GtkCellRendererToggle*, gchar* path, ubinstall_keyboard_window *window){ - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(window->LayoutsTree)); + +void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(cur_list); GtkTreeIter iter; - if (gtk_tree_model_get_iter_from_string(model,&iter,path)){ - int status=0; - gtk_tree_model_get(model,&iter,3,&status,-1); - gtk_tree_store_set(GTK_TREE_STORE(model),&iter,3,!status,-1); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(tree),&model,&iter)){ + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text = LAYOUT_REMOVE_LABEL; + data->title = LAYOUT_REMOVE_TITLE_LABEL; + if (yon_confirmation_dialog_call(widgets->MainWindow,data)!=GTK_RESPONSE_ACCEPT) return; + gtk_list_store_remove(widgets->LayoutsList,&iter); } + yon_keyboard_init(widgets); } - -void on_keyboard_accept(GtkWidget *self,main_window *widgets){ - gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter)); - on_subwindow_close(self); +void on_system_layouts_remove(GtkWidget *, main_window *widgets){ + yon_layouts_remove(GTK_TREE_VIEW(widgets->KeyboardLayoutTree),widgets->LayoutsList,widgets); } +// standard functions -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); - gtk_widget_show(window->MainWindow); +config_str yon_layout_get_children(char *layout_id, int *size){ + (*size)=0; + config_str final = NULL; + for (int i=0;iLayoutList,&parent,NULL); - gtk_tree_store_set(widgets->LayoutList,&parent,0,key,1,_((char*)g_hash_table_lookup(value,"")),2,1,3,0,-1); - - GList *list = g_hash_table_get_keys(value); - GList *iterator = NULL; - 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,4,0,-1); + if (strstr(layout,"_")){ + char *cur_variant = yon_char_new(layout); + char *cur_layout = yon_char_divide_search(cur_variant,"_",-1); + for (int i=0;iLayoutsList,&iter); + gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),-1); + } + } + + } else { + for (int i=0;iLayoutsList,&iter); + gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],2,_(parsed[1]),-1); + } } } } -void yon_keyboard_init(main_window *widgets){ +void yon_layout_build(layouts_window *window){ + gtk_tree_store_clear(window->list); + GtkTreeIter parent; + GtkTreeIter iter; int size; - config_str parsed = NULL; - parsed = yon_config_load(yon_debug_output("%s\n",get_layouts_command),&size); - GHashTable *table = g_hash_table_new(g_str_hash,g_str_equal); + config_str layouts = yon_config_load(layouts_command,&size); for (int i=0;ilist,&parent,NULL); + gtk_tree_store_set(window->list,&parent,0,parsed[0],2,_(parsed[1]),-1); + int variants_size; + config_str variants = yon_layout_get_children(parsed[0],&variants_size); + yon_char_parsed_free(parsed,parsed_size); + for (int k=0;klist,&iter,&parent); + gtk_tree_store_set(window->list,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),-1); + yon_char_parsed_free(parsed,parsed_size); } + yon_char_parsed_free(variants,variants_size); + } + yon_char_parsed_free(layouts,size); + +} - g_hash_table_foreach(table,(GHFunc)yon_layout_build,widgets); - yon_char_parsed_free(parsed,size); - config_str models = yon_config_load(yon_debug_output("%s\n",get_models_command),&size); - for (int i=0;iKeyboardModelCombo),models[i],_(models[i+1])); +void on_layout_move_up(GtkWidget *, main_window *widgets){ + GtkTreeModel *model; + GtkTreeIter iter,*previter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->KeyboardLayoutTree)),&model,&iter)){ + previter = gtk_tree_iter_copy(&iter); + if (!gtk_tree_model_iter_previous(model,previter)) return; + char *a, *b; + gtk_tree_model_get(model,&iter,0,&a,-1); + gtk_tree_model_get(model,previter,0,&b,-1); + char *layouts = config(xkblayout_parameter); + char *temp = yon_char_swap_element(layouts,a,b,","); + yon_config_register(xkblayout_parameter,xkblayout_parameter_command,temp); + free(temp); + gtk_list_store_swap(widgets->LayoutsList,&iter,previter); + gtk_tree_iter_free(previter); } - if (size) yon_char_parsed_free(models,size); +} - char *keyboard = config(xkbmodel_parameter); - char *option_parameter = config(xkboptions_parameter); - char *layouts = config(xkblayout_parameter); - char *variant = config(xkbvariant_parameter); +void on_layout_move_down(GtkWidget *, main_window *widgets){ + GtkTreeModel *model; + GtkTreeIter iter,*nextiter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->KeyboardLayoutTree)),&model,&iter)){ + nextiter = gtk_tree_iter_copy(&iter); + if (!gtk_tree_model_iter_next(model,nextiter)) return; + char *a, *b; + gtk_tree_model_get(model,&iter,0,&a,-1); + gtk_tree_model_get(model,nextiter,0,&b,-1); + char *layouts = config(xkblayout_parameter); + char *temp = yon_char_swap_element(layouts,a,b,","); + yon_config_register(xkblayout_parameter,xkblayout_parameter_command,temp); + free(temp); + gtk_list_store_swap(widgets->LayoutsList,&iter,nextiter); + gtk_tree_iter_free(nextiter); + } +} - if (!yon_char_is_empty(keyboard)){ - gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo),keyboard); - } else { - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0); +void on_compose_switch(GtkWidget *,int status,main_window *widgets){ + switch(status){ + case 0:{ + yon_config_remove_element(xkboptions_parameter,"compose:rwin",","); + } break; + case 1:{ + yon_config_append_element(xkboptions_parameter,"compose:rwin",","); + } break; } + yon_keyboard_init(widgets); +} - if (!yon_char_is_empty(option_parameter)){ - gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->LayoutBindingCombo),option_parameter); - } else{ - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LayoutBindingCombo),0); +void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets){ + switch(status){ + case 0:{ + yon_config_remove_element(xkboptions_parameter,"grp_led:scroll",","); + } break; + case 1:{ + yon_config_append_element(xkboptions_parameter,"grp_led:scroll",","); + } break; } + yon_keyboard_init(widgets); +} - if (!yon_char_is_empty(layouts)){ - int parsed_size; - config_str parsed = yon_char_parse(layouts,&parsed_size,","); +void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets){ + gtk_widget_set_sensitive(widgets->KeyboardLayoutTree,!status); + gtk_widget_set_sensitive(widgets->KeyboardLayoutAddButton,!status); + if (status){ + gtk_widget_set_sensitive(widgets->KeyboardLayoutRemoveButton,!status); + gtk_widget_set_sensitive(widgets->KeyboardLayoutMoveUpButton,!status); + gtk_widget_set_sensitive(widgets->KeyboardLayoutMoveDownButton,!status); + }else { + on_layout_selection_changed(GTK_TREE_VIEW(widgets->KeyboardLayoutTree),widgets); - GtkTreeIter iter, chiter; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutList); + } +} + +void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets){ + if (!status){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutsList); + GtkTreeIter iter; + char *locales = NULL; for_iter(model,&iter){ - char *target; - gtk_tree_model_get(model,&iter,0,&target,-1); - if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ - gtk_tree_store_set(widgets->LayoutList,&iter,2,1,3,1,-1); - if (!strcmp(variant,target)){ - gtk_tree_store_set(widgets->LayoutList,&iter,4,1,-1); - } else { - gtk_tree_store_set(widgets->LayoutList,&iter,4,0,-1); + char *target, *variant; - } - for (int valid2 = gtk_tree_model_iter_children(model,&chiter,&iter);valid2;valid2 = gtk_tree_model_iter_next(model,&chiter)){ - gtk_tree_model_get(model,&chiter,0,&target,-1); - if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ - gtk_tree_store_set(widgets->LayoutList,&chiter,2,1,3,1,-1); - if (!strcmp(variant,target)){ - gtk_tree_store_set(widgets->LayoutList,&chiter,4,1,-1); - - } - } else { - gtk_tree_store_set(widgets->LayoutList,&chiter,3,0,4,0,-1); - } - } + gtk_tree_model_get(model,&iter,0,&target,1,&variant,-1); + char *key = NULL; + if (!yon_char_is_empty(variant)){ + key = yon_char_unite(target,"_",variant,NULL); } else { - gtk_tree_store_set(widgets->LayoutList,&iter,3,0,4,0,-1); + key = yon_char_new(target); } - + char *temp = yon_char_append_element(locales?locales:"",key,","); + if (!yon_char_is_empty(locales)) free(locales); + locales = temp; + } + if (!yon_char_is_empty(locales)){ + yon_config_register(xkblayout_parameter,xkblayout_parameter_command,locales); } - } 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); - } - } +void on_layout_selection_changed(GtkTreeView *self,main_window *widgets){ + int status = gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),NULL,NULL); + gtk_widget_set_sensitive(widgets->KeyboardLayoutMoveDownButton,status); + gtk_widget_set_sensitive(widgets->KeyboardLayoutMoveUpButton,status); + gtk_widget_set_sensitive(widgets->KeyboardLayoutRemoveButton,status); + +} +void on_num_lock_changed(GtkComboBox *self, main_window *){ + switch (gtk_combo_box_get_active(self)){ + case 0: + yon_config_remove_by_key(num_lock_boot_parameter); + break; + case 1: yon_config_register(num_lock_boot_parameter,num_lock_boot_parameter_command,"yes"); + break; + case 2:yon_config_register(num_lock_boot_parameter,num_lock_boot_parameter_command,"no"); + break; } - 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); +} + +void on_model_changed(GtkComboBoxText *self, main_window *widgets){ + switch (gtk_combo_box_get_active(GTK_COMBO_BOX(self))){ + case 0: + yon_config_remove_by_key(xkbmodel_parameter); + break; + default: + char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo)); + yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,id); + break; + } +} + +void on_options_save(GtkWidget *,main_window *widgets){ + char *main_id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardLayoutChangingCombo)); + int parameter_parsed_size; + config_str parameter_parsed = NULL; + yon_char_parsed_add_or_create_if_exists(parameter_parsed,¶meter_parsed_size,!yon_char_is_empty(main_id)?main_id:""); + char *final_parameter = yon_char_parsed_to_string_full(parameter_parsed,parameter_parsed_size,","); + yon_char_parsed_free(parameter_parsed,parameter_parsed_size); + if (!yon_char_is_empty(final_parameter)){ + yon_config_register(xkboptions_parameter,xkboptions_parameter_command,final_parameter); + free(final_parameter); } else { - yon_config_remove_by_key(xkbvariant_parameter); + yon_config_remove_by_key(xkboptions_parameter); } } \ No newline at end of file diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c index ff6041b..0c0b0bb 100644 --- a/source/ubinstall-gtk-language.c +++ b/source/ubinstall-gtk-language.c @@ -240,4 +240,4 @@ int yon_language_save(main_window *widgets){ void yon_language_init(main_window *widgets){ yon_language_update(widgets); -} \ No newline at end of file +} diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 3be4fcd..ba60189 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -449,7 +449,8 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ data->title=WARNING_TITLE_LABEL; if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){ if (main_config.install_thread){ - gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_WELCOME); + gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_LICENCE); + on_page_prev_clicked(NULL,widgets); gtk_widget_hide(gtk_widget_get_parent(widgets->InstallationProgress)); gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress)); pthread_cancel((pthread_t)main_config.install_thread); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index a268a84..5d0f8f5 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -571,6 +571,16 @@ void config_init(){ yon_char_parsed_free(parsed,parsed_size); } yon_char_parsed_free(languages,size); + + main_config.layouts_store = gtk_tree_store_new(4,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); + main_config.variants_list = yon_config_load(layouts_variant_command,&main_config.variants_size); + main_config.layouts_list = yon_config_load(layouts_command,&main_config.layouts_size); + for (int i=0;iWelcomeToggle=yon_gtk_builder_get_widget(builder,"WelcomeToggle"); widgets->LicenceToggle=yon_gtk_builder_get_widget(builder,"LicenceToggle"); widgets->LocationToggle=yon_gtk_builder_get_widget(builder,"LocationToggle"); - widgets->KeyboardToggle=yon_gtk_builder_get_widget(builder,"KeyboardToggle"); widgets->SectionsToggle=yon_gtk_builder_get_widget(builder,"SectionsToggle"); widgets->UsersToggle=yon_gtk_builder_get_widget(builder,"UsersToggle"); widgets->SummaryToggle=yon_gtk_builder_get_widget(builder,"SummaryToggle"); @@ -944,7 +953,7 @@ void yon_main_window_create(main_window *widgets){ widgets->LanguagesFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LanguagesFilter")); widgets->LayoutsFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LayoutsFilter")); - widgets->LayoutList = GTK_TREE_STORE(gtk_builder_get_object(builder,"LayoutList")); + widgets->LayoutsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LayoutsList")); widgets->LanguagesTree=yon_gtk_builder_get_widget(builder,"LanguagesTree"); widgets->CountryLanguagesTree=yon_gtk_builder_get_widget(builder,"CountryLanguagesTree"); widgets->InstallerCountryList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerCountryList")); @@ -956,7 +965,6 @@ void yon_main_window_create(main_window *widgets){ widgets->AvailableLanguagesEntry=yon_gtk_builder_get_widget(builder,"AvailableLanguagesEntry"); widgets->AvailableLanguagesButton=yon_gtk_builder_get_widget(builder,"AvailableLanguagesButton"); widgets->LanguagesCombo=yon_gtk_builder_get_widget(builder,"LanguagesCombo"); - widgets->KeyboardModelCombo=yon_gtk_builder_get_widget(builder,"KeyboardModelCombo"); widgets->LayoutBindingCombo=yon_gtk_builder_get_widget(builder,"LayoutBindingCombo"); widgets->LayoutTree=yon_gtk_builder_get_widget(builder,"LayoutTree"); widgets->AddButton=yon_gtk_builder_get_widget(builder,"AddButton"); @@ -985,9 +993,18 @@ void yon_main_window_create(main_window *widgets){ widgets->RegionImage = yon_gtk_builder_get_widget(builder,"RegionImage"); widgets->RegionBox = yon_gtk_builder_get_widget(builder,"RegionBox"); widgets->RegionAspect = 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->KeyboardModelCombo = yon_gtk_builder_get_widget(builder,"KeyboardModelCombo"); + widgets->KeyboardDefaultLayoutsSwitch = yon_gtk_builder_get_widget(builder,"KeyboardDefaultLayoutsSwitch"); + widgets->KeyboardLayoutTree = yon_gtk_builder_get_widget(builder,"KeyboardLayoutTree"); + widgets->KeyboardLayoutMoveUpButton = yon_gtk_builder_get_widget(builder,"KeyboardLayoutMoveUpButton"); + widgets->KeyboardLayoutMoveDownButton = yon_gtk_builder_get_widget(builder,"KeyboardLayoutMoveDownButton"); + widgets->KeyboardLayoutAddButton = yon_gtk_builder_get_widget(builder,"KeyboardLayoutAddButton"); + widgets->KeyboardLayoutRemoveButton = yon_gtk_builder_get_widget(builder,"KeyboardLayoutRemoveButton"); + widgets->KeyboardLayoutChangingCombo = yon_gtk_builder_get_widget(builder,"KeyboardLayoutChangingCombo"); + widgets->KeyboardComposeSwitch = yon_gtk_builder_get_widget(builder,"KeyboardComposeSwitch"); + widgets->KeyboardScrollLockSwitch = yon_gtk_builder_get_widget(builder,"KeyboardScrollLockSwitch"); + widgets->KeyboardNumLockCombo = yon_gtk_builder_get_widget(builder,"KeyboardNumLockCombo"); widgets->AdditionalComponentsList = yon_gtk_builder_get_widget(builder,"AdditionalComponentsList"); @@ -1102,12 +1119,21 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets); g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->AvailableLanguagesButton),"clicked",G_CALLBACK(on_language_clicked),widgets); g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo); - g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_keyboard_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_keyboard_removed),widgets); + + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutTree),"cursor-changed",G_CALLBACK(on_layout_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_sensitive_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutMoveUpButton),"clicked",G_CALLBACK(on_layout_move_up),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutMoveDownButton),"clicked",G_CALLBACK(on_layout_move_down),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardLayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardNumLockCombo),"changed",G_CALLBACK(on_num_lock_changed),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardComposeSwitch),"state-set",G_CALLBACK(on_compose_switch),widgets); + g_signal_connect(G_OBJECT(widgets->KeyboardScrollLockSwitch),"state-set",G_CALLBACK(on_scroll_lock_switch),widgets); g_signal_connect(G_OBJECT(widgets->GrubInstallDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->GrubUpdateDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); @@ -1127,7 +1153,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UserAddButton),"clicked",G_CALLBACK(on_user_add),widgets); g_signal_connect(G_OBJECT(widgets->UserRootPasswordButton),"clicked",G_CALLBACK(yon_password_root_new),widgets); g_signal_connect(G_OBJECT(widgets->BootloadDefaulOSButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets); - gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),3); g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets); g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets); @@ -1178,7 +1203,6 @@ void yon_main_window_create(main_window *widgets){ // 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 be3bc1e..5d50692 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -39,6 +39,7 @@ #define glade_path_source "/com/ublinux/ui/ubinstall-gtk-source.glade" #define glade_path_source_element "/com/ublinux/ui/ubinstall-gtk-source-element.glade" #define glade_locales_path "/com/ublinux/ui/ubinstall-gtk-layouts.glade" +#define glade_layouts_path "/com/ublinux/ui/ubinstall-gtk-keyboard-layouts.glade" #define CssPath "/com/ublinux/css/ubinstall-gtk.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) @@ -108,6 +109,7 @@ NULL #define get_ntp_ru_command "ubconfig --default get [network] NTPSERVERS_RU" #define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}|^ {8,8}'|sed -e 's/ *//g' -e 's,,,g' -e 's/ *//g' -e 's,,,g'" +#define get_keyboard_models_command "sed -En '/^! model$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst" #define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL)) @@ -179,6 +181,8 @@ layout && /description:/ {\ #define lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [locale] LANG']" #define locale_parameter "AUTOINSTALL[ubconfig set [locale] LOCALE]" #define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [locale] LOCALE']" +#define num_lock_boot_parameter "AUTOINSTALL['ubconfig set [keyboard] NUMLOCK']" +#define num_lock_boot_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] NUMLOCK']" /*------------------------------------------------------------*/ #define part_size_parameter "AUTOINSTALL[part_size]" @@ -278,6 +282,10 @@ layout && /description:/ {\ #define get_package_info_command(target) yon_char_append("pacman -Si ",target) +#define layouts_command "sed -En '/^! layout$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst" +#define layouts_variant_command "sed -En '/^! variant$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+([^ :]+):[[:blank:]]+(.*)/\\2|\\1|\\3/p' /usr/share/X11/xkb/rules/evdev.lst" +#define grp_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(grp:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst" + #define install_common_parameters \ AUTOINSTALL_TYPE_INSTALL,\ AUTOINSTALL_DEVICE,\ @@ -409,6 +417,14 @@ typedef struct { unsigned int cur_slide; gboolean dry_run; + + GtkTreeStore *layouts_store; + + GtkListStore *models_list; + config_str variants_list; + int variants_size; + config_str layouts_list; + int layouts_size; } config; extern config main_config; @@ -425,7 +441,7 @@ typedef struct { GtkBuilder *builder; GtkListStore *DevicesList; GtkListStore *LanguagesList; - GtkTreeStore *LayoutList; + GtkListStore *LayoutsList; GtkListStore *PartitionsList; GtkWidget *LoadGlobalConfigurationMenuItem; @@ -452,7 +468,6 @@ typedef struct { GtkWidget *WelcomeToggle; GtkWidget *LicenceToggle; GtkWidget *LocationToggle; - GtkWidget *KeyboardToggle; GtkWidget *SectionsToggle; GtkWidget *UsersToggle; GtkWidget *SummaryToggle; @@ -469,7 +484,6 @@ typedef struct { GtkWidget *AvailableLanguagesEntry; GtkWidget *AvailableLanguagesButton; GtkWidget *LanguagesCombo; - GtkWidget *KeyboardModelCombo; GtkWidget *LayoutBindingCombo; GtkWidget *LayoutTree; GtkWidget *AddButton; @@ -510,9 +524,18 @@ typedef struct { GtkWidget *RegionImage; GtkWidget *RegionBox; GtkWidget *RegionAspect; - GtkWidget *KeyboardImage; - GtkWidget *KeyboardBox; - GtkCellRenderer *KeyboardLayoutChosenCell; + + GtkWidget *KeyboardModelCombo; + GtkWidget *KeyboardDefaultLayoutsSwitch; + GtkWidget *KeyboardLayoutTree; + GtkWidget *KeyboardLayoutMoveUpButton; + GtkWidget *KeyboardLayoutMoveDownButton; + GtkWidget *KeyboardLayoutAddButton; + GtkWidget *KeyboardLayoutRemoveButton; + GtkWidget *KeyboardLayoutChangingCombo; + GtkWidget *KeyboardComposeSwitch; + GtkWidget *KeyboardScrollLockSwitch; + GtkWidget *KeyboardNumLockCombo; GtkWidget *Notebook; GtkWidget *LicenceLabel; @@ -1030,6 +1053,21 @@ struct locales_struct { GtkListStore *list; }; +typedef struct { + GtkWidget *Window; + GtkWidget *StatusBox; + GtkWidget *MainTree; + GtkWidget *CancelButton; + GtkWidget *AcceptButton; + GtkWidget *OptionsFilterCombo; + GtkWidget *OptionsEntry; + GtkCellRenderer *ChosenCell; + GtkTreeStore *list; + GtkListStore *OptionsList; + GtkTreeModel *OptionsFilter; + char *parameters; +} layouts_window; + void config_init(); main_window *yon_main_window_complete(); ubinstall_language_window *yon_ubinstall_language_new(); @@ -1204,7 +1242,6 @@ advanced_partition *yon_advanced_partition_new(); void on_advanced_part_remove(GtkWidget *self, main_window *widgets); int yon_advanced_get_part_size(main_window *widgets); void yon_advanced_partition_clear(main_window *widgets); -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); @@ -1280,4 +1317,24 @@ void on_language_default_toggled(GtkWidget *, int status, main_window *widgets); void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets); void yon_language_update(main_window *widgets); int yon_language_save(main_window *widgets); -void yon_language_init(main_window *widgets); \ No newline at end of file +void yon_language_init(main_window *widgets); +void on_layouts_accept(GtkWidget *self, layouts_window *window); +void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window); +void on_system_layouts_add(GtkWidget *, main_window *widgets); +layouts_window *yon_layouts_window_new(); +void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets); +void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets); +void on_system_layouts_remove(GtkWidget *, main_window *widgets); +config_str yon_layout_get_children(char *layout_id, int *size); +void yon_layout_load(char *layout,main_window *widgets); +void yon_layout_build(layouts_window *window); +void on_layout_move_up(GtkWidget *, main_window *widgets); +void on_layout_move_down(GtkWidget *, main_window *widgets); +void on_compose_switch(GtkWidget *,int status,main_window *widgets); +void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets); +void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets); +void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets); +void on_layout_selection_changed(GtkTreeView *self,main_window *widgets); +void on_num_lock_changed(GtkComboBox *self, main_window *); +void on_model_changed(GtkComboBoxText *self, main_window *widgets); +void on_options_save(GtkWidget *,main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index a9931c5..76ad8b1 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -42,7 +42,6 @@ NULL) #define ZONE_LABEL _("Zone:") #define LANGUAGE_LABEL _("Language:") #define KEYBOARD_MODEL_LABEL _("Keyboard model:") -#define LAYOUT_CHANGING_LABEL _("Layout changing:") #define DEFAUL_LAYOUT_LABEL _("Default layout (ru)") #define DEFINE_LABEL _("Define") #define SETTINGS_LABEL _("Settings") @@ -233,8 +232,43 @@ NULL) #define PACKAGE_NOT_FOUND_LABEL _("Package were not found") #define PACKAGE_INFO_LABEL _("Package information") #define LICENCE_AGREE_LABEL _("Yes, I agree to the License Agreement") -#define LICENCE_DISAGREE_LABEL _("No, i do not agree") +#define LICENCE_DISAGREE_LABEL _("No, I do not agree") #define ADD_LANGUAGE_TITLE_LABEL _("Add locales") +#define LAYOUT_REMOVE_LABEL _("Are you sure you want to remove current layout?") +#define LAYOUT_REMOVE_TITLE_LABEL _("Layout deletion") +#define MANUAL_LABEL _("Manual input:") +#define MODEL_LABEL _("Keyboard model:") + +#define KEYBOARD_LAYOUTS_LABEL _("Keyboard layouts:") + +#define MOVE_UP_LABEL _("Move layout up") +#define MOVE_DOWN_LABEL _("Move layout down") +#define ADD_LABEL _("Add layout") +#define REMOVE_LABEL _("Remove layout") + +#define KEYBOARD_MODEL_LABEL _("Keyboard model:") +#define LAYOUTS_LABEL _("Layouts:") +#define DEFAULT_LAYOUT_LABEL _("Default layout") +#define LAYOUT_CHANGING_LABEL _("Changing the layout:") +#define SET_COMPOSE_LABEL _("Set Compose (Multi_Key) to the right Win key") +#define SCROLL_LOCK_LABEL _("Scroll Lock indication when switching layouts") +#define NUMLOCK_LABEL _("NumLock:") +#define KEYBOARD_LAYOUT_LABEL _("Keyboard layout") +#define DESIGNATION_LABEL _("Designation") +#define VARIANT_LABEL _("Variant") +#define NAME_LABEL _("Name") +#define DESCRIPTION_LABEL _("Description") +#define OPTIONS_LABEL _("Options:") +#define MANUAL_LABEL _("Manual input:") +#define KEYBOARD_TITLE_INFO_LABEL _("Specify your preferred keyboard settings") +#define AVAILABLE_LOCALES_LABEL _("Available locales in the system:") +#define SYSTEM_LOCALE_LABEL _("System locale") +#define LOCALE_LABEL _("Locale") +#define LOCALE_LANGUAGE_LABEL _("Language") +#define TERRITORY_LABEL _("Territory") +#define LANGUAGE_TITLE_INFO_LABEL _("Specify your preferred system languages") +#define REMOVE_LOCALE_TOOLTIP_LABEL _("Remove locale") + // #define _LABEL _("Package:") // #define _LABEL _("Module:") // #define _LABEL _("New section at") diff --git a/ubinstall-gtk-keyboard-layouts.glade b/ubinstall-gtk-keyboard-layouts.glade new file mode 100644 index 0000000..7a0cb5a --- /dev/null +++ b/ubinstall-gtk-keyboard-layouts.glade @@ -0,0 +1,123 @@ + + + + + + True + False + com.ublinux.libublsettingsui-gtk3.accept-symbolic + + + True + False + com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic + + + 450 + 550 + True + False + com.ublinux.ubl-settings-keyboard + + + True + True + in + + + True + True + False + 1 + + + column + + + + 3 + + + + + + + column + 0 + + + + 2 + + + + + + + + + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 2 + Keyboard + + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 32 + com.ublinux.ubl-settings-keyboard + + + + + Cancel + True + True + True + image2 + + + 1 + + + + + Accept + True + True + True + image1 + + + end + 2 + + + + + + + diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 835983a..4ec67a7 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -121,23 +121,16 @@ LanguagesList - + - + + + - - - - - - - - LayoutList - True @@ -252,12 +245,12 @@ True False - com.ublinux.libublsettingsui-gtk3.increase-symbolic + com.ublinux.libublsettingsui-gtk3.pan-up True False - com.ublinux.libublsettingsui-gtk3.trash-symbolic + com.ublinux.libublsettingsui-gtk3.pan-down True @@ -349,6 +342,16 @@ False com.ublinux.libublsettingsui-gtk3.trash-symbolic + + True + False + com.ublinux.libublsettingsui-gtk3.increase-symbolic + + + True + False + com.ublinux.libublsettingsui-gtk3.trash-symbolic + True False @@ -777,6 +780,7 @@ agreement 5 5 left + False True @@ -1169,7 +1173,7 @@ agreement - No, i do not agree + No, I do not agree True True False @@ -3634,6 +3638,110 @@ agreement False vertical 5 + + + True + False + vertical + 5 + + + True + False + 10 + 10 + 10 + 10 + 5 + + + True + False + 48 + com.ublinux.ubinstall-gtk + 0 + + + False + True + 0 + + + + + True + False + vertical + + + True + False + Language + True + 0 + + + + + + + + + False + True + 0 + + + + + True + False + Specify your preferred system languages + center + True + 0 + + + + + + False + True + 1 + + + + + True + True + 1 + + + + + False + True + -1 + + + + + True + False + + + False + True + 1 + + + + + False + True + 0 + + True @@ -3678,7 +3786,7 @@ agreement False True - 0 + 1 @@ -3698,6 +3806,9 @@ agreement True LanguageList 0 + + + System locale @@ -3767,7 +3878,7 @@ agreement True True True - Add locale + Add locales image29 + + + False + True + 0 + + + + + True + False + True + True + Move layout down + image14 + + + + False + True + 1 + + + + + True + False + True + True + Add layout + image31 + + + + False + True + 2 + + + + + True + False + True + True + Remove layout + image32 + + + + False + True + 3 + + + + + False + True + 1 + + + True + True + 1 + + + True + True + 1 + True True - 0 + 1 True False - vertical 5 - + True - True - True - Add layouts - image13 - + False + Changing the layout: + 1 False @@ -4177,15 +4341,120 @@ agreement - + True - True - True - Remove layout - image14 - + False + + Default + + + + True + True + 1 + + + + + False + True + 2 + + + + + True + False + 5 + + + True + False + start + 1 + + + False + True + 0 + + + + + True + False + vertical + 5 + + + True + False + 5 + + + True + True + + + False + True + 0 + + + + + True + False + Set Compose (Multi_Key) to the right Win key + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + True + + + False + True + 0 + + + + + True + False + Scroll Lock indication when switching layouts + + + False + True + 1 + + + + + False + True + 1 + + False @@ -4197,14 +4466,56 @@ agreement False True - 1 + 4 + + + + + True + False + 5 + + + True + False + NumLock: + 1 + + + False + True + 0 + + + + + True + False + 0 + + Default + On + Off + + + + True + True + 1 + + + + + False + True + 6 False True - 4 + 1