diff --git a/source/ubl-settings-system.c b/source/ubl-settings-system.c index ac02a32..a0dcb41 100644 --- a/source/ubl-settings-system.c +++ b/source/ubl-settings-system.c @@ -457,13 +457,14 @@ domain_info_window *yon_information_window_new(){ 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); + // 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"); return window; @@ -478,7 +479,6 @@ void on_domain_connect(GtkWidget *self, dictionary *dict){ yon_ubl_status_highlight_incorrect(window->AdressEntry); return; } - g_source_remove(window->timer_id); 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)); @@ -488,53 +488,33 @@ void on_domain_connect(GtkWidget *self, dictionary *dict){ 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); - - int size; - domain_info_window *dialog = yon_information_window_new(); - gtk_window_set_title(GTK_WINDOW(dialog->Window),DOMAIN_CONNECTING_LABEL); - gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),DOMAIN_CONNECTING_LABEL); yon_debug_output(domain_connect_command(adress,login,password,final)); - int size_; - config_str test = yon_config_load(domain_disconnect_command(adress,login,password),&size_); - vte_terminal_feed(VTE_TERMINAL(dialog->ExecuteTerminal),yon_char_parsed_to_string(test,size_,""),-1); + yon_debug_output(terminal_command_start(TITLE_LABEL,domain_connect_command(adress,login,password,final))); + yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domain_connect_command(adress,login,password,final)),""); gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress); - gtk_widget_show(dialog->Window); } void on_status_clicked(GtkWidget *self, connection_window *window){ - domain_info_window *dialog = yon_information_window_new(); char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry)); if (!yon_char_is_empty(target)){ - yon_debug_output(domain_info(target)); - int size_; - config_str test = yon_config_load(domain_info(target),&size_); - vte_terminal_feed(VTE_TERMINAL(dialog->ExecuteTerminal),yon_char_parsed_to_string(test,size_,""),-1); + yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domain_info(target)),""); } - gtk_widget_show(dialog->Window); } void on_find_domains_clicked(GtkWidget *self, connection_window *window){ - domain_info_window *dialog = yon_information_window_new(); yon_debug_output(domains_seek_command); - int size_; - config_str test = yon_config_load(domains_seek_command,&size_); - vte_terminal_feed(VTE_TERMINAL(dialog->ExecuteTerminal),yon_char_parsed_to_string(test,size_,""),-1); - gtk_widget_show(dialog->Window); + yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domains_seek_command),""); } void on_main_window_domain_status_clicked(GtkWidget *self, GtkEntryIconPosition icon_pos,GdkEvent* event,main_window *widgets){ - if (icon_pos==GTK_ENTRY_ICON_SECONDARY){ + 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)){ - domain_info_window *window = yon_information_window_new(); - gtk_widget_show(window->Window); yon_debug_output(get_domain_info_command); - int size_; - config_str test = yon_config_load(get_domain_info_command,&size_); - vte_terminal_feed(VTE_TERMINAL(window->ExecuteTerminal),yon_char_parsed_to_string(test,size_,""),-1); + yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,get_domain_info_command),""); } } } @@ -597,15 +577,9 @@ void on_domain_disconnect(GtkWidget *self, dictionary *dict){ yon_ubl_status_highlight_incorrect(window->AdressEntry); return; } - int size; - domain_info_window *dialog = yon_information_window_new(); - gtk_widget_show(dialog->Window); yon_debug_output(domain_disconnect_command(adress,login,password)); - int size_; - config_str test = yon_config_load(domain_disconnect_command(adress,login,password),&size_); - vte_terminal_feed(VTE_TERMINAL(dialog->ExecuteTerminal),yon_char_parsed_to_string(test,size_,""),-1); + yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domain_disconnect_command(adress,login,password)),""); gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress); - on_subwindow_close(window->Window); } domain_window *yon_domain_window_new(){ @@ -645,6 +619,7 @@ void on_domain_opened(GtkWidget *self, main_window *widgets){ 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 { @@ -672,6 +647,7 @@ void on_domain_opened(GtkWidget *self, main_window *widgets){ 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); gtk_widget_show(window->Window); } @@ -692,14 +668,17 @@ void config_init(){ main_config.domain_connected=0; } -void on_check_domain_connected(main_window *widgets){ - if (!system(domain_connect_check)){ +void on_check_domain_connected(GtkWidget *self, 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_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_entry_set_icon_tooltip_markup(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,DOMAIN_DISCONNECTED_LABEL); main_config.domain_connected=0; } } @@ -708,7 +687,7 @@ 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"),1,1,0); + gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),0,0,0); widgets->HostnameEntry = yon_gtk_builder_get_widget(builder,"HostnameEntry"); widgets->IDCombo = yon_gtk_builder_get_widget(builder,"IDCombo"); @@ -764,8 +743,10 @@ main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->DomainEntry),"changed",G_CALLBACK(yon_gtk_windget_set_sensitive_from_entry_emptiness),widgets->DomainButton); g_signal_connect(G_OBJECT(widgets->DomainEntry),"focus-out-event",G_CALLBACK(on_domain_address_save),NULL); + + gtk_widget_set_size_request(widgets->Window,800,440); - g_timeout_add(1000,(GSourceFunc)on_check_domain_connected,widgets); + // g_timeout_add(1000,(GSourceFunc)on_check_domain_connected,widgets); main_config.localeslist = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); int size; diff --git a/source/ubl-settings-system.h b/source/ubl-settings-system.h index 3b2e617..9d720ff 100644 --- a/source/ubl-settings-system.h +++ b/source/ubl-settings-system.h @@ -80,12 +80,15 @@ #define domain_check_alive(target) yon_char_unite("timeout --kill-after=0.1 2 dig +time=1 +tries=1 +noall -t SRV _ldap._tcp.",target," @",target," &>/dev/null",NULL) +#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 DOMAIN "DOMAIN" #define DOMAIN_ADMANGER "DOMAIN[admanger]" #define DOMAIN_SERVER "DOMAIN[server]" #define DOMAIN_DNS "DOMAIN[dns]" #define DOMAIN_CLIENT "DOMAIN[client]" + typedef char* string; string version_application; @@ -178,6 +181,7 @@ typedef struct { typedef struct { GtkWidget *Window; + GtkWidget *StatusBox; GtkWidget *HeadLabel; @@ -186,4 +190,6 @@ typedef struct { } domain_info_window; main_window *setup_window(); -void on_id_changed(GtkEntry *self, main_window *widgets); \ No newline at end of file +void on_id_changed(GtkEntry *self, main_window *widgets); + +void on_check_domain_connected(GtkWidget *self, main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 70d26e3..76c6919 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -52,4 +52,9 @@ #define DOMAIN_CONNECTING_LABEL _("Connecting to domain") #define DOMAIN_CONNECT_LABEL _("Connect to domain") -#define DOMAIN_DISCONNECT_LABEL _("Disconnect from domain") \ No newline at end of file +#define DOMAIN_DISCONNECT_LABEL _("Disconnect from domain") + +#define DOMAIN_CONNECTED_LABEL _("Connected to domain") +#define DOMAIN_DISCONNECTED_LABEL _("Disconnected from domain") + +#define LOADING_LABEL _("Loading...") \ No newline at end of file diff --git a/ubl-settings-system-domain-view.glade b/ubl-settings-system-domain-view.glade index 4effb5f..71ebbdf 100644 --- a/ubl-settings-system-domain-view.glade +++ b/ubl-settings-system-domain-view.glade @@ -13,7 +13,6 @@ 800 600 False - True com.ublinux.ubl-settings-repomanager @@ -43,7 +42,7 @@ True - False + True natural adjustment1 natural diff --git a/ubl-settings-system-domain.glade b/ubl-settings-system-domain.glade index 9afca55..15a0436 100644 --- a/ubl-settings-system-domain.glade +++ b/ubl-settings-system-domain.glade @@ -52,7 +52,7 @@ True False - Domain adress: + Domain address: 0 diff --git a/ubl-settings-system.pot b/ubl-settings-system.pot index 358c17a..968eccf 100644 --- a/ubl-settings-system.pot +++ b/ubl-settings-system.pot @@ -196,3 +196,15 @@ msgstr "" #: source/ubl-strings.h:55 msgid "Disconnect from domain" msgstr "" + +#: source/ubl-strings.h:57 +msgid "Connected to domain" +msgstr "" + +#: source/ubl-strings.h:58 +msgid "Disconnected from domain" +msgstr "" + +#: source/ubl-strings.h:60 +msgid "Loading..." +msgstr "" diff --git a/ubl-settings-system_ru.po b/ubl-settings-system_ru.po index 87fba24..e6a59a0 100644 --- a/ubl-settings-system_ru.po +++ b/ubl-settings-system_ru.po @@ -148,7 +148,7 @@ msgstr "Сервер домена Kerberos/AD" #: source/ubl-strings.h:42 msgid "DNS server:" -msgstr "DNS сервер" +msgstr "DNS сервер:" #: source/ubl-strings.h:43 msgid "Domain connection client" @@ -198,6 +198,18 @@ msgstr "Войти в домен" msgid "Disconnect from domain" msgstr "Выйти из домена" +#: source/ubl-strings.h:57 +msgid "Connected to domain" +msgstr "Подключен к домену" + +#: source/ubl-strings.h:60 +msgid "Loading..." +msgstr "Загрузка..." + +#: source/ubl-strings.h:58 +msgid "Disconnected from domain" +msgstr "Не подключен к домену" + msgid "Version:" msgstr "Версия:"