diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index ec678ee..7bd6310 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -78,6 +78,8 @@ endif() set(SOURCE_FILES ubl-settings-system.c + ubl-settings-system-language.c + ubl-settings-system-domain.c ubl-settings-system.h ubl-strings.h ) diff --git a/source/ubl-settings-system-domain.c b/source/ubl-settings-system-domain.c new file mode 100644 index 0000000..e7d6006 --- /dev/null +++ b/source/ubl-settings-system-domain.c @@ -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); + +} \ No newline at end of file diff --git a/source/ubl-settings-system-language.c b/source/ubl-settings-system-language.c new file mode 100644 index 0000000..7e936dc --- /dev/null +++ b/source/ubl-settings-system-language.c @@ -0,0 +1,69 @@ +#include "ubl-settings-system.h" + +void on_locale_toggle(GtkCellRendererToggle *,GtkTreePath* path,GtkTreeViewColumn* ,language_window *window){ + GtkTreeIter iter; + GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(window->LanguagesTree)); + gtk_tree_model_get_iter(model,&iter,path); + gboolean is_active; + gtk_tree_model_get(model,&iter,0,&is_active,-1); + gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!is_active,-1); +} + +void on_locale_accept(GtkWidget *self, language_window *window){ + main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets"); + + yon_interface_update(widgets); + on_subwindow_close(self); +} + +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->LanguagesTree = yon_gtk_builder_get_widget(builder,"LanguagesTree"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->DefaultSwitch = yon_gtk_builder_get_widget(builder,"DefaultSwitch"); + window->ToggleCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ToggleCell")); + window->LanguagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LanguagesList")); + + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->DefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->LanguagesTree); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_locale_accept),window); + g_signal_connect(G_OBJECT(window->LanguagesTree),"row-activated",G_CALLBACK(on_locale_toggle),window); + + char *config_value = config(language_parameter); + + int parsed_size; + config_str config_parsed = yon_char_parse(config_value,&parsed_size,";"); + + int size; + GtkTreeIter iter; + config_str languages = yon_config_load(languages_command,&size); + for (int i=0;iLanguagesList,&iter); + gtk_list_store_set(window->LanguagesList,&iter,1,languages[0],2,languages[1],3,languages[2],-1); + char *found = yon_char_parsed_check_exist_begins_with(config_parsed,parsed_size,languages[i]); + if (!yon_char_is_empty(found)){ + gtk_list_store_set(window->LanguagesList,&iter,0,1,-1); + } + } + yon_char_parsed_free(config_parsed,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); + + if (!config(locale_parameter)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultSwitch),1); + } + + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,main_icon,"LocalesWindow"); + + gtk_dialog_run(GTK_DIALOG(window->Window)); + +} \ No newline at end of file diff --git a/source/ubl-settings-system.c b/source/ubl-settings-system.c index a5e036b..a40931f 100644 --- a/source/ubl-settings-system.c +++ b/source/ubl-settings-system.c @@ -97,45 +97,28 @@ void yon_config_custom_load(GtkWidget *, main_window *widgets){ 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); + // g_signal_handlers_block_by_func(G_OBJECT(widgets->LanguageCombo),G_CALLBACK(on_language_changed),widgets); 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->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); + // 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); + 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")) @@ -155,46 +138,36 @@ 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 *lang = yon_config_get_by_key(language_parameter); - char *avlocale = yon_config_get_by_key(locale_parameter); - int locsize; - if (avlocale){}; - config_str locale_parsed = yon_char_parse(avlocale,&locsize,","); - gboolean is_active; - char *locale_string=""; - char *loc_name; - if (!yon_char_is_empty(avlocale)){ - int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->languagelist),&iter); - for(;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->languagelist),&iter)){ - gtk_tree_model_get(GTK_TREE_MODEL(widgets->languagelist),&iter,0,&loc_name,1,&code,2,&is_active,-1); - if (yon_char_parsed_check_exist(locale_parsed,locsize,code)>-1){ - gtk_list_store_set(widgets->languagelist,&iter,2,1,-1); - char *temp = yon_char_unite(yon_char_is_empty(locale_string)?"":locale_string,yon_char_is_empty(locale_string)?"":"; ",loc_name,NULL); - if (!yon_char_is_empty(locale_string)) free(locale_string); - locale_string = temp; - } - } - if (strcmp(locale_string,"")) gtk_entry_set_text(GTK_ENTRY(widgets->LocaleEntry),locale_string); - } - yon_language_update(widgets); - if (!yon_char_is_empty(lang)) { - gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->LanguageCombo),lang); - } else { - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguageCombo),0); - } + // char *lang = yon_config_get_by_key(language_parameter); + // char *avlocale = yon_config_get_by_key(locale_parameter); + // int locsize; + // if (avlocale){}; + // config_str locale_parsed = yon_char_parse(avlocale,&locsize,","); + // gboolean is_active; + // char *locale_string=""; + // char *loc_name; + // if (!yon_char_is_empty(avlocale)){ + // int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LanguageList),&iter); + // for(;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->LanguageList),&iter)){ + // gtk_tree_model_get(GTK_TREE_MODEL(widgets->languagelist),&iter,0,&loc_name,1,&code,2,&is_active,-1); + // if (yon_char_parsed_check_exist(locale_parsed,locsize,code)>-1){ + // gtk_list_store_set(widgets->languagelist,&iter,2,1,-1); + // char *temp = yon_char_unite(yon_char_is_empty(locale_string)?"":locale_string,yon_char_is_empty(locale_string)?"":"; ",loc_name,NULL); + // if (!yon_char_is_empty(locale_string)) free(locale_string); + // locale_string = temp; + // } + // } + // if (strcmp(locale_string,"")) gtk_entry_set_text(GTK_ENTRY(widgets->LocaleEntry),locale_string); + // } + // yon_language_update(widgets); + // if (!yon_char_is_empty(lang)) { + // gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->LanguageCombo),lang); + // } else { + // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LanguageCombo),0); + // } g_signal_handlers_unblock_by_func(G_OBJECT(widgets->IDEntry),G_CALLBACK(on_id_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->HostnameEntry),G_CALLBACK(on_hostname_changed),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ConsoleFontCombo),G_CALLBACK(on_console_font_changed),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->LanguageCombo),G_CALLBACK(on_language_changed),widgets); + // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->LanguageCombo),G_CALLBACK(on_language_changed),widgets); } void yon_config_global_local_save(){ @@ -238,14 +211,6 @@ void yon_config_custom_save(){ 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){ if (yon_char_is_empty(gtk_entry_get_text(self))){ gtk_widget_set_sensitive(target,0); @@ -254,76 +219,6 @@ void yon_gtk_windget_set_sensitive_from_entry_emptiness(GtkEntry *self, GtkWidge } } -void on_locale_toggle(GtkCellRendererToggle *,GtkTreePath* path,GtkTreeViewColumn* ,locals_window *window){ - 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); -} - -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)); - -} void on_hostname_changed(GtkEntry *self, main_window *){ char *text = (char*)gtk_entry_get_text(self); @@ -384,32 +279,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,299 +297,6 @@ 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); - } - } -} - -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); - -} - main_window *yon_main_window_complete(main_window *widgets){ /* Widgets getting | Получение виджетов */ widgets = yon_remalloc(widgets,sizeof(main_window)); @@ -731,18 +307,17 @@ main_window *yon_main_window_complete(main_window *widgets){ 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->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); @@ -773,9 +348,11 @@ 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(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LocaleTree); + g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LocaleAddButton); + g_signal_connect(G_OBJECT(widgets->LocaleDefaultSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),widgets->LocaleRemoveButton); g_signal_connect(G_OBJECT(widgets->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); @@ -798,17 +375,10 @@ main_window *yon_main_window_complete(main_window *widgets){ 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); + 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;ifontlist,&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); } @@ -830,7 +400,7 @@ main_window *yon_main_window_complete(main_window *widgets){ } int main(int argc, char *argv[]){ - local=setlocale(LC_ALL, ""); + setlocale(LC_ALL, ""); textdomain (LocaleName); yon_ubl_connect_config((_template_config*)&main_config); yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); diff --git a/source/ubl-settings-system.h b/source/ubl-settings-system.h index 9f09629..8f88e0a 100644 --- a/source/ubl-settings-system.h +++ b/source/ubl-settings-system.h @@ -46,21 +46,7 @@ #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 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 < \"/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 +68,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_get_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 LANG_get_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 @@ -101,6 +102,7 @@ typedef struct { int domain_connected; GMutex ThreadMutex; } config; +extern config main_config; typedef struct { template_window_fields @@ -109,18 +111,16 @@ typedef struct { GtkWidget *IDCombo; GtkWidget *IDEntry; GtkWidget *IDCopyButton; - GtkWidget *ConsoleFontCombo; - GtkWidget *LanguageCombo; - - GtkWidget *LocaleButton; - GtkWidget *LocaleEntry; + GtkWidget *LocaleDefaultSwitch; + GtkWidget *LocaleTree; + GtkWidget *LocaleAddButton; + GtkWidget *LocaleRemoveButton; GtkWidget *DomainEntry; GtkWidget *DomainButton; GtkWidget *FindButton; - GtkListStore *fontlist; - GtkListStore *languagelist; + GtkListStore *LanguageList; } main_window; @@ -133,20 +133,22 @@ typedef struct { GtkWidget *InfoText; GtkWidget *AlwaysOpenCheck; - GtkWidget *CloseButton; + GtkWidget *CancelButton; GtkWidget *AcceptButton; } documentation_confirmation_window; typedef struct { GtkWidget *Window; - GtkWidget *MainTree; + GtkWidget *LanguagesTree; - GtkWidget *CloseButton; + GtkWidget *CancelButton; GtkWidget *AcceptButton; - GtkWidget *DefaultCheck; + GtkWidget *DefaultSwitch; GtkCellRenderer *ToggleCell; -} locals_window; + + GtkListStore *LanguagesList; +} language_window; typedef struct { GtkWidget *Window; @@ -224,9 +226,9 @@ void yon_config_global_save(); void yon_config_custom_save(); 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(GtkCellRendererToggle *self,GtkTreePath* path,GtkTreeViewColumn* column,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 +250,5 @@ 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); \ No newline at end of file +void yon_language_update(main_window *widgets); +language_window *yon_language_window_new(); \ No newline at end of file diff --git a/ubl-settings-system-layouts.glade b/ubl-settings-system-layouts.glade index 6ab0e03..813f976 100644 --- a/ubl-settings-system-layouts.glade +++ b/ubl-settings-system-layouts.glade @@ -1,152 +1,140 @@ - + + + + + + + + + + + True False - process-stop-symbolic + com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic True False - emblem-ok-symbolic + com.ublinux.libublsettingsui-gtk3.accept-symbolic - + 450 550 False True com.ublinux.ubl-settings-system - dialog - + + True False vertical - 2 - - + 5 + + + True False - end + vertical - - Cancel + + + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + + True True - True - image8 - False True - end 0 - - Accept + True - True - True - image9 - + False + Default False True - end 1 False - False - 0 + True + 1 - + True - False - 2 - 2 - 2 - 2 - vertical - 10 - - - Default - True - True - False - True - - - False - True - 0 - - + True + 5 + 5 + 5 + in - + True True - in + LanguagesList + False + True + + + - - True - True - False - True - - - none - - + + column - - column - - - - 2 - - - + + + 2 + + + + + + column - - column - - - - 0 - - - + + + 0 + - - True - True - 1 - True True - 1 + 2 @@ -157,7 +145,7 @@ False True - + True False System configuration @@ -166,6 +154,34 @@ + + + Cancel + True + True + True + image8 + + + + + + Accept + True + True + True + image9 + + + + end + 1 + + diff --git a/ubl-settings-system.glade b/ubl-settings-system.glade index dc8771a..9e717c1 100644 --- a/ubl-settings-system.glade +++ b/ubl-settings-system.glade @@ -1,5 +1,5 @@ - - + - + + + - - - Default - - - True @@ -47,7 +43,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True False - document-edit-symbolic + com.ublinux.libublsettingsui-gtk3.increase-symbolic True @@ -59,6 +55,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False com.ublinux.libublsettingsui-gtk3.zoom-symbolic + + True + False + com.ublinux.libublsettingsui-gtk3.trash-symbolic + True False @@ -316,12 +317,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - + True False - Console font: - True - 0 + Available languages ​​in the system: False @@ -330,106 +329,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + True - False - fontlist - 0 - - - - 0 - - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - - - True - False - Console - - - - - False - True - 1 - - - - - True - False - 0.019999999552965164 - in - - - True - False - 5 - 5 - 5 - - - True - False - vertical - 5 - - - True - False - 5 - - - True - False - Locale: - 0 + True False True - 0 - - - - - True - False - - - True - True 1 - + True - True - True - image2 - + False + Default False @@ -450,33 +364,74 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False 5 - + True - False - Language: - True - 0 + True + in + + + True + True + + + + + - False + True True 0 - + True False + vertical + 5 + + + True + True + True + image2 + + + + False + True + 0 + + + + + True + True + True + image5 + + + + False + True + 1 + + - True + False True 1 - False + True True 1 @@ -489,12 +444,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True False - Locale + Language - False + True True 2 @@ -503,24 +458,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - - - - + - - - - - - - - - - True False