Merge pull request 'WIP languages table' (#83) from YanTheKaller/ubl-settings-system:master into master

Reviewed-on: #83
pull/93/head v2.33
Dmitry Razumov 6 months ago
commit 9099f0681d

@ -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 ""

@ -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 "Испанский, Перу"
msgstr "Подразделение (OU, Organizational Unit):"
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 "Соединение домена"

@ -78,6 +78,9 @@ 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
ubl-strings.h
)

@ -0,0 +1,301 @@
#include "ubl-settings-system.h"
void on_domain_address_save(GtkEntry *self){
char *adress = (char*)gtk_entry_get_text(self);
if (!yon_char_is_empty(adress)){
yon_config_register(DOMAIN,DOMAIN_get_command,adress);
}
}
domain_info_window *yon_information_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_domain_view_path);
domain_info_window *window = malloc(sizeof(domain_info_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->ExecuteTerminal = yon_gtk_builder_get_widget(builder,"ExecuteTerminal");
window->TerminalScroll = yon_gtk_builder_get_widget(builder,"TerminalScroll");
yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll));
GdkRGBA rgba;
vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->ExecuteTerminal),&rgba);
vte_terminal_set_color_cursor(VTE_TERMINAL(window->ExecuteTerminal),&rgba);
yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,"com.ublinux.ubl-settings-system","InfoWindow");
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"loading",LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
g_signal_connect(G_OBJECT(window->ExecuteTerminal), "child-exited", G_CALLBACK(on_terminal_command_ended), window);
return window;
}
void on_domain_connect(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
connection_window *window = yon_dictionary_get_data(dict->first->next,connection_window*);
char *adress = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (yon_char_is_empty(adress)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->AdressEntry);
return;
}
char *login = (char*)gtk_entry_get_text(GTK_ENTRY(window->LoginEntry));
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
char *kerberos = (char*)gtk_entry_get_text(GTK_ENTRY(window->KerberosServerEntry));
char *dns = (char*)gtk_entry_get_text(GTK_ENTRY(window->DNSEntry));
char *ou = (char*)gtk_entry_get_text(GTK_ENTRY(window->OuEntry));
char *client = NULL;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ClientCombo))){
client = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ClientCombo));
}
char *final = yon_char_unite(!yon_char_is_empty(kerberos)?kerberos_addition_command(kerberos):"",!yon_char_is_empty(kerberos)?" ":"",!yon_char_is_empty(dns)?dns_addition_command(dns):"",!yon_char_is_empty(dns)?" ":"",!yon_char_is_empty(client)?client_addition_command(client):"",!yon_char_is_empty(client)?" ":"",NULL);
char *command = domain_connect_command(adress,login,password,final,ou);
yon_debug_output("%s\n",command);
domain_info_window *dialog = yon_information_window_new();
gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),DOMAIN_CONNECTING_LABEL);
gtk_window_set_title(GTK_WINDOW(dialog->Window),DOMAIN_CONNECTING_LABEL);
yon_terminal_integrated_start(dialog->ExecuteTerminal,command);
dictionary *dc = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dc,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dc,"window",window->Window);
g_signal_connect(G_OBJECT(dialog->ExecuteTerminal),"child-exited",G_CALLBACK(on_terminal_done),dc);
gtk_widget_show(dialog->Window);
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
on_config_reload(NULL,widgets);
}
void on_status_clicked(GtkWidget *, connection_window *window){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (!yon_char_is_empty(target)){
yon_debug_output("%s\n",domain_info(target));
domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_info(target));
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
}
}
void on_find_domains_clicked(GtkWidget *, main_window *window){
domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domains_seek_command);
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
// yon_terminal_window_launch(GTK_WINDOW(window->Window),yon_debug_output("%s\n",domains_seek_command),yon_char_get_localised_from_lib(SUCCESS_LABEL),yon_char_get_localised_from_lib(FAIL_LABEL));
}
void on_main_window_domain_status_clicked(GtkWidget *, GtkEntryIconPosition icon_pos,GdkEvent* ,main_window *widgets){
if (icon_pos==GTK_ENTRY_ICON_SECONDARY&&main_config.domain_connected){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
if (!yon_char_is_empty(target)){
yon_debug_output("%s\n",get_domain_info_command);
domain_info_window *dialog = yon_information_window_new();
gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),INFO_TITLE_LABEL);
yon_terminal_integrated_start(dialog->ExecuteTerminal,get_domain_info_command);
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window));
gtk_widget_show(dialog->Window);
}
}
}
int update_thread_buzy = 0;
gboolean on_main_window_domain_status_update(connection_window *window){
const char *target = gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (!yon_char_is_empty(target)){
int status = system(domain_check_alive(target));
if (!status){
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(window->AdressEntry),GTK_ENTRY_ICON_SECONDARY,domain_connected_icon);
} else {
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(window->AdressEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
}
} else {
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(window->AdressEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
}
g_mutex_lock(&main_config.ThreadMutex);
update_thread_buzy = 0;
g_mutex_unlock(&main_config.ThreadMutex);
return G_SOURCE_REMOVE;
}
// gboolean yon_update_thread(GtkWidget *self, GdkEvent *event, connection_window *window){
gboolean yon_update_thread(GtkWidget *, connection_window *window){
g_mutex_lock(&main_config.ThreadMutex);
if (!update_thread_buzy){
update_thread_buzy=1;
g_mutex_unlock(&main_config.ThreadMutex);
g_idle_add((GSourceFunc)on_main_window_domain_status_update,window);
} else {
g_mutex_unlock(&main_config.ThreadMutex);
}
return 1;
}
connection_window *yon_connection_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_connection_path);
connection_window *window = malloc(sizeof(connection_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->AdressEntry = yon_gtk_builder_get_widget(builder,"AdressEntry");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->StatusEntry = yon_gtk_builder_get_widget(builder,"StatusEntry");
window->LoginEntry = yon_gtk_builder_get_widget(builder,"LoginEntry");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->KerberosServerEntry = yon_gtk_builder_get_widget(builder,"KerberosServerEntry");
window->DNSEntry = yon_gtk_builder_get_widget(builder,"DNSEntry");
window->ClientCombo = yon_gtk_builder_get_widget(builder,"ClientCombo");
window->AdditionalCombo = yon_gtk_builder_get_widget(builder,"AdditionalCombo");
window->EditButton = yon_gtk_builder_get_widget(builder,"EditButton");
window->SettingsTree = yon_gtk_builder_get_widget(builder,"SettingsTree");
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->CheckButton = yon_gtk_builder_get_widget(builder,"CheckButton");
window->OuEntry = yon_gtk_builder_get_widget(builder,"OuEntry");
window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
yon_gtk_entry_block_symbols(GTK_ENTRY(window->OuEntry),"!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~.");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->StatusEntry),"clicked",G_CALLBACK(on_status_clicked),window);
g_signal_connect(G_OBJECT(window->CheckButton),"clicked",G_CALLBACK(yon_update_thread),window);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
return window;
}
void on_domain_disconnect(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
domain_window *window = yon_dictionary_get_data(dict->first->next,domain_window*);
char *adress = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
char *login = (char*)gtk_entry_get_text(GTK_ENTRY(window->LoginEntry));
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (yon_char_is_empty(adress)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->AdressEntry);
return;
}
yon_debug_output("%s\n",domain_disconnect_command(adress,login,password));
domain_info_window *dialog = yon_information_window_new();
gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),DISCONNECTION_LABEL);
gtk_window_set_title(GTK_WINDOW(dialog->Window),DISCONNECTION_LABEL);
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_disconnect_command(adress,login,password));
dictionary *dc = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dc,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dc,"window",window->Window);
g_signal_connect(G_OBJECT(dialog->ExecuteTerminal),"child-exited",G_CALLBACK(on_terminal_done),dc);
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
gtk_widget_show(dialog->Window);
}
domain_window *yon_domain_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_domain_path);
domain_window *window = malloc(sizeof(domain_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
window->AdressEntry = yon_gtk_builder_get_widget(builder,"AdressEntry");
window->LoginEntry = yon_gtk_builder_get_widget(builder,"LoginEntry");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->DNSEntry = yon_gtk_builder_get_widget(builder,"DNSEntry");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
return window;
}
void on_domain_opened(GtkWidget *, main_window *widgets){
if (main_config.domain_connected){
domain_window *window = yon_domain_window_new();
gtk_label_set_text(GTK_LABEL(window->HeadLabel),DISCONNECTION_LABEL);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),DISCONNECTION_LABEL,"com.ublinux.ubl-settings-system","DomainWindow");
char *domain = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
char *password = yon_config_get_by_key(DOMAIN_ADMANGER);
char *login = yon_char_divide_search(password,":",-1);
char *dns = config(DOMAIN_DNS);
if (!yon_char_is_empty(login))
gtk_entry_set_text(GTK_ENTRY(window->LoginEntry),login);
if (!yon_char_is_empty(password))
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(window->AdressEntry),domain);
if (!yon_char_is_empty(dns))
gtk_entry_set_text(GTK_ENTRY(window->DNSEntry),dns);
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_domain_disconnect),dict);
g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_check_domain_connected),widgets);
gtk_widget_show(window->Window);
} else {
connection_window *window = yon_connection_window_new();
gtk_label_set_text(GTK_LABEL(window->HeadLabel),DOMAIN_CONNECTING_LABEL);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),DOMAIN_CONNECTING_LABEL,"com.ublinux.ubl-settings-system","ConnectWindow");
char *domain = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
char *dns = config(DOMAIN_DNS);
char *client = yon_config_get_by_key(DOMAIN_CLIENT);
char *kerberos = yon_config_get_by_key(DOMAIN_SERVER);
char *password = yon_config_get_by_key(DOMAIN_ADMANGER);
char *login = yon_char_divide_search(password,":",-1);
if (!yon_char_is_empty(login))
gtk_entry_set_text(GTK_ENTRY(window->LoginEntry),login);
if (!yon_char_is_empty(password))
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(window->AdressEntry),domain);
if (!yon_char_is_empty(kerberos))
gtk_entry_set_text(GTK_ENTRY(window->KerberosServerEntry),kerberos);
if (!yon_char_is_empty(dns))
gtk_entry_set_text(GTK_ENTRY(window->DNSEntry),dns);
if (!yon_char_is_empty(client)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ClientCombo),client);
}
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_domain_connect),dict);
g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_check_domain_connected),widgets);
// yon_update_thread(NULL,NULL,window);
gtk_widget_show(window->Window);
}
}
// standard functions
void on_check_domain_connected(GtkWidget *, main_window *widgets){
int ansv = system(domain_connect_check);
if (!ansv){
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,domain_connected_icon);
gtk_button_set_label(GTK_BUTTON(widgets->DomainButton),DOMAIN_DISCONNECT_LABEL);
gtk_widget_set_tooltip_markup(widgets->DomainButton,DDISCONNECTION_LABEL);
gtk_entry_set_icon_tooltip_markup(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,DOMAIN_CONNECTED_LABEL);
main_config.domain_connected=1;
} else {
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
gtk_button_set_label(GTK_BUTTON(widgets->DomainButton),DOMAIN_CONNECT_LABEL);
gtk_widget_set_tooltip_markup(widgets->DomainButton,CONNECTION_LABEL);
gtk_entry_set_icon_tooltip_markup(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,DOMAIN_DISCONNECTED_LABEL);
main_config.domain_connected=0;
}
YON_CONFIG_TYPE type;
switch(main_config.load_mode){
case 0: type=YON_CONFIG_GLOBAL;
yon_config_load_config(type,yon_config_parameter_prepare_command(DOMAIN_get_command,"global",NULL,NULL), yon_config_parameter_prepare_command(HOSTNAME_get_command,"global",NULL,NULL),NULL);
break;
case 1: type=YON_CONFIG_LOCAL;
yon_config_load_config(type,yon_config_parameter_prepare_command(DOMAIN_get_command,"system",NULL,NULL), yon_config_parameter_prepare_command(HOSTNAME_get_command,"system",NULL,NULL),NULL);
break;
case 3: type=YON_CONFIG_CUSTOM;
if (!yon_char_is_empty(main_config.custom_load_path))
yon_config_load_config(type,yon_config_parameter_prepare_command(DOMAIN_get_command,main_config.custom_load_path,NULL,NULL), yon_config_parameter_prepare_command(HOSTNAME_get_command,main_config.custom_load_path,NULL,NULL),NULL);
break;
}
char *hostname = yon_config_get_by_key(hostname_parameter);
char *domain = yon_config_get_by_key(DOMAIN);
if (!yon_char_is_empty(hostname))
gtk_entry_set_text(GTK_ENTRY(widgets->HostnameEntry),hostname);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),domain);
}

@ -0,0 +1,109 @@
#include "ubl-settings-system.h"
void on_locale_toggle(GtkCellRenderer *, gchar *path,language_window *window){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(window->LanguagesList);
gtk_tree_model_get_iter_from_string(model,&iter,path);
gboolean is_active;
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");
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->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->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window);
g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window);
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;i<size;i++){
yon_char_remove_last_symbol(languages[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(languages[i],&parsed_size,"|");
gtk_list_store_append(window->LanguagesList,&iter);
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,config_parsed_size);
return window;
}
void on_language_open(GtkWidget *, main_window *widgets){
language_window *window = yon_language_window_new();
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,main_icon,"LocalesWindow");
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);
}
}

@ -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){};
}

@ -4,139 +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_language_update(main_window *widgets){
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->LanguageCombo));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->LanguageCombo),DEFAULT_LABEL);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguageCombo),0);
GtkTreeIter iter;
for_iter(GTK_TREE_MODEL(widgets->languagelist),&iter){
char *target, *code;
int active;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->languagelist),&iter,0,&target,1,&code,2,&active,-1);
if (active){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->LanguageCombo),code,target);
}
}
}
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->ConsoleFontCombo),G_CALLBACK(on_console_font_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->ConsoleFontCombo),0);
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);
@ -155,95 +39,38 @@ void yon_interface_update(main_window *widgets){
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),domain);
}
char *code;
char *cons_font = yon_config_get_by_key(console_font_parameter);
if (cons_font){
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->fontlist),&iter);
for(;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->fontlist),&iter)){
gtk_tree_model_get(GTK_TREE_MODEL(widgets->fontlist),&iter,0,&code,-1);
if (code&&!strcmp(code,cons_font)) gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widgets->ConsoleFontCombo),&iter);
{
char *config_locale = config(locale_parameter);
char *config_languages = config(language_parameter);
if (yon_char_is_empty(config_locale)||yon_config_check_ignore(locale_parameter)){
gtk_switch_set_active(GTK_SWITCH(widgets->LocaleDefaultSwitch),1);
} else {
gtk_switch_set_active(GTK_SWITCH(widgets->LocaleDefaultSwitch),0);
}
}
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;
int parsed_param_size;
config_str parsed_param = yon_char_parse(config_locale,&parsed_param_size,",");
GtkTreeIter iter;
for (int i=0;i<parsed_param_size;i++){
char *cur_lang = g_hash_table_lookup(main_config.languages,parsed_param[i]);
if (!yon_char_is_empty(cur_lang)){
int parsed_size;
config_str parsed = yon_char_parse(cur_lang,&parsed_size,"|");
gtk_list_store_append(widgets->LanguageList,&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);
}
}
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->ConsoleFontCombo),G_CALLBACK(on_console_font_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);
}
}
}
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 on_domain_address_save(GtkEntry *self){
char *adress = (char*)gtk_entry_get_text(self);
if (!yon_char_is_empty(adress)){
yon_config_register(DOMAIN,DOMAIN_get_command,adress);
}
}
void yon_gtk_windget_set_sensitive_from_entry_emptiness(GtkEntry *self, GtkWidget *target){
@ -254,75 +81,19 @@ void yon_gtk_windget_set_sensitive_from_entry_emptiness(GtkEntry *self, GtkWidge
}
}
void on_locale_toggle(GtkCellRendererToggle *,GtkTreePath* path,GtkTreeViewColumn* ,locals_window *window){
void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets){
GtkTreeIter fiter;
GtkTreeIter iter;
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(window->MainTree));
gtk_tree_model_get_iter(model,&iter,path);
gboolean is_active;
gtk_tree_model_get(model,&iter,2,&is_active,-1);
gtk_list_store_set(GTK_LIST_STORE(model),&iter,2,!is_active,-1);
}
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);
void on_locale_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
locals_window *window = yon_dictionary_get_data(dict->first->next,locals_window*);
GtkTreeIter iter;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DefaultCheck))){
yon_config_remove_by_key(locale_parameter);
yon_config_remove_by_key(language_parameter);
gtk_entry_set_text(GTK_ENTRY(widgets->LocaleEntry),DEFAULT_LABEL);
for_iter (GTK_TREE_MODEL(widgets->languagelist),&iter){
gtk_list_store_set(widgets->languagelist,&iter,2,0,-1);
}
} else {
gboolean is_active;
char *final_string = "";
char *final_ids = "";
char *name, *id;
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,&name,1,&id,2,&is_active,-1);
if (is_active){
final_string = yon_char_unite(strcmp(final_string,"") ? yon_char_append(final_string,"; ") : final_string,name,NULL);
final_ids = yon_char_unite(strcmp(final_ids,"") ? yon_char_append(final_ids,",") : final_ids,id,NULL);
}
}
yon_config_register(locale_parameter,LOCALE_get_command,final_ids);
gtk_entry_set_text(GTK_ENTRY(widgets->LocaleEntry),final_string);
}
yon_language_update(widgets);
on_subwindow_close(self);
}
void on_locale_open(GtkWidget *, main_window *widgets){
locals_window *window = malloc(sizeof(locals_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_locales_path);
window->Window = yon_gtk_builder_get_widget(builder,"localesLayoutsWindow");
window->MainTree = yon_gtk_builder_get_widget(builder,"localesTree");
window->CloseButton = yon_gtk_builder_get_widget(builder,"localesCancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"localesAcceptButton");
window->DefaultCheck = yon_gtk_builder_get_widget(builder,"DefaultCheck");
window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"toggleCell"));
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(widgets->languagelist));
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->CloseButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->DefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->MainTree);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),dict);
g_signal_connect(G_OBJECT(window->MainTree),"row-activated",G_CALLBACK(on_locale_toggle),window);
if (!config(locale_parameter)){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),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));
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 *){
@ -384,32 +155,6 @@ void on_id_copy(GtkButton *, main_window *widgets){
yon_ubl_status_box_render(COPY_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
void on_console_font_changed(GtkComboBox *self, main_window *widgets){
GtkTreeIter iter;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ConsoleFontCombo))==0){
yon_config_remove_by_key(console_font_parameter);
} else {
gtk_combo_box_get_active_iter(self,&iter);
char *code;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->fontlist),&iter,0,&code,-1);
if (code){
if (yon_config_get_by_key(console_font_parameter)){
yon_config_set(console_font_parameter,code);
} else {
yon_config_register(console_font_parameter,CONSOLE_FONT_get_command,code);
}
}
}
}
void on_language_changed(GtkComboBox *, main_window *widgets){
const char *code;
code = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguageCombo));
if (code){
yon_config_register(language_parameter,LANG_get_command,(char*)code);
}
}
void on_terminal_done(VteTerminal *, gint status, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
GtkWidget *window = yon_dictionary_get_data(dict->first->next,GtkWidget*);
@ -428,337 +173,61 @@ void on_terminal_command_ended(VteTerminal *, gint status, domain_info_window *w
}
}
domain_info_window *yon_information_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_domain_view_path);
domain_info_window *window = malloc(sizeof(domain_info_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->ExecuteTerminal = yon_gtk_builder_get_widget(builder,"ExecuteTerminal");
window->TerminalScroll = yon_gtk_builder_get_widget(builder,"TerminalScroll");
yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll));
GdkRGBA rgba;
vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->ExecuteTerminal),&rgba);
vte_terminal_set_color_cursor(VTE_TERMINAL(window->ExecuteTerminal),&rgba);
yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,"com.ublinux.ubl-settings-system","InfoWindow");
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(window->StatusBox),"loading",LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
g_signal_connect(G_OBJECT(window->ExecuteTerminal), "child-exited", G_CALLBACK(on_terminal_command_ended), window);
return window;
}
void on_domain_connect(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
connection_window *window = yon_dictionary_get_data(dict->first->next,connection_window*);
char *adress = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (yon_char_is_empty(adress)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->AdressEntry);
return;
}
char *login = (char*)gtk_entry_get_text(GTK_ENTRY(window->LoginEntry));
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
char *kerberos = (char*)gtk_entry_get_text(GTK_ENTRY(window->KerberosServerEntry));
char *dns = (char*)gtk_entry_get_text(GTK_ENTRY(window->DNSEntry));
char *ou = (char*)gtk_entry_get_text(GTK_ENTRY(window->OuEntry));
char *client = NULL;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ClientCombo))){
client = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ClientCombo));
}
char *final = yon_char_unite(!yon_char_is_empty(kerberos)?kerberos_addition_command(kerberos):"",!yon_char_is_empty(kerberos)?" ":"",!yon_char_is_empty(dns)?dns_addition_command(dns):"",!yon_char_is_empty(dns)?" ":"",!yon_char_is_empty(client)?client_addition_command(client):"",!yon_char_is_empty(client)?" ":"",NULL);
char *command = domain_connect_command(adress,login,password,final,ou);
yon_debug_output("%s\n",command);
domain_info_window *dialog = yon_information_window_new();
gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),DOMAIN_CONNECTING_LABEL);
gtk_window_set_title(GTK_WINDOW(dialog->Window),DOMAIN_CONNECTING_LABEL);
yon_terminal_integrated_start(dialog->ExecuteTerminal,command);
dictionary *dc = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dc,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dc,"window",window->Window);
g_signal_connect(G_OBJECT(dialog->ExecuteTerminal),"child-exited",G_CALLBACK(on_terminal_done),dc);
gtk_widget_show(dialog->Window);
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
on_config_reload(NULL,widgets);
}
void on_status_clicked(GtkWidget *, connection_window *window){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (!yon_char_is_empty(target)){
yon_debug_output("%s\n",domain_info(target));
domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_info(target));
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
}
}
void on_find_domains_clicked(GtkWidget *, main_window *window){
domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domains_seek_command);
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
// yon_terminal_window_launch(GTK_WINDOW(window->Window),yon_debug_output("%s\n",domains_seek_command),yon_char_get_localised_from_lib(SUCCESS_LABEL),yon_char_get_localised_from_lib(FAIL_LABEL));
}
void on_main_window_domain_status_clicked(GtkWidget *, GtkEntryIconPosition icon_pos,GdkEvent* ,main_window *widgets){
if (icon_pos==GTK_ENTRY_ICON_SECONDARY&&main_config.domain_connected){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
if (!yon_char_is_empty(target)){
yon_debug_output("%s\n",get_domain_info_command);
domain_info_window *dialog = yon_information_window_new();
gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),INFO_TITLE_LABEL);
yon_terminal_integrated_start(dialog->ExecuteTerminal,get_domain_info_command);
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window));
gtk_widget_show(dialog->Window);
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);
}
}
}
}
int update_thread_buzy = 0;
gboolean on_main_window_domain_status_update(connection_window *window){
const char *target = gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (!yon_char_is_empty(target)){
int status = system(domain_check_alive(target));
if (!status){
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(window->AdressEntry),GTK_ENTRY_ICON_SECONDARY,domain_connected_icon);
} else {
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(window->AdressEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
if (!yon_char_is_empty(locales)){
yon_config_register(locale_parameter,locale_parameter_command,locales);
}
} else {
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(window->AdressEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
}
g_mutex_lock(&main_config.ThreadMutex);
update_thread_buzy = 0;
g_mutex_unlock(&main_config.ThreadMutex);
return G_SOURCE_REMOVE;
}
// gboolean yon_update_thread(GtkWidget *self, GdkEvent *event, connection_window *window){
gboolean yon_update_thread(GtkWidget *, connection_window *window){
g_mutex_lock(&main_config.ThreadMutex);
if (!update_thread_buzy){
update_thread_buzy=1;
g_mutex_unlock(&main_config.ThreadMutex);
g_idle_add((GSourceFunc)on_main_window_domain_status_update,window);
} else {
g_mutex_unlock(&main_config.ThreadMutex);
}
return 1;
}
connection_window *yon_connection_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_connection_path);
connection_window *window = malloc(sizeof(connection_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->AdressEntry = yon_gtk_builder_get_widget(builder,"AdressEntry");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->StatusEntry = yon_gtk_builder_get_widget(builder,"StatusEntry");
window->LoginEntry = yon_gtk_builder_get_widget(builder,"LoginEntry");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->KerberosServerEntry = yon_gtk_builder_get_widget(builder,"KerberosServerEntry");
window->DNSEntry = yon_gtk_builder_get_widget(builder,"DNSEntry");
window->ClientCombo = yon_gtk_builder_get_widget(builder,"ClientCombo");
window->AdditionalCombo = yon_gtk_builder_get_widget(builder,"AdditionalCombo");
window->EditButton = yon_gtk_builder_get_widget(builder,"EditButton");
window->SettingsTree = yon_gtk_builder_get_widget(builder,"SettingsTree");
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->CheckButton = yon_gtk_builder_get_widget(builder,"CheckButton");
window->OuEntry = yon_gtk_builder_get_widget(builder,"OuEntry");
window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
yon_gtk_entry_block_symbols(GTK_ENTRY(window->OuEntry),"!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~.");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->StatusEntry),"clicked",G_CALLBACK(on_status_clicked),window);
g_signal_connect(G_OBJECT(window->CheckButton),"clicked",G_CALLBACK(yon_update_thread),window);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
return window;
}
void on_domain_disconnect(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
domain_window *window = yon_dictionary_get_data(dict->first->next,domain_window*);
char *adress = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
char *login = (char*)gtk_entry_get_text(GTK_ENTRY(window->LoginEntry));
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (yon_char_is_empty(adress)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->AdressEntry);
return;
}
yon_debug_output("%s\n",domain_disconnect_command(adress,login,password));
domain_info_window *dialog = yon_information_window_new();
gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),DISCONNECTION_LABEL);
gtk_window_set_title(GTK_WINDOW(dialog->Window),DISCONNECTION_LABEL);
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_disconnect_command(adress,login,password));
dictionary *dc = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dc,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dc,"window",window->Window);
g_signal_connect(G_OBJECT(dialog->ExecuteTerminal),"child-exited",G_CALLBACK(on_terminal_done),dc);
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
gtk_widget_show(dialog->Window);
}
domain_window *yon_domain_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_domain_path);
domain_window *window = malloc(sizeof(domain_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton = yon_gtk_builder_get_widget(builder,"SaveButton");
window->AdressEntry = yon_gtk_builder_get_widget(builder,"AdressEntry");
window->LoginEntry = yon_gtk_builder_get_widget(builder,"LoginEntry");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->DNSEntry = yon_gtk_builder_get_widget(builder,"DNSEntry");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
return window;
}
void on_domain_opened(GtkWidget *, main_window *widgets){
if (main_config.domain_connected){
domain_window *window = yon_domain_window_new();
gtk_label_set_text(GTK_LABEL(window->HeadLabel),DISCONNECTION_LABEL);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),DISCONNECTION_LABEL,"com.ublinux.ubl-settings-system","DomainWindow");
char *domain = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
char *password = yon_config_get_by_key(DOMAIN_ADMANGER);
char *login = yon_char_divide_search(password,":",-1);
char *dns = config(DOMAIN_DNS);
if (!yon_char_is_empty(login))
gtk_entry_set_text(GTK_ENTRY(window->LoginEntry),login);
if (!yon_char_is_empty(password))
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(window->AdressEntry),domain);
if (!yon_char_is_empty(dns))
gtk_entry_set_text(GTK_ENTRY(window->DNSEntry),dns);
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_domain_disconnect),dict);
g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_check_domain_connected),widgets);
gtk_widget_show(window->Window);
} else {
connection_window *window = yon_connection_window_new();
gtk_label_set_text(GTK_LABEL(window->HeadLabel),DOMAIN_CONNECTING_LABEL);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),DOMAIN_CONNECTING_LABEL,"com.ublinux.ubl-settings-system","ConnectWindow");
char *domain = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
char *dns = config(DOMAIN_DNS);
char *client = yon_config_get_by_key(DOMAIN_CLIENT);
char *kerberos = yon_config_get_by_key(DOMAIN_SERVER);
char *password = yon_config_get_by_key(DOMAIN_ADMANGER);
char *login = yon_char_divide_search(password,":",-1);
if (!yon_char_is_empty(login))
gtk_entry_set_text(GTK_ENTRY(window->LoginEntry),login);
if (!yon_char_is_empty(password))
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(window->AdressEntry),domain);
if (!yon_char_is_empty(kerberos))
gtk_entry_set_text(GTK_ENTRY(window->KerberosServerEntry),kerberos);
if (!yon_char_is_empty(dns))
gtk_entry_set_text(GTK_ENTRY(window->DNSEntry),dns);
if (!yon_char_is_empty(client)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->ClientCombo),client);
}
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_domain_connect),dict);
g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_check_domain_connected),widgets);
// yon_update_thread(NULL,NULL,window);
gtk_widget_show(window->Window);
}
}
// standard functions
void on_check_domain_connected(GtkWidget *, main_window *widgets){
int ansv = system(domain_connect_check);
if (!ansv){
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,domain_connected_icon);
gtk_button_set_label(GTK_BUTTON(widgets->DomainButton),DOMAIN_DISCONNECT_LABEL);
gtk_widget_set_tooltip_markup(widgets->DomainButton,DDISCONNECTION_LABEL);
gtk_entry_set_icon_tooltip_markup(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,DOMAIN_CONNECTED_LABEL);
main_config.domain_connected=1;
} else {
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
gtk_button_set_label(GTK_BUTTON(widgets->DomainButton),DOMAIN_CONNECT_LABEL);
gtk_widget_set_tooltip_markup(widgets->DomainButton,CONNECTION_LABEL);
gtk_entry_set_icon_tooltip_markup(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,DOMAIN_DISCONNECTED_LABEL);
main_config.domain_connected=0;
}
YON_CONFIG_TYPE type;
switch(main_config.load_mode){
case 0: type=YON_CONFIG_GLOBAL;
yon_config_load_config(type,yon_config_parameter_prepare_command(DOMAIN_get_command,"global",NULL,NULL), yon_config_parameter_prepare_command(HOSTNAME_get_command,"global",NULL,NULL),NULL);
break;
case 1: type=YON_CONFIG_LOCAL;
yon_config_load_config(type,yon_config_parameter_prepare_command(DOMAIN_get_command,"system",NULL,NULL), yon_config_parameter_prepare_command(HOSTNAME_get_command,"system",NULL,NULL),NULL);
break;
case 3: type=YON_CONFIG_CUSTOM;
if (!yon_char_is_empty(main_config.custom_load_path))
yon_config_load_config(type,yon_config_parameter_prepare_command(DOMAIN_get_command,main_config.custom_load_path,NULL,NULL), yon_config_parameter_prepare_command(HOSTNAME_get_command,main_config.custom_load_path,NULL,NULL),NULL);
break;
}
char *hostname = yon_config_get_by_key(hostname_parameter);
char *domain = yon_config_get_by_key(DOMAIN);
if (!yon_char_is_empty(hostname))
gtk_entry_set_text(GTK_ENTRY(widgets->HostnameEntry),hostname);
if (!yon_char_is_empty(domain))
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),domain);
}
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");
widgets->IDEntry = yon_gtk_builder_get_widget(builder,"IDEntry");
widgets->IDCopyButton = yon_gtk_builder_get_widget(builder,"IDCopyButton");
widgets->ConsoleFontCombo = yon_gtk_builder_get_widget(builder,"ConsoleFontCombo");
widgets->LanguageCombo = yon_gtk_builder_get_widget(builder,"LanguageCombo");
widgets->LocaleButton = yon_gtk_builder_get_widget(builder,"getLocalesButton");
widgets->LocaleEntry = yon_gtk_builder_get_widget(builder,"localeEntry");
widgets->LocaleTree = yon_gtk_builder_get_widget(builder,"LocaleTree");
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");
widgets->DomainEntry = yon_gtk_builder_get_widget(builder,"DomainEntry");
widgets->fontlist = GTK_LIST_STORE(gtk_builder_get_object(builder,"fontlist"));
widgets->languagelist = GTK_LIST_STORE(gtk_builder_get_object(builder,"languagelist"));
widgets->LanguageList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguageList"));
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);
@ -773,9 +242,10 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->IDCombo),"changed",G_CALLBACK(on_id_combo_toggled),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->LocaleButton),"clicked",G_CALLBACK(on_locale_open),widgets);
g_signal_connect(G_OBJECT(widgets->ConsoleFontCombo),"changed",G_CALLBACK(on_console_font_changed),widgets);
g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_language_changed),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(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);
@ -785,30 +255,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;i<size;i++){
int locsize;
locales[i]=yon_char_divide_search(locales[i],"\n",-1);
config_str loc_parsed = yon_char_parse(locales[i],&locsize,";");
gtk_list_store_append(widgets->languagelist,&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);
config_str fonts = yon_resource_open_file(get_fonts_command,&size);
for (int i=1;i<size;i++){
fonts[i]=yon_char_divide_search(fonts[i],"\n",-1);
gtk_list_store_append(widgets->fontlist,&iter);
gtk_list_store_set(widgets->fontlist,&iter,0,fonts[i],-1);
}
yon_char_parsed_free(fonts,size);
if (main_config.lock_load_global == 1){
gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0);
}
@ -829,9 +278,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<size;i++){
yon_char_remove_last_symbol(languages[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(languages[i],&parsed_size,"|");
g_hash_table_insert(main_config.languages,yon_char_new(parsed[0]),yon_char_new(languages[i]));
yon_char_parsed_free(parsed,parsed_size);
}
yon_char_parsed_free(languages,size);
}
int main(int argc, char *argv[]){
local=setlocale(LC_ALL, "");
setlocale(LC_ALL, "");
textdomain (LocaleName);
yon_config_init();
yon_ubl_connect_config((_template_config*)&main_config);
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
config_str unfound = NULL;

@ -15,7 +15,7 @@
#endif
#include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Software/Programs_and_utilities/All/ubl-settings-system"
#define WIKI_LINK "https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-system"
#define _(String) gettext(String)
@ -41,26 +41,13 @@
#define get_id_command "/etc/machine-id"
#define config_get_command(source) yon_char_unite("ubconfig --source ", source, " -ea get [system] HOSTNAME MACHINEID -- get [locale] CONSOLE_FONT LOCALE LANG -- get [network] DOMAIN DOMAIN[admanger] DOMAIN[server] DOMAIN[dns] DOMAIN[client]",NULL)
#define config_get_default_command "ubconfig --source default -- get [locale] CONSOLE_FONT LOCALE LANG"
#define config_get_default_command "ubconfig --source default get [locale] CONSOLE_FONT LOCALE LANG"
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
#define hostname_parameter "HOSTNAME"
#define id_parameter "MACHINEID"
#define keyboard_layout_parameter "XKBLAYOUT"
#define console_font_parameter "CONSOLE_FONT"
#define num_lock_boot_parameter "NUMLOCK"
#define language_parameter "LANG"
#define locale_parameter "LOCALE"
#define LOCALE_get_command "ubconfig --source global get [locale] LOCALE"
#define HOSTNAME_get_command "ubconfig --source global get [system] HOSTNAME"
#define MACHINEID_get_command "ubconfig --source global get [system] MACHINEID"
#define CONSOLE_FONT_get_command "ubconfig --source global get [locale] CONSOLE_FONT"
// #define NUMLOCK_get_command "ubconfig --source global get [locale] NUMLOCK"
#define LANG_get_command "ubconfig --source global get [locale] LANG"
#define DOMAIN_get_command "ubconfig --source global get [network] DOMAIN"
// #define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ \"title\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\" ]] && echo \"${BASH_REMATCH[2]}|${BASH_REMATCH[3]}|${SELECT_LOCALE}|${BASH_REMATCH[1]}\" || echo \"||${SELECT_LOCALE}|\"; done 3< \"/usr/share/i18n/SUPPORTED\""
#define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\""
#define check_domain_access_command(targeet) yon_char_append("adcli info --domain ",target)
#define get_domain_info_command "ubdomain-client list "
@ -82,17 +69,32 @@
#define terminal_command_start(title,command) yon_char_unite("vte-2.91 --name=vte --cursor-shape=ibeam --cursor-blink=off --keep --no-pty --title=\"",title,"\" --no-shell --icon-title --no-context-menu --background-color='rgb(0,0,0)' --foreground-color='rgb(255,255,255)' --whole-window-transparent --no-geometry-hints -- ", command, NULL)
#define locale_parameter "LOCALE"
#define locale_parameter_command "ubconfig --source global get [locale] LOCALE"
#define hostname_parameter "HOSTNAME"
#define HOSTNAME_get_command "ubconfig --source global get [system] HOSTNAME"
#define id_parameter "MACHINEID"
#define MACHINEID_get_command "ubconfig --source global get [system] MACHINEID"
#define CONSOLE_FONT_get_command "ubconfig --source global get [locale] CONSOLE_FONT"
#define language_parameter "LANG"
#define language_parameter_command "ubconfig --source global get [locale] LANG"
#define DOMAIN "DOMAIN"
#define DOMAIN_ADMANGER "DOMAIN[admanger]"
#define DOMAIN_SERVER "DOMAIN[server]"
#define DOMAIN_DNS "DOMAIN[dns]"
#define DOMAIN_CLIENT "DOMAIN[client]"
#define DOMAIN_get_command "ubconfig --source global get [network] DOMAIN"
typedef char* string;
typedef char* string;
__attribute__((unused)) static \
string version_application;
char *local;
typedef struct {
template_config_fields
@ -100,7 +102,9 @@ typedef struct {
int save_config;
int domain_connected;
GMutex ThreadMutex;
GHashTable *languages;
} config;
extern config main_config;
typedef struct {
template_window_fields
@ -109,18 +113,17 @@ typedef struct {
GtkWidget *IDCombo;
GtkWidget *IDEntry;
GtkWidget *IDCopyButton;
GtkWidget *ConsoleFontCombo;
GtkWidget *LanguageCombo;
GtkWidget *LocaleButton;
GtkWidget *LocaleEntry;
GtkWidget *LocaleDefaultSwitch;
GtkWidget *LocaleTree;
GtkWidget *LocaleAddButton;
GtkWidget *LocaleRemoveButton;
GtkCellRenderer *LocaleCell;
GtkWidget *DomainEntry;
GtkWidget *DomainButton;
GtkWidget *FindButton;
GtkListStore *fontlist;
GtkListStore *languagelist;
GtkListStore *LanguageList;
} main_window;
@ -133,20 +136,22 @@ typedef struct {
GtkWidget *InfoText;
GtkWidget *AlwaysOpenCheck;
GtkWidget *CloseButton;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
} documentation_confirmation_window;
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *LanguagesTree;
GtkWidget *MainTree;
GtkWidget *CloseButton;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *DefaultCheck;
GtkWidget *ManualEntry;
GtkCellRenderer *ToggleCell;
} locals_window;
GtkListStore *LanguagesList;
} language_window;
typedef struct {
GtkWidget *Window;
@ -218,15 +223,16 @@ void on_language_changed(GtkComboBox *self, main_window *widgets);
void on_console_font_changed(GtkComboBox *self, main_window *widgets);
void on_hostname_changed(GtkEntry *self, main_window *widgets);
void on_locale_window_closed();
void yon_config_global_local_save();
void yon_config_local_save();
void yon_config_global_save();
void yon_config_custom_save();
void on_domain_address_save(GtkEntry *self);
void yon_interface_save(main_window *widgets);
void yon_config_global_local_save(GtkWidget *, main_window *widgets);
void yon_config_local_save(GtkWidget *, main_window *widgets);
void yon_config_global_save(GtkWidget *, main_window *widgets);
void yon_config_custom_save(GtkWidget *, main_window *widgets);
void on_domain_address_save(GtkEntry *self);
void yon_gtk_windget_set_sensitive_from_entry_emptiness(GtkEntry *self, GtkWidget *target);
void on_locale_toggle(GtkCellRendererToggle *self,GtkTreePath* path,GtkTreeViewColumn* column,locals_window *window);
void on_locale_accept(GtkWidget *self, dictionary *dict);
void on_locale_open(GtkWidget *self, main_window *widgets);
void on_locale_toggle(GtkCellRenderer *, gchar *path,language_window *window);
void on_locale_accept(GtkWidget *self, language_window *window);
void on_language_open(GtkWidget *self, main_window *widgets);
void on_hostname_changed(GtkEntry *self, main_window *widgets);
void on_id_combo_toggled(GtkComboBox *self, main_window *widgets);
void on_id_changed(GtkEntry *self, main_window *widgets);
@ -248,4 +254,9 @@ domain_window *yon_domain_window_new();
void on_domain_opened(GtkWidget *self, main_window *widgets);
void on_check_domain_connected(GtkWidget *self, main_window *widgets);
main_window *yon_main_window_complete(main_window *widgets);
void yon_language_update(main_window *widgets);
void yon_language_update(main_window *widgets);
language_window *yon_language_window_new();
void yon_config_init();
void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets);
void on_language_default_toggled(GtkWidget *, int status, main_window *widgets);
void on_language_remove(GtkWidget *, main_window *widgets);

@ -66,4 +66,14 @@
#define LOADING_LABEL _("Loading...")
#define CHECK_CONNECTION_LABEL _("Check")
#define OU_LABEL _("OU, Organizational Unit:")
#define OU_TOOLTIP_LABEL _("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\"")
#define OU_TOOLTIP_LABEL _("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\"")
#define LANGUAGE__LABEL _("Language")
#define AVALIABLE_LANGUAGES_LABEL _("Available languages in the system:")
#define SYSTEM_LOCALE_LABEL _("System locale")
#define TERRITORY_LABEL _("Territory")
#define VALUE_LABEL _("Value")
#define MANUAL_INPUT_LABEL _("Manual input:")
#define LANGUAGES_LABEL _("Languages")
#define ADD_LANGIAGE_TOOLTIP_LABEL _("Add anguages")
#define REMOVE_LANGUAGE_LABEL _("Remove language")
#define RESTRICTED_SYMBOLS_LABEL _("OU, Organizational Unit restricted symbols: ! \" # $ % & \' ( ) * + , - . / : ; < = > ? @ [ \\ ] ^ _ ` { | } ~.")

@ -1,93 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkListStore" id="LanguagesList">
<columns>
<!-- column-name Chosen -->
<column type="gboolean"/>
<!-- column-name Code -->
<column type="gchararray"/>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Description -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkDialog" id="localesLayoutsWindow">
<property name="width-request">450</property>
<object class="GtkWindow" id="Window">
<property name="width-request">500</property>
<property name="height-request">550</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-system</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="localesCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image8</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="hscrollbar-policy">never</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkButton" id="localesAcceptButton">
<property name="label" translatable="yes">Accept</property>
<object class="GtkTreeView" id="LanguagesTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image9</property>
<style>
<class name="button"/>
</style>
<property name="model">LanguagesList</property>
<property name="enable-grid-lines">both</property>
<property name="activate-on-single-click">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<child>
<object class="GtkCellRendererToggle" id="ToggleCell"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Locale</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Language</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">100</property>
</object>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Territory</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">125</property>
</object>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">2</property>
<property name="margin-end">2</property>
<property name="margin-top">2</property>
<property name="margin-bottom">2</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="DefaultCheck">
<property name="label" translatable="yes">Default</property>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Manual input:</property>
</object>
<packing>
<property name="expand">False</property>
@ -96,45 +150,9 @@
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<object class="GtkEntry" id="ManualEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="localesTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="headers-visible">False</property>
<property name="activate-on-single-click">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererToggle" id="toggleCell"/>
<attributes>
<attribute name="active">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
@ -144,9 +162,9 @@
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
@ -155,9 +173,8 @@
<object class="GtkHeaderBar" id="SettingsBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="webHeaderNameLabel">
<object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">System configuration</property>
@ -166,6 +183,34 @@
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image8</property>
<style>
<class name="button"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image9</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>

@ -25,19 +25,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<!-- interface-license-type gplv2 -->
<!-- interface-name ubl-settings-system -->
<!-- interface-copyright UBGroup -->
<object class="GtkListStore" id="fontlist">
<object class="GtkListStore" id="LanguageList">
<columns>
<!-- column-name LocaleName -->
<!-- column-name SystemLocale -->
<column type="gboolean"/>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Country -->
<column type="gchararray"/>
<!-- column-name FontCode -->
<!-- column-name Value -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Default</col>
<col id="1" translatable="yes"> </col>
</row>
</data>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
@ -47,7 +45,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-edit-symbolic</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.increase-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
@ -59,6 +57,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.zoom-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.trash-symbolic</property>
</object>
<object class="GtkBox" id="BoxMain">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -316,12 +319,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label4">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Console font:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Available languages in the system:</property>
</object>
<packing>
<property name="expand">False</property>
@ -330,106 +331,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</packing>
</child>
<child>
<object class="GtkComboBox" id="ConsoleFontCombo">
<object class="GtkSwitch" id="LocaleDefaultSwitch">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="model">fontlist</property>
<property name="active">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Console</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Locale:</property>
<property name="xalign">0</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="localeEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="getLocalesButton">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Default</property>
</object>
<packing>
<property name="expand">False</property>
@ -450,33 +366,127 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label6">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Language:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<property name="min-content-height">125</property>
<child>
<object class="GtkTreeView" id="LocaleTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">LanguageList</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">System locale</property>
<child>
<object class="GtkCellRendererToggle" id="LocaleCell">
<property name="radio">True</property>
</object>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="min-width">100</property>
<property name="title" translatable="yes">Locale</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Language</property>
<property name="expand">True</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Territory</property>
<property name="expand">True</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LanguageCombo">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="LocaleAddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add languages</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LocaleRemoveButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Remove language</property>
<property name="image">image5</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@ -489,12 +499,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Locale</property>
<property name="label" translatable="yes">Language</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -503,24 +513,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<object class="GtkSizeGroup">
<widgets>
<widget name="label1"/>
<widget name="label2"/>
<widget name="label4"/>
<widget name="label6"/>
<widget name="label3"/>
<widget name="label6"/>
<widget name="label5"/>
<widget name="label2"/>
</widgets>
</object>
<object class="GtkListStore" id="languagelist">
<columns>
<!-- column-name LocaleName -->
<column type="gchararray"/>
<!-- column-name LanguageCode -->
<column type="gchararray"/>
<!-- column-name gboolean1 -->
<column type="gboolean"/>
</columns>
</object>
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can-focus">False</property>

Loading…
Cancel
Save