diff --git a/locale/ubl-settings-system.pot b/locale/ubl-settings-system.pot index 2b6c3af..87e250b 100644 --- a/locale/ubl-settings-system.pot +++ b/locale/ubl-settings-system.pot @@ -237,395 +237,49 @@ msgstr "" msgid "Check" msgstr "" +#: source/ubl-strings.h:68 msgid "OU, Organizational Unit:" msgstr "" -msgid "The name of the OU in which we want to create the computer account in the domain. If the account already exists, it will be updated. Example: \"ubhosts\" or \"OU=UBL Servers,OU=KOM,DC=ad,DC=holding,DC=com\"" -msgstr "" - -msgid "Domain connection" -msgstr "" - -msgid "Afrikaans, South Africa" -msgstr "" - -msgid "Arabic, United Arab Emirates" -msgstr "" - -msgid "Arabic, Bahrain" -msgstr "" - -msgid "Arabic, Algeria" -msgstr "" - -msgid "Arabic, Egypt" -msgstr "" - -msgid "Arabic, Iraq" -msgstr "" - -msgid "Arabic, Jordan" -msgstr "" - -msgid "Arabic, Kuwait" -msgstr "" - -msgid "Arabic, Libya" -msgstr "" - -msgid "Arabic, Morocco" -msgstr "" - -msgid "Arabic, Oman" -msgstr "" - -msgid "Arabic, Qatar" -msgstr "" - -msgid "Arabic, Saudi Arabia" -msgstr "" - -msgid "Arabic, Tunisia" -msgstr "" - -msgid "Arabic, Yemen" -msgstr "" - -msgid "Assamese, India" -msgstr "" - -msgid "Azerbaijani, Azerbaijan" -msgstr "" - -msgid "Belarusian, Belarus" -msgstr "" - -msgid "Bulgarian, Bulgaria" -msgstr "" - -msgid "Bengali, India" -msgstr "" - -msgid "Bosnian, Bosnia and Herzegovina" -msgstr "" - -msgid "Catalan, Spain" -msgstr "" - -msgid "Czech, Czech Republic" -msgstr "" - -msgid "Danish, Denmark" -msgstr "" - -msgid "German, Austria" -msgstr "" - -msgid "German, Belgium" -msgstr "" - -msgid "German, Switzerland" -msgstr "" - -msgid "German, Germany" -msgstr "" - -msgid "German, Liechtenstein" -msgstr "" - -msgid "German, Luxembourg" -msgstr "" - -msgid "Greek, Cyprus" -msgstr "" - -msgid "Greek, Greece" -msgstr "" - -msgid "English, Australia" -msgstr "" - -msgid "English, Botswana" -msgstr "" - -msgid "English, Canada" -msgstr "" - -msgid "English, United Kingdom" -msgstr "" - -msgid "English, Hong Kong SAR China" -msgstr "" - -msgid "English, Ireland" -msgstr "" - -msgid "English, India" -msgstr "" - -msgid "English, Malta" -msgstr "" - -msgid "English, New Zealand" -msgstr "" - -msgid "English, Philippines" -msgstr "" - -msgid "English, Singapore" -msgstr "" - -msgid "English, U.S.A." -msgstr "" - -msgid "English, Zimbabwe" -msgstr "" - -msgid "Spanish, Argentina" -msgstr "" - -msgid "Spanish, Bolivia" -msgstr "" - -msgid "Spanish, Chile" -msgstr "" - -msgid "Spanish, Colombia" -msgstr "" - -msgid "Spanish, Costa Rica" -msgstr "" - -msgid "Spanish, Dominican Republic" -msgstr "" - -msgid "Spanish, Ecuador" -msgstr "" - -msgid "Spanish, Spain" -msgstr "" - -msgid "Spanish, Guatemala" -msgstr "" - -msgid "Spanish, Honduras" -msgstr "" - -msgid "Spanish, Mexico" -msgstr "" - -msgid "Spanish, Nicaragua" -msgstr "" - -msgid "Spanish, Panama" -msgstr "" - -msgid "Spanish, Peru" -msgstr "" - -msgid "Spanish, Puerto Rico" -msgstr "" - -msgid "Spanish, Paraguay" -msgstr "" - -msgid "Spanish, El Salvador" -msgstr "" - -msgid "Spanish, U.S.A." -msgstr "" - -msgid "Spanish, Uruguay" -msgstr "" - -msgid "Spanish, Venezuela" -msgstr "" - -msgid "Estonian, Estonia" -msgstr "" - -msgid "Finnish, Finland" -msgstr "" - -msgid "French, Belgium" -msgstr "" - -msgid "French, Canada" -msgstr "" - -msgid "French, Switzerland" -msgstr "" - -msgid "French, France" -msgstr "" - -msgid "French, Luxembourg" -msgstr "" - -msgid "Gujarati, India" -msgstr "" - -msgid "Hebrew, Israel" -msgstr "" - -msgid "Hindi, India" -msgstr "" - -msgid "Croatian, Croatia" -msgstr "" - -msgid "Hungarian, Hungary" -msgstr "" - -msgid "Armenian, Armenia" -msgstr "" - -msgid "Indonesian, Indonesia" -msgstr "" - -msgid "Icelandic, Iceland" -msgstr "" - -msgid "Italian, Switzerla" -msgstr "" - -msgid "Italian, Italy" -msgstr "" - -msgid "Japanese, Japan" -msgstr "" - -msgid "Georgian, Georgia" -msgstr "" - -msgid "Kazakh, Kazakhstan" -msgstr "" - -msgid "Kannada, India" -msgstr "" - -msgid "Korean, Korea" -msgstr "" - -msgid "Kashmiri, India" -msgstr "" - -msgid "Kurdish, Turkey" -msgstr "" - -msgid "Kurdish (Sorani), Turkey" -msgstr "" - -msgid "Kirghiz, Kyrgyzstan" -msgstr "" - -msgid "Lithuanian, Lithuania" -msgstr "" - -msgid "Latvian, Latvia" -msgstr "" - -msgid "Macedonian, Macedonia" -msgstr "" - -msgid "Malayalam, India" -msgstr "" - -msgid "Marathi, India" -msgstr "" - -msgid "Malay, Malaysia" -msgstr "" - -msgid "Maltese, Malta" -msgstr "" - -msgid "Bokmal, Norway" -msgstr "" - -msgid "Dutch, Belgium" -msgstr "" - -msgid "Dutch, Netherlands" -msgstr "" - -msgid "Nynorsk, Norway" -msgstr "" - -msgid "Oriya, India" -msgstr "" - -msgid "Punjabi, India" -msgstr "" - -msgid "Polish, Poland" -msgstr "" - -msgid "Portuguese, Brazil" -msgstr "" - -msgid "Portuguese, Portugal" -msgstr "" - -msgid "Romanian, Romania" -msgstr "" - -msgid "Russian, Russia" -msgstr "" - -msgid "Russian, Ukraine" -msgstr "" - -msgid "Sanskrit, India" -msgstr "" - -msgid "Slovak, Slovakia" -msgstr "" - -msgid "Slovenian, Slovenia" -msgstr "" - -msgid "Albanian, Albania" -msgstr "" - -msgid "Serbian, Montenegro" -msgstr "" - -msgid "Serbian, Montenegro (Latin)" -msgstr "" - -msgid "Serbian, Serbia" -msgstr "" - -msgid "Serbian, Serbia (Latin)" -msgstr "" - -msgid "Tamil, India" +#: source/ubl-strings.h:69 +msgid "" +"The name of the OU in which we want to create the computer account in the " +"domain. If the account already exists, it will be updated. Example: " +"\"ubhosts\" or \"OU=UBL Servers,OU=KOM,DC=ad,DC=holding,DC=com\"" msgstr "" -msgid "Telugu, India" +#: source/ubl-strings.h:70 +msgid "Language" msgstr "" -msgid "Thai, Thailand" +#: source/ubl-strings.h:71 +msgid "Available languages ​​in the system:" msgstr "" -msgid "Turkish, Turkey" +#: source/ubl-strings.h:72 +msgid "System locale" msgstr "" -msgid "Ukrainian, Ukraine" +#: source/ubl-strings.h:73 +msgid "Territory" msgstr "" -msgid "Vietnamese, Vietnam" +#: source/ubl-strings.h:74 +msgid "Value" msgstr "" -msgid "Simplified Chinese, China" +#: source/ubl-strings.h:75 +msgid "Manual input:" msgstr "" -msgid "Traditional Chinese, Hong Kong SAR China" +#: source/ubl-strings.h:76 +msgid "Languages" msgstr "" -msgid "Chinese, Singapore" +#: source/ubl-strings.h:77 +msgid "Add anguages" msgstr "" -msgid "Traditional Chinese, Taiwan" +#: source/ubl-strings.h:78 +msgid "Remove language" msgstr "" diff --git a/locale/ubl-settings-system_ru.po b/locale/ubl-settings-system_ru.po index 1befc8d..26ce070 100644 --- a/locale/ubl-settings-system_ru.po +++ b/locale/ubl-settings-system_ru.po @@ -238,398 +238,55 @@ msgstr "Выполнение..." msgid "Check" msgstr "Проверка" -msgid "Domain connection" -msgstr "Соединение домена" - +#: source/ubl-strings.h:68 msgid "OU, Organizational Unit:" msgstr "Подразделение:" -msgid "The name of the OU in which we want to create the computer account in the domain. If the account already exists, it will be updated. Example: \"ubhosts\" or \"OU=UBL Servers,OU=KOM,DC=ad,DC=holding,DC=com\"" -msgstr "Имя OU, в котором мы хотим создать учётную запись компьютера в домене. Если учётная запись уже существует, то она будет обновлена. Пример: \"ubhosts\" или \"OU=UBL Servers,OU=KOM,DC=ad,DC=holding,DC=com\"" - -msgid "Afrikaans, South Africa" -msgstr "Африканский, Южная Африка" - -msgid "Arabic, United Arab Emirates" -msgstr "Арабский, ЮАР" - -msgid "Arabic, Bahrain" -msgstr "Арабский, Бахрейн" - -msgid "Arabic, Algeria" -msgstr "Арабский, Алжир" - -msgid "Arabic, Egypt" -msgstr "Арабский, Египет" - -msgid "Arabic, Iraq" -msgstr "Арабский, Ирак" - -msgid "Arabic, Jordan" -msgstr "Арабский, Иордания" - -msgid "Arabic, Kuwait" -msgstr "Арабский, Кувейт" - -msgid "Arabic, Libya" -msgstr "Арабский, Ливия" - -msgid "Arabic, Morocco" -msgstr "Арабский, Морокко" - -msgid "Arabic, Oman" -msgstr "Арабский, Оман" - -msgid "Arabic, Qatar" -msgstr "Арабский, Катар" - -msgid "Arabic, Saudi Arabia" -msgstr "Арабский, Саудовская Аравия" - -msgid "Arabic, Tunisia" -msgstr "Арабский, Тунис" - -msgid "Arabic, Yemen" -msgstr "Арабский, Йемен" - -msgid "Assamese, India" -msgstr "Ассамский, Индия" - -msgid "Azerbaijani, Azerbaijan" -msgstr "Азербайджанский,Азербайджан" - -msgid "Belarusian, Belarus" -msgstr "Беларусский, Беларусь" - -msgid "Bulgarian, Bulgaria" -msgstr "Болгарский, Болгария" - -msgid "Bengali, India" -msgstr "Бенгальский, Индия" - -msgid "Bosnian, Bosnia and Herzegovina" -msgstr "Боснийский, Босния и Герцеговина" - -msgid "Catalan, Spain" -msgstr "Каталонский, Испания" - -msgid "Czech, Czech Republic" -msgstr "Чешский, Чехия" - -msgid "Danish, Denmark" -msgstr "Датский, Дания" - -msgid "German, Austria" -msgstr "Немецкий, Австрия" - -msgid "German, Belgium" -msgstr "Немецкий, Бельгия" - -msgid "German, Switzerland" -msgstr "Немецкий, Швейцария" - -msgid "German, Germany" -msgstr "Немецкий, Германия" - -msgid "German, Liechtenstein" -msgstr "Немецкий, Лихтенштейн" - -msgid "German, Luxembourg" -msgstr "Немецкий, Люксембург" - -msgid "Greek, Cyprus" -msgstr "Греческий, Кипр" - -msgid "Greek, Greece" -msgstr "Греческий, Греция" - -msgid "English, Australia" -msgstr "Английский, Австралия" - -msgid "English, Botswana" -msgstr "Английский, ботсвана" - -msgid "English, Canada" -msgstr "Английский, Канада" - -msgid "English, United Kingdom" -msgstr "Английский, Великобритания" - -msgid "English, Hong Kong SAR China" -msgstr "Английский, Гонконг" - -msgid "English, Ireland" -msgstr "Английский, Ирландия" - -msgid "English, India" -msgstr "Английский, Индия" - -msgid "English, Malta" -msgstr "Английский, Мальта" - -msgid "English, New Zealand" -msgstr "Английский, Новая Зеландия" - -msgid "English, Philippines" -msgstr "Английский, Филиппины" - -msgid "English, Singapore" -msgstr "Английский, Сингапур" - -msgid "English, U.S.A." -msgstr "Английский, США" - -msgid "English, Zimbabwe" -msgstr "Английский, Зимбабве" - -msgid "Spanish, Argentina" -msgstr "Испанский, Аргентина" - -msgid "Spanish, Bolivia" -msgstr "Испанский, Боливия" - -msgid "Spanish, Chile" -msgstr "Испанский, Чили" - -msgid "Spanish, Colombia" -msgstr "Испанский, Колумбия" - -msgid "Spanish, Costa Rica" -msgstr "Испанский, Коста-Рика" - -msgid "Spanish, Dominican Republic" -msgstr "Испанский, Доминиканская республика" - -msgid "Spanish, Ecuador" -msgstr "Испанский, Эквадор" - -msgid "Spanish, Spain" -msgstr "Испанский, Испания" - -msgid "Spanish, Guatemala" -msgstr "Испанский, Гватемала" - -msgid "Spanish, Honduras" -msgstr "Испанский, Гондурас" - -msgid "Spanish, Mexico" -msgstr "Испанский, Мексика" - -msgid "Spanish, Nicaragua" -msgstr "Испанский, Никарагуа" - -msgid "Spanish, Panama" -msgstr "Испанский, Панама" - -msgid "Spanish, Peru" -msgstr "Испанский, Перу" - -msgid "Spanish, Puerto Rico" -msgstr "Испанский, Пуэрто-Рико" - -msgid "Spanish, Paraguay" -msgstr "Испанский, Парагвай" - -msgid "Spanish, El Salvador" -msgstr "Испанский, Сальвадор" - -msgid "Spanish, U.S.A." -msgstr "Испанский, США" - -msgid "Spanish, Uruguay" -msgstr "Испанский, Уругвай" - -msgid "Spanish, Venezuela" -msgstr "Испанский, Венесуэла" - -msgid "Estonian, Estonia" -msgstr "Эстонский, Эстония" - -msgid "Finnish, Finland" -msgstr "Финский, Финляндия" - -msgid "French, Belgium" -msgstr "Французский, Бельгия" - -msgid "French, Canada" -msgstr "Французский, Канада" - -msgid "French, Switzerland" -msgstr "Французский, Швейцария" - -msgid "French, France" -msgstr "Французский, Франция" - -msgid "French, Luxembourg" -msgstr "Французский, Люксембург" - -msgid "Gujarati, India" -msgstr "Гуджаратский, Индия" - -msgid "Hebrew, Israel" -msgstr "Иврит, Израиль" - -msgid "Hindi, India" -msgstr "Хинди, Индия" - -msgid "Croatian, Croatia" -msgstr "Хорватский, Хорватия" - -msgid "Hungarian, Hungary" -msgstr "Венгерский, Венгрия" - -msgid "Armenian, Armenia" -msgstr "Армянский, Армения" - -msgid "Indonesian, Indonesia" -msgstr "Индонезийский, Индонезия" - -msgid "Icelandic, Iceland" -msgstr "Исландский, Исландия" - -msgid "Italian, Switzerla" -msgstr "Итальянский, Швейцария" - -msgid "Italian, Italy" -msgstr "Итальянский, Италия" - -msgid "Japanese, Japan" -msgstr "Японский, Япония" - -msgid "Georgian, Georgia" -msgstr "Грузинский, Грузия" - -msgid "Kazakh, Kazakhstan" -msgstr "Казахский, Казахстан" - -msgid "Kannada, India" -msgstr "Каннада, Индия" - -msgid "Korean, Korea" -msgstr "Корейский, Корея" - -msgid "Kashmiri, India" -msgstr "Кашмирский, Индия" - -msgid "Kurdish, Turkey" -msgstr "Курдский, Турция" - -msgid "Kurdish (Sorani), Turkey" -msgstr "Курдский (Сорани), Турция" - -msgid "Kirghiz, Kyrgyzstan" -msgstr "Киргизский, Кыргызстан" - -msgid "Lithuanian, Lithuania" -msgstr "Литовский, Литва" - -msgid "Latvian, Latvia" -msgstr "Латышский, Латвия" - -msgid "Macedonian, Macedonia" -msgstr "Македонский, Северная Македония" - -msgid "Malayalam, India" -msgstr "Малаялам, Индия" - -msgid "Marathi, India" -msgstr "Маратхи, Индия" - -msgid "Malay, Malaysia" -msgstr "Малайский, Малайзия" - -msgid "Maltese, Malta" -msgstr "Мальтийский, Мальта" - -msgid "Bokmal, Norway" -msgstr "Букмол, Норвегия" - -msgid "Dutch, Belgium" -msgstr "Нидерландский, Бельгия" - -msgid "Dutch, Netherlands" -msgstr "Нидерландский, Нидерланды" - -msgid "Nynorsk, Norway" -msgstr "Норвежский, Норвегия" - -msgid "Oriya, India" -msgstr "Ория, Индия" - -msgid "Punjabi, India" -msgstr "Панджаби, Индия" - -msgid "Polish, Poland" -msgstr "Польский, Польша" - -msgid "Portuguese, Brazil" -msgstr "Португальский, Бразилия" - -msgid "Portuguese, Portugal" -msgstr "Португальский, Португалия" - -msgid "Romanian, Romania" -msgstr "Румынский, Румыния" - -msgid "Russian, Russia" -msgstr "Русский, Россия" - -msgid "Russian, Ukraine" -msgstr "Русский, Украина" - -msgid "Sanskrit, India" -msgstr "Санскрит, Индия" - -msgid "Slovak, Slovakia" -msgstr "Словацкий, Словакия" - -msgid "Slovenian, Slovenia" -msgstr "Словенский, Словения" - -msgid "Albanian, Albania" -msgstr "Албанский, Албания" - -msgid "Serbian, Montenegro" -msgstr "Сербский, Черногория" - -msgid "Serbian, Montenegro (Latin)" -msgstr "Сербский, Черногория" - -msgid "Serbian, Serbia" -msgstr "Сербский, Сербия" - -msgid "Serbian, Serbia (Latin)" -msgstr "Сербский, Сербия" - -msgid "Tamil, India" -msgstr "Тамильский, Индия" +#: source/ubl-strings.h:69 +msgid "" +"The name of the OU in which we want to create the computer account in the " +"domain. If the account already exists, it will be updated. Example: " +"\"ubhosts\" or \"OU=UBL Servers,OU=KOM,DC=ad,DC=holding,DC=com\"" +msgstr "" +"Имя OU, в котором мы хотим создать учётную запись компьютера в домене. Если " +"учётная запись уже существует, то она будет обновлена. Пример: \"ubhosts\" " +"или \"OU=UBL Servers,OU=KOM,DC=ad,DC=holding,DC=com\"" -msgid "Telugu, India" -msgstr "Тулугу, Индия" +#: source/ubl-strings.h:70 +msgid "Language" +msgstr "Язык" -msgid "Thai, Thailand" -msgstr "Тайский, Тайланд" +#: source/ubl-strings.h:71 +msgid "Available languages ​​in the system:" +msgstr "Доступные языки для системы:" -msgid "Turkish, Turkey" -msgstr "Турецкий, Турция" +#: source/ubl-strings.h:72 +msgid "System locale" +msgstr "Язык системы" -msgid "Ukrainian, Ukraine" -msgstr "Украинский, Украина" +#: source/ubl-strings.h:73 +msgid "Territory" +msgstr "Страна" -msgid "Vietnamese, Vietnam" -msgstr "Вьетнамский, Вьетнам" +#: source/ubl-strings.h:74 +msgid "Value" +msgstr "Значение" -msgid "Simplified Chinese, China" -msgstr "Упрощённый Китайский, Китай" +#: source/ubl-strings.h:75 +msgid "Manual input:" +msgstr "Ручной выбор:" -msgid "Traditional Chinese, Hong Kong SAR China" -msgstr "Традиционный Китайский, Гонконг" +#: source/ubl-strings.h:76 +msgid "Languages" +msgstr "Языки" -msgid "Chinese, Singapore" -msgstr "Китайский, Сингапур" +#: source/ubl-strings.h:77 +msgid "Add anguages" +msgstr "Добавить язык" -msgid "Traditional Chinese, Taiwan" -msgstr "Традиционный Китайский, Тайвань" +#: source/ubl-strings.h:78 +msgid "Remove language" +msgstr "Удалить язык" -msgid "Swedish, Sweden" -msgstr "Шведский, Швеция" +msgid "Domain connection" +msgstr "Соединение домена" diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 7bd6310..19f115b 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -78,6 +78,7 @@ endif() set(SOURCE_FILES ubl-settings-system.c + ubl-settings-system-save.c ubl-settings-system-language.c ubl-settings-system-domain.c ubl-settings-system.h diff --git a/source/ubl-settings-system-language.c b/source/ubl-settings-system-language.c index 7e936dc..116c291 100644 --- a/source/ubl-settings-system-language.c +++ b/source/ubl-settings-system-language.c @@ -1,55 +1,79 @@ #include "ubl-settings-system.h" -void on_locale_toggle(GtkCellRendererToggle *,GtkTreePath* path,GtkTreeViewColumn* ,language_window *window){ +void on_locale_toggle(GtkCellRenderer *, gchar *path,language_window *window){ GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(window->LanguagesTree)); - gtk_tree_model_get_iter(model,&iter,path); + GtkTreeModel *model = GTK_TREE_MODEL(window->LanguagesList); + gtk_tree_model_get_iter_from_string(model,&iter,path); gboolean is_active; - gtk_tree_model_get(model,&iter,0,&is_active,-1); + char *target; + gtk_tree_model_get(model,&iter,0,&is_active,1,&target,-1); gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!is_active,-1); + + char *locales = (char*)gtk_entry_get_text(GTK_ENTRY(window->ManualEntry)); + if (!is_active){ + if (!yon_char_check_element(locales,target,",")){ + char *temp = yon_char_append_element(locales,target,","); + gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),temp); + free(temp); + } + } else { + char *temp = yon_char_remove_element(locales,target,","); + gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),temp); + if (!yon_char_is_empty(temp)) free(temp); + } } void on_locale_accept(GtkWidget *self, language_window *window){ main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets"); - yon_interface_update(widgets); + char *final = (char*)gtk_entry_get_text(GTK_ENTRY(window->ManualEntry)); + if (yon_char_is_empty(final)) { + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); + return; + } + yon_config_register(locale_parameter,locale_parameter_command,final); on_subwindow_close(self); + yon_interface_update(widgets); } language_window *yon_language_window_new(){ language_window *window = malloc(sizeof(language_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_locales_path); window->Window = yon_gtk_builder_get_widget(builder,"Window"); + window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); window->LanguagesTree = yon_gtk_builder_get_widget(builder,"LanguagesTree"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); - window->DefaultSwitch = yon_gtk_builder_get_widget(builder,"DefaultSwitch"); + window->ManualEntry = yon_gtk_builder_get_widget(builder,"ManualEntry"); window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleCell")); window->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList")); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->LanguagesTree); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window); - g_signal_connect(G_OBJECT(window->LanguagesTree),"row-activated",G_CALLBACK(on_locale_toggle),window); + g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window); - char *config_value = config(language_parameter); - - int parsed_size; - config_str config_parsed = yon_char_parse(config_value,&parsed_size,";"); + char *config_value = config(locale_parameter); + int config_parsed_size; + config_str config_parsed = NULL; + if (config_value){ + gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),config_value); + config_parsed = yon_char_parse(config_value,&config_parsed_size,","); + } int size; GtkTreeIter iter; config_str languages = yon_config_load(languages_command,&size); for (int i=0;iLanguagesList,&iter); - gtk_list_store_set(window->LanguagesList,&iter,1,languages[0],2,languages[1],3,languages[2],-1); - char *found = yon_char_parsed_check_exist_begins_with(config_parsed,parsed_size,languages[i]); - if (!yon_char_is_empty(found)){ + gtk_list_store_set(window->LanguagesList,&iter,1,parsed[0],2,parsed[1],3,parsed[2],-1); + if (config_parsed_size&&yon_char_parsed_check_exist(config_parsed,config_parsed_size,parsed[2])>-1){ gtk_list_store_set(window->LanguagesList,&iter,0,1,-1); } } - yon_char_parsed_free(config_parsed,parsed_size); + yon_char_parsed_free(config_parsed,config_parsed_size); return window; } @@ -58,12 +82,28 @@ void on_language_open(GtkWidget *, main_window *widgets){ g_object_set_data(G_OBJECT(window->Window),"widgets",widgets); - if (!config(locale_parameter)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultSwitch),1); - } - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,main_icon,"LocalesWindow"); - gtk_dialog_run(GTK_DIALOG(window->Window)); + gtk_widget_show(window->Window); +} + +void on_language_remove(GtkWidget *, main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LocaleTree)),&model,&iter)){ + char *target; + gtk_tree_model_get(model,&iter,3,&target,-1); + char *locale_param = config(locale_parameter); + char *temp = yon_char_remove_element(locale_param,target,","); + if (!yon_char_is_empty(temp)){ + yon_config_register(locale_parameter,locale_parameter_command,temp); + free(temp); + } + locale_param = config(language_parameter); + if (!strcmp(locale_param,target)){ + yon_config_remove_by_key(language_parameter); + } + yon_interface_update(widgets); + } } \ No newline at end of file diff --git a/source/ubl-settings-system-save.c b/source/ubl-settings-system-save.c new file mode 100644 index 0000000..958b7c2 --- /dev/null +++ b/source/ubl-settings-system-save.c @@ -0,0 +1,148 @@ +#include "ubl-settings-system.h" + + +void on_save_done(main_window *, config_str output, int size){ + char *final_output = yon_char_parsed_to_string(output,size,"\n"); + if (final_output){ + printf("%s\n",final_output); + free(final_output); + } + yon_char_parsed_free(output,size); + textdomain(template_ui_LocaleName); + switch (main_config.save_config){ + case 0: + yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + break; + case 1: + yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + break; + case 2: + yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + break; + case 3: + yon_ubl_status_box_render(SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + + } + textdomain(LocaleName); + +} + +void on_config_reload(GtkWidget *,main_window *widgets){ + if (main_config.load_mode==0){ + yon_config_global_load(NULL,widgets); + } else if (main_config.load_mode==1){ + yon_config_local_load(NULL,widgets); + } + yon_interface_update(widgets); +} + +void yon_load_proceed(YON_CONFIG_TYPE type){ + yon_config_clean(); + if (!yon_char_is_empty(config_get_default_command)) + yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); + if (type==YON_CONFIG_GLOBAL){ + yon_config_load_config(type,config_get_command("global"),NULL); + } else if (type==YON_CONFIG_LOCAL){ + yon_config_load_config(type,config_get_command("system"),NULL); + } else if (type==YON_CONFIG_CUSTOM){ + char *path=""; + textdomain(template_ui_LocaleName); + GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); + textdomain(LocaleName); + gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services"); + gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter,"*.ini"); + gtk_file_filter_set_name(filter, "*.ini"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); + gtk_widget_show(dialog); + int response = gtk_dialog_run(GTK_DIALOG(dialog)); + if (response == GTK_RESPONSE_ACCEPT){ + char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + if (!yon_char_is_empty(file)){ + path=file; + } + gtk_widget_destroy(dialog); + } else { + gtk_widget_destroy(dialog); + } + char *command = config_get_command(path); + yon_config_load_config(type,command,NULL); + } +} + +void yon_config_local_load(GtkWidget *, main_window *widgets){ + yon_load_proceed(YON_CONFIG_LOCAL); + main_config.load_mode=YON_CONFIG_LOCAL; + yon_interface_update(widgets); +} + +void yon_config_global_load(GtkWidget *, main_window *widgets){ + yon_load_proceed(YON_CONFIG_GLOBAL); + if (getuid()==0){ + textdomain(template_ui_LocaleName); + yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + textdomain(LocaleName); + } + main_config.load_mode=0; + yon_interface_update(widgets); +} + +void yon_config_custom_load(GtkWidget *, main_window *widgets){ + yon_load_proceed(YON_CONFIG_CUSTOM); + main_config.load_mode=YON_CONFIG_CUSTOM; + yon_interface_update(widgets); +} + +void yon_interface_save(main_window *widgets){ + if (gtk_switch_get_active(GTK_SWITCH(widgets->LocaleDefaultSwitch))){ + yon_config_remove_by_key(language_parameter); + yon_config_remove_by_key(locale_parameter); + } +} + +void yon_config_global_local_save(GtkWidget *, main_window *widgets){ + yon_interface_save(widgets); + main_config.save_config=2; + int changed = yon_config_get_status(id_parameter)==1; + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL); + if (window){ + if (changed){ + yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"warning",SAVE_WARNING_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + } + +} + +void yon_config_local_save(GtkWidget *, main_window *widgets){ + yon_interface_save(widgets); + main_config.save_config=1; + int changed = yon_config_get_status(id_parameter)==1; + template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL); + if (window){ + if (changed){ + yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"warning",SAVE_WARNING_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + } + +} + +void yon_config_global_save(GtkWidget *, main_window *widgets){ + yon_interface_save(widgets); + main_config.save_config=0; + int changed = yon_config_get_status(id_parameter)==1; + template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL); + if (window){ + if (changed){ + yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"warning",SAVE_WARNING_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + } + +} + +void yon_config_custom_save(GtkWidget *, main_window *widgets){ + yon_interface_save(widgets); + main_config.save_config=3; + template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL); + if (window){}; +} \ No newline at end of file diff --git a/source/ubl-settings-system.c b/source/ubl-settings-system.c index a40931f..8c91923 100644 --- a/source/ubl-settings-system.c +++ b/source/ubl-settings-system.c @@ -4,122 +4,23 @@ config main_config; //functions -void on_save_done(main_window *, config_str output, int size){ - char *final_output = yon_char_parsed_to_string(output,size,"\n"); - if (final_output){ - printf("%s\n",final_output); - free(final_output); - } - yon_char_parsed_free(output,size); - textdomain(template_ui_LocaleName); - switch (main_config.save_config){ - case 0: - yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - break; - case 1: - yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - break; - case 2: - yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - break; - case 3: - yon_ubl_status_box_render(SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - - } - textdomain(LocaleName); - -} - -void on_config_reload(GtkWidget *,main_window *widgets){ - if (main_config.load_mode==0){ - yon_config_global_load(NULL,widgets); - } else if (main_config.load_mode==1){ - yon_config_local_load(NULL,widgets); - } - yon_interface_update(widgets); -} - -void yon_load_proceed(YON_CONFIG_TYPE type){ - yon_config_clean(); - if (!yon_char_is_empty(config_get_default_command)) - yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); - if (type==YON_CONFIG_GLOBAL){ - yon_config_load_config(type,config_get_command("global"),NULL); - } else if (type==YON_CONFIG_LOCAL){ - yon_config_load_config(type,config_get_command("system"),NULL); - } else if (type==YON_CONFIG_CUSTOM){ - char *path=""; - textdomain(template_ui_LocaleName); - GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); - textdomain(LocaleName); - gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services"); - gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL); - GtkFileFilter *filter = gtk_file_filter_new(); - gtk_file_filter_add_pattern(filter,"*.ini"); - gtk_file_filter_set_name(filter, "*.ini"); - gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); - gtk_widget_show(dialog); - int response = gtk_dialog_run(GTK_DIALOG(dialog)); - if (response == GTK_RESPONSE_ACCEPT){ - char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - if (!yon_char_is_empty(file)){ - path=file; - } - gtk_widget_destroy(dialog); - } else { - gtk_widget_destroy(dialog); - } - char *command = config_get_command(path); - yon_config_load_config(type,command,NULL); - } -} - -void yon_config_local_load(GtkWidget *, main_window *widgets){ - yon_load_proceed(YON_CONFIG_LOCAL); - main_config.load_mode=YON_CONFIG_LOCAL; - yon_interface_update(widgets); -} - -void yon_config_global_load(GtkWidget *, main_window *widgets){ - yon_load_proceed(YON_CONFIG_GLOBAL); - if (getuid()==0){ - textdomain(template_ui_LocaleName); - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - textdomain(LocaleName); - } - main_config.load_mode=0; - yon_interface_update(widgets); -} - -void yon_config_custom_load(GtkWidget *, main_window *widgets){ - yon_load_proceed(YON_CONFIG_CUSTOM); - main_config.load_mode=YON_CONFIG_CUSTOM; - yon_interface_update(widgets); -} void yon_interface_update(main_window *widgets){ g_signal_handlers_block_by_func(G_OBJECT(widgets->IDEntry),G_CALLBACK(on_id_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->HostnameEntry),G_CALLBACK(on_hostname_changed),widgets); - // g_signal_handlers_block_by_func(G_OBJECT(widgets->LanguageCombo),G_CALLBACK(on_language_changed),widgets); + gtk_list_store_clear(widgets->LanguageList); gtk_entry_set_text(GTK_ENTRY(widgets->HostnameEntry),""); gtk_entry_set_text(GTK_ENTRY(widgets->IDEntry),""); - // gtk_entry_set_text(GTK_ENTRY(widgets->LocaleEntry),DEFAULT_LABEL); gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),""); int size; - GtkTreeIter iter; config_str rtn = yon_file_open(get_id_command,&size); rtn[0]=yon_char_divide_search(rtn[0],"\n",-1); gtk_entry_set_text(GTK_ENTRY(widgets->IDEntry),*rtn); - // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguageCombo),0); char *hostname = yon_config_get_by_key(hostname_parameter); if (!yon_char_is_empty(hostname)){ gtk_entry_set_text(GTK_ENTRY(widgets->HostnameEntry),hostname); } - int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LanguageList),&iter); - for(;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LanguageList),&iter)){ - gtk_list_store_set(widgets->LanguageList,&iter,2,0,-1); - } char *id = yon_config_get_by_key(id_parameter); if (id&&!strcmp(id,"random")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->IDCombo),1); @@ -137,80 +38,35 @@ void yon_interface_update(main_window *widgets){ if (!yon_char_is_empty(domain)){ gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),domain); } - - // char *lang = yon_config_get_by_key(language_parameter); - // char *avlocale = yon_config_get_by_key(locale_parameter); - // int locsize; - // if (avlocale){}; - // config_str locale_parsed = yon_char_parse(avlocale,&locsize,","); - // gboolean is_active; - // char *locale_string=""; - // char *loc_name; - // if (!yon_char_is_empty(avlocale)){ - // int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LanguageList),&iter); - // for(;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LanguageList),&iter)){ - // gtk_tree_model_get(GTK_TREE_MODEL(widgets->languagelist),&iter,0,&loc_name,1,&code,2,&is_active,-1); - // if (yon_char_parsed_check_exist(locale_parsed,locsize,code)>-1){ - // gtk_list_store_set(widgets->languagelist,&iter,2,1,-1); - // char *temp = yon_char_unite(yon_char_is_empty(locale_string)?"":locale_string,yon_char_is_empty(locale_string)?"":"; ",loc_name,NULL); - // if (!yon_char_is_empty(locale_string)) free(locale_string); - // locale_string = temp; - // } - // } - // if (strcmp(locale_string,"")) gtk_entry_set_text(GTK_ENTRY(widgets->LocaleEntry),locale_string); - // } - // yon_language_update(widgets); - // if (!yon_char_is_empty(lang)) { - // gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->LanguageCombo),lang); - // } else { - // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguageCombo),0); - // } - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->IDEntry),G_CALLBACK(on_id_changed),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->HostnameEntry),G_CALLBACK(on_hostname_changed),widgets); - // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->LanguageCombo),G_CALLBACK(on_language_changed),widgets); -} - -void yon_config_global_local_save(){ - main_config.save_config=2; - int changed = yon_config_get_status(id_parameter)==1; - template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL); - if (window){ - if (changed){ - yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"warning",SAVE_WARNING_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - } - } - -} - -void yon_config_local_save(){ - main_config.save_config=1; - int changed = yon_config_get_status(id_parameter)==1; - template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL); - if (window){ - if (changed){ - yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"warning",SAVE_WARNING_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - } - } - -} - -void yon_config_global_save(){ - main_config.save_config=0; - int changed = yon_config_get_status(id_parameter)==1; - template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL); - if (window){ - if (changed){ - yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"warning",SAVE_WARNING_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + { + char *config_locale = config(locale_parameter); + char *config_languages = config(language_parameter); + int parsed_param_size; + config_str parsed_param = yon_char_parse(config_locale,&parsed_param_size,","); + GtkTreeIter iter; + for (int i=0;iLanguageList,&iter); + gtk_list_store_set(widgets->LanguageList,&iter,1,parsed[1],2,parsed[2],3,parsed[0],-1); + if (!yon_char_is_empty(config_languages)){ + if (!strcmp(config_languages,parsed[0])){ + gtk_list_store_set(widgets->LanguageList,&iter,0,1,-1); + } + } else if (!i){ + + } + yon_char_parsed_free(parsed,parsed_size); + } } } + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->IDEntry),G_CALLBACK(on_id_changed),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->HostnameEntry),G_CALLBACK(on_hostname_changed),widgets); } -void yon_config_custom_save(){ - main_config.save_config=3; - template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL); - if (window){}; -} void yon_gtk_windget_set_sensitive_from_entry_emptiness(GtkEntry *self, GtkWidget *target){ if (yon_char_is_empty(gtk_entry_get_text(self))){ gtk_widget_set_sensitive(target,0); @@ -219,6 +75,20 @@ void yon_gtk_windget_set_sensitive_from_entry_emptiness(GtkEntry *self, GtkWidge } } +void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets){ + GtkTreeIter fiter; + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguageList); + gtk_tree_model_get_iter_from_string(model,&fiter,path); + for_iter(model,&iter){ + gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,0,-1); + + } + char *target; + gtk_tree_model_get(model,&fiter,3,&target,-1); + gtk_list_store_set(GTK_LIST_STORE(model),&fiter,0,1,-1); + yon_config_register(language_parameter,language_parameter_command,target); +} void on_hostname_changed(GtkEntry *self, main_window *){ char *text = (char*)gtk_entry_get_text(self); @@ -297,11 +167,37 @@ void on_terminal_command_ended(VteTerminal *, gint status, domain_info_window *w } } +void on_language_default_toggled(GtkWidget *, int status, main_window *widgets){ + gtk_widget_set_sensitive(widgets->LocaleTree,!status); + gtk_widget_set_sensitive(widgets->LocaleAddButton,!status); + gtk_widget_set_sensitive(widgets->LocaleRemoveButton,!status); + if (!status){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguageList); + GtkTreeIter iter; + char *locales = NULL; + for_iter(model,&iter){ + int status; + char *target; + + gtk_tree_model_get(model,&iter,0,&status,3,&target,-1); + char *temp = yon_char_append_element(locales?locales:"",target,","); + if (!yon_char_is_empty(locales)) free(locales); + locales = temp; + if (status){ + yon_config_register(language_parameter,language_parameter_command,target); + } + } + if (!yon_char_is_empty(locales)){ + yon_config_register(locale_parameter,locale_parameter_command,locales); + } + } +} + main_window *yon_main_window_complete(main_window *widgets){ /* Widgets getting | Получение виджетов */ widgets = yon_remalloc(widgets,sizeof(main_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); - gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),0,0,0); + gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0); widgets->HostnameEntry = yon_gtk_builder_get_widget(builder,"HostnameEntry"); widgets->IDCombo = yon_gtk_builder_get_widget(builder,"IDCombo"); @@ -312,6 +208,7 @@ main_window *yon_main_window_complete(main_window *widgets){ widgets->LocaleAddButton = yon_gtk_builder_get_widget(builder,"LocaleAddButton"); widgets->LocaleRemoveButton = yon_gtk_builder_get_widget(builder,"LocaleRemoveButton"); widgets->LocaleDefaultSwitch = yon_gtk_builder_get_widget(builder,"LocaleDefaultSwitch"); + widgets->LocaleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"LocaleCell")); widgets->FindButton = yon_gtk_builder_get_widget(builder,"FindButton"); widgets->DomainButton = yon_gtk_builder_get_widget(builder,"DomainButton"); @@ -322,18 +219,9 @@ main_window *yon_main_window_complete(main_window *widgets){ widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); - - gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL); - - GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2"); - gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem); - gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->AboutMenuItem); - /* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */ /* Signal connection | Присоединение сигналов */ - g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); - g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(yon_config_global_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(yon_config_local_load),widgets); @@ -349,10 +237,9 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->IDEntry),"changed",G_CALLBACK(on_id_changed),widgets); g_signal_connect(G_OBJECT(widgets->IDCopyButton),"clicked",G_CALLBACK(on_id_copy),widgets); g_signal_connect(G_OBJECT(widgets->LocaleAddButton),"clicked",G_CALLBACK(on_language_open),widgets); - // g_signal_connect(G_OBJECT(widgets->LocaleRemoveButton),"clicked",G_CALLBACK(on_language_remove),widgets); - g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LocaleTree); - g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LocaleAddButton); - g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LocaleRemoveButton); + g_signal_connect(G_OBJECT(widgets->LocaleRemoveButton),"clicked",G_CALLBACK(on_language_remove),widgets); + g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(on_language_default_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets); g_signal_connect(G_OBJECT(widgets->DomainButton),"clicked",G_CALLBACK(on_domain_opened),widgets); g_signal_connect(G_OBJECT(widgets->DomainEntry),"icon-press",G_CALLBACK(on_main_window_domain_status_clicked),widgets); @@ -362,23 +249,9 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->FindButton),"clicked",G_CALLBACK(on_find_domains_clicked),widgets); - - gtk_widget_set_size_request(widgets->Window,800,440); - // g_timeout_add(1000,(GSourceFunc)on_check_domain_connected,widgets); on_check_domain_connected(NULL, widgets); - int size; - config_str locales = yon_resource_open_file(get_locales_command,&size); - GtkTreeIter iter; - for (int i=1;iLanguageList,&iter); - gtk_list_store_set(widgets->LanguageList,&iter,0,_(loc_parsed[1]),1,loc_parsed[0],2,0,-1); - } - yon_char_parsed_free(locales,size); if (main_config.lock_load_global == 1){ gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0); } @@ -399,9 +272,24 @@ main_window *yon_main_window_complete(main_window *widgets){ return widgets; } +void yon_config_init(){ + main_config.languages = g_hash_table_new(g_str_hash,g_str_equal); + int size; + config_str languages = yon_config_load(languages_command,&size); + for (int i=0;i + + @@ -23,7 +25,7 @@ com.ublinux.libublsettingsui-gtk3.accept-symbolic - 450 + 500 550 False True @@ -32,6 +34,7 @@ True False + 5 vertical 5 @@ -49,81 +52,71 @@ 0 - - - True - False - 5 - 5 - 5 - 5 - 5 - - - True - True - - - False - True - 0 - - - - - True - False - Default - - - False - True - 1 - - - - - False - True - 1 - - True True 5 5 - 5 + never in True True LanguagesList - False + both True - + + none + - column - 2 + 0 - column + Locale - 0 + 1 + + + + + + + Language + + + word + 100 + + + 2 + + + + + + + Territory + + + word + 125 + + + 3 @@ -134,6 +127,43 @@ True True + 1 + + + + + True + False + 5 + 5 + 5 + + + True + False + Manual input: + + + False + True + 0 + + + + + True + True + + + True + True + 1 + + + + + False + True 2 @@ -143,7 +173,6 @@ True False - True True diff --git a/ubl-settings-system.glade b/ubl-settings-system.glade index 9e717c1..163446a 100644 --- a/ubl-settings-system.glade +++ b/ubl-settings-system.glade @@ -27,12 +27,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + + + - + + + - - @@ -368,13 +370,64 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True True in + 125 True True + LanguageList + + + System locale + + + True + + + 0 + + + + + + + 100 + Value + + + + 3 + + + + + + + Language + True + + + + 1 + + + + + + + Territory + True + + + + 2 + + + + @@ -395,6 +448,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True True True + Add languages image2