|
|
|
|
@ -443,33 +443,84 @@ 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->DomainOutputLabel = yon_gtk_builder_get_widget(builder,"DomainOutputLabel");
|
|
|
|
|
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),GTK_WINDOW(widgets->Window),TITLE_LABEL,"com.ublinux.ubl-settings-system","InfoWindow");
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_domain_connect(GtkWidget *self, connection_window *window){
|
|
|
|
|
void on_domain_connect(GtkWidget *self, 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;
|
|
|
|
|
}
|
|
|
|
|
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));
|
|
|
|
|
char *dns = (char*)gtk_entry_get_text(GTK_ENTRY(window->DNSEntry));
|
|
|
|
|
char *client = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ClientCombo));
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_config_load(domain_connect_command(adress,login,password,final),&size);
|
|
|
|
|
domain_info_window *dialog = yon_information_window_new();
|
|
|
|
|
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_connect_command(adress,login,password,final),NULL,NULL);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
|
|
|
|
|
gtk_widget_show(dialog->Window);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(dialog->DomainOutputLabel),yon_char_parsed_to_string(parsed,size,"\n"));
|
|
|
|
|
on_subwindow_close(window->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_status_clicked(GtkWidget *self, connection_window *window){
|
|
|
|
|
domain_info_window *dialog = yon_information_window_new();
|
|
|
|
|
// yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_connect_command(adress,login,password,final),NULL,NULL);
|
|
|
|
|
gtk_widget_show(dialog->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_find_domains_clicked(GtkWidget *self, connection_window *window){
|
|
|
|
|
domain_info_window *dialog = yon_information_window_new();
|
|
|
|
|
yon_terminal_integrated_start(dialog->ExecuteTerminal,domains_seek_command,NULL,NULL);
|
|
|
|
|
gtk_widget_show(dialog->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_main_window_domain_status_clicked(GtkWidget *self, GtkEntryIconPosition icon_pos,GdkEvent* event,main_window *widgets){
|
|
|
|
|
if (icon_pos==GTK_ENTRY_ICON_SECONDARY){
|
|
|
|
|
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_terminal_integrated_start(window->ExecuteTerminal,domain_info(target),NULL,NULL);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
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));
|
|
|
|
|
@ -489,11 +540,16 @@ connection_window *yon_connection_window_new(){
|
|
|
|
|
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
|
|
|
window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_domain_connect),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->StatusEntry),"clicked",G_CALLBACK(on_status_clicked),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->FindEntry),"clicked",G_CALLBACK(on_find_domains_clicked),window);
|
|
|
|
|
window->timer_id = g_timeout_add(1000,(GSourceFunc)on_main_window_domain_status_update,window);
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_domain_disconnect(GtkWidget *self, domain_window *window){
|
|
|
|
|
void on_domain_disconnect(GtkWidget *self, 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));
|
|
|
|
|
@ -503,10 +559,11 @@ void on_domain_disconnect(GtkWidget *self, domain_window *window){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_config_load(domain_disconnect_command(adress,login,password),&size);
|
|
|
|
|
// config_str parsed = yon_config_load(domain_disconnect_command(adress,login,password),&size);
|
|
|
|
|
domain_info_window *dialog = yon_information_window_new();
|
|
|
|
|
gtk_widget_show(dialog->Window);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(dialog->DomainOutputLabel),yon_char_parsed_to_string(parsed,size,"\n"));
|
|
|
|
|
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_disconnect_command(adress,login,password),NULL,NULL);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
|
|
|
|
|
on_subwindow_close(window->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -523,7 +580,6 @@ domain_window *yon_domain_window_new(){
|
|
|
|
|
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);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_domain_disconnect),window);
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
@ -532,11 +588,49 @@ void on_domain_opened(GtkWidget *self, main_window *widgets){
|
|
|
|
|
if (main_config.domain_connected){
|
|
|
|
|
domain_window *window = yon_domain_window_new();
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_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);
|
|
|
|
|
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
} else {
|
|
|
|
|
connection_window *window = yon_connection_window_new();
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_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);
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -557,6 +651,16 @@ void config_init(){
|
|
|
|
|
main_config.domain_connected=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_check_domain_connected(main_window *widgets){
|
|
|
|
|
if (!system(domain_connect_check)){
|
|
|
|
|
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,domain_connected_icon);
|
|
|
|
|
main_config.domain_connected=1;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_entry_set_icon_from_icon_name(GTK_ENTRY(widgets->DomainEntry),GTK_ENTRY_ICON_SECONDARY,domain_disconnected_icon);
|
|
|
|
|
main_config.domain_connected=0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
/* Widgets getting | Получение виджетов */
|
|
|
|
|
widgets = yon_remalloc(widgets,sizeof(main_window));
|
|
|
|
|
@ -614,6 +718,8 @@ main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_language_changed),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);
|
|
|
|
|
g_timeout_add(1000,(GSourceFunc)on_check_domain_connected,widgets);
|
|
|
|
|
|
|
|
|
|
gtk_widget_set_size_request(widgets->Window,800,-1);
|
|
|
|
|
|
|
|
|
|
@ -646,6 +752,9 @@ main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->SaveMenuItem,0);
|
|
|
|
|
}
|
|
|
|
|
yon_config_local_load(NULL,widgets);
|
|
|
|
|
char *domain = yon_config_get_by_key(DOMAIN);
|
|
|
|
|
if (!yon_char_is_empty(domain))
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),domain);
|
|
|
|
|
return widgets;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|