@ -452,6 +452,10 @@ void on_language_changed(GtkComboBox *self, main_window *widgets){
}
}
void on_terminal_command_ended ( VteTerminal * terminal , gint status , domain_info_window * window ) {
yon_ubl_status_box_spawn_infinite ( GTK_CONTAINER ( window - > StatusBox ) , " success " , SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
domain_info_window * yon_information_window_new ( ) {
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_domain_view_path ) ;
@ -466,6 +470,8 @@ domain_info_window *yon_information_window_new(){
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 ;
}
@ -490,6 +496,8 @@ void on_domain_connect(GtkWidget *self, dictionary *dict){
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 ) ;
yon_debug_output ( " %s \n " , domain_connect_command ( adress , login , password , final ) ) ;
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 , domain_connect_command ( adress , login , password , final ) ) ;
gtk_window_set_transient_for ( GTK_WINDOW ( dialog - > Window ) , GTK_WINDOW ( window - > Window ) ) ;
gtk_widget_show ( dialog - > Window ) ;
@ -530,6 +538,8 @@ void on_main_window_domain_status_clicked(GtkWidget *self, GtkEntryIconPosition
}
}
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 ) ) {
@ -542,20 +552,29 @@ gboolean on_main_window_domain_status_update(connection_window *window){
} else {
gtk_entry_set_icon_from_icon_name ( GTK_ENTRY ( window - > AdressEntry ) , GTK_ENTRY_ICON_SECONDARY , domain_disconnected_icon ) ;
}
update_thread_buzy = 0 ;
return GDK_EVENT_PROPAGATE ;
}
gboolean yon_update_thread ( GtkWidget * self , GdkEvent * event , connection_window * window ) {
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , ( void * ) on_main_window_domain_status_update , window ) ;
// gboolean yon_update_thread(GtkWidget *self, GdkEvent *event, connection_window *window){
gboolean yon_update_thread ( connection_window * window ) {
if ( ! update_thread_buzy ) {
update_thread_buzy = 1 ;
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , ( void * ) on_main_window_domain_status_update , window ) ;
}
return 1 ;
}
void remove_checking ( GtkWidget * self , connection_window * window ) {
g_source_remove ( window - > timer_id ) ;
}
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 - > FindEntry = yon_gtk_builder_get_widget ( builder , " FindEntry " ) ;
window - > LoginEntry = yon_gtk_builder_get_widget ( builder , " LoginEntry " ) ;
@ -572,8 +591,10 @@ connection_window *yon_connection_window_new(){
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 - > FindEntry ) , " clicked " , G_CALLBACK ( on_find_domains_clicked ) , window ) ;
g_signal_connect ( G_OBJECT ( window - > AdressEntry ) , " focus-out-event " , G_CALLBACK ( yon_update_thread ) , window ) ;
yon_update_thread ( NULL , NULL , window ) ;
g_signal_connect ( G_OBJECT ( window - > Window ) , " destroy " , G_CALLBACK ( remove_checking ) , window ) ;
// g_signal_connect(G_OBJECT(window->AdressEntry),"focus-out-event",G_CALLBACK(yon_update_thread),window);
// yon_update_thread(NULL,NULL,window);
window - > timer_id = g_timeout_add ( 1000 , ( GSourceFunc ) yon_update_thread , window ) ;
return window ;
}
@ -590,6 +611,8 @@ void on_domain_disconnect(GtkWidget *self, dictionary *dict){
}
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 ) ) ;
gtk_window_set_transient_for ( GTK_WINDOW ( dialog - > Window ) , GTK_WINDOW ( window - > Window ) ) ;
gtk_widget_show ( dialog - > Window ) ;
@ -602,6 +625,7 @@ domain_window *yon_domain_window_new(){
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 " ) ;
@ -616,7 +640,8 @@ domain_window *yon_domain_window_new(){
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 " ) ;
gtk_label_set_text ( GTK_LABEL ( window - > HeadLabel ) , DOMAIN_CONNECTING_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 ) ;
@ -638,7 +663,8 @@ void on_domain_opened(GtkWidget *self, main_window *widgets){
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 " ) ;
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 ) ;
@ -662,7 +688,7 @@ void on_domain_opened(GtkWidget *self, main_window *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 ) ;
// yon_update_thread(NULL,NULL,window);
gtk_widget_show ( window - > Window ) ;
}