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