@ -2,284 +2,402 @@
config main_config ;
// signal emmit handlers - no header initialization
// functions
/**on_close_subwindow(GtkWidget *self)
* [ EN ]
* Closes window in which [ self ] is contained .
* [ RU ]
* З а к р ы в а е т о к н о , в к о т о р о м р а с п о л о ж е н в и д ж е т [ self ] .
*/
void on_close_subwindow ( GtkWidget * self ) {
gtk_widget_destroy ( gtk_widget_get_toplevel ( self ) ) ;
}
void yon_load_proceed ( YON_CONFIG_TYPE type ) {
if ( yon_config_load_register ( type , " config " , " SERVICESSTART SERVICESNOSTART SERVICESMASK " , NULL ) ) {
}
/**yon_open_browser(GtkWidget *self, char *link)
* [ EN ]
* Opens browser with [ link ] link .
* [ RU ]
* О т к р ы в а е т б р а у з е р с [ link ] с с ы л к о й .
*/
void yon_open_browser ( GtkWidget * self , char * link ) {
yon_ubl_browser_window_open ( link , TITLE_LABEL ) ;
}
/**on_open_documentation_confirmation(GtkWidget *self, char *link)
* [ EN ]
* Opens confirmation window for [ link ] link .
* [ RU ]
* О т к р ы в а е т о к н о п о д т в е р ж д е н и е п е р е х о д а п о с с ы л к е [ link ] .
*/
void on_open_documentation_confirmation ( GtkWidget * self , char * link ) {
if ( main_config . always_open_documentation = = 0 ) {
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_path ) ;
documentation_confirmation_window * widgets = malloc ( sizeof ( documentation_confirmation_window ) ) ;
widgets - > Window = yon_gtk_builder_get_widget ( builder , " helpConfirmationWindow " ) ;
widgets - > AcceptButton = yon_gtk_builder_get_widget ( builder , " ReadHelpButton " ) ;
widgets - > CloseButton = yon_gtk_builder_get_widget ( builder , " CancelHelpButton " ) ;
widgets - > HatText = yon_gtk_builder_get_widget ( builder , " webHeaderNameLabel " ) ;
widgets - > HeaderText = yon_gtk_builder_get_widget ( builder , " helpHeader " ) ;
widgets - > InfoText = yon_gtk_builder_get_widget ( builder , " helpText " ) ;
widgets - > AlwaysOpenCheck = yon_gtk_builder_get_widget ( builder , " AlwaysOpenDocumentationCheckbox " ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > HatText ) , TITLE_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > HeaderText ) , HELP_TITLE_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > InfoText ) , HELP_INFO_LABEL ) ;
gtk_button_set_label ( GTK_BUTTON ( widgets - > AcceptButton ) , OPEN_HELP_LABEL ) ;
gtk_button_set_label ( GTK_BUTTON ( widgets - > AlwaysOpenCheck ) , HELP_ALWAYS_OPEN_LABEL ) ;
gtk_button_set_label ( GTK_BUTTON ( widgets - > CloseButton ) , CANCEL_LABEL ) ;
gtk_widget_show_all ( widgets - > Window ) ;
g_signal_connect ( G_OBJECT ( widgets - > CloseButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( widgets - > AcceptButton ) , " clicked " , G_CALLBACK ( yon_open_browser ) , yon_char_new ( link ) ) ;
g_signal_connect ( G_OBJECT ( widgets - > AcceptButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
void on_config_local_load ( main_window * widgets ) {
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_interface_update ( widgets ) ;
}
void on_config_global_load ( main_window * widgets ) {
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
yon_interface_update ( widgets ) ;
} else {
yon_open_browser ( self , link ) ;
}
}
/**on_link(GtkWidget *self, char* uri, gpointer user_data)
* [ EN ]
* Signal for hadnling AboutDialog links .
* Connect to " activate-link " signal .
* [ self ] is AboutDialog window ;
* [ uri ] is activated link ;
* [ user_data ] is pointer for user data , hasn ' t used in standard handler ;
* [ RU ]
* Ф у н к ц и я д л я о б р а б о т к и с и г н а л а н а ж а т и я н а с с ы л к у о к н а AboutDialog .
* П р и с о е д и н я т ь к с и г н а л у " activate-link " .
* [ self ] - о к н о AboutDialog ;
* [ uri ] - с с ы л к а , п о к о т о р о й с о в е р ш а е т с я п е р е х о д ;
* [ user_data ] - у к а з а т е л ь н а л ю б ы е д р у г и е д а н н ы е , н е и с п о л ь з у е т с я в с т а н д а р т н о м о б р а б о т ч и к е ;
*/
void on_link ( GtkWidget * self , char * uri , gpointer user_data ) {
gtk_widget_destroy ( self ) ;
on_open_documentation_confirmation ( self , uri ) ;
void on_config_global_local_save ( ) {
yon_save_proceed ( NULL , YON_CONFIG_BOTH , " config " , " SERVICESSTART SERVICESNOSTART SERVICESMASK " , NULL ) ;
}
/**on_about()
* [ EN ]
* Function for setting up and showing AboutDialog .
* Connect it to " activate " signal of Documentation MenuItem .
* [ RU ]
* Ф у н к и ц я д л я н а с т р о й к и и п о к а з а о к н а AboutDialog .
* П р и с о е д и н я т ь к с и г н а л у " activate " к н о п к и с п р а в к и т и п а MenuItem .
*/
void on_about ( ) {
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_path ) ;
GtkWidget * window = yon_gtk_builder_get_widget ( builder , " AboutWindow " ) ;
GtkWidget * title = yon_gtk_builder_get_widget ( builder , " headerAboutTopic " ) ;
GtkWidget * hideButtonBox = yon_gtk_builder_get_widget ( builder , " buttonBoxHide " ) ;
gtk_about_dialog_set_version ( GTK_ABOUT_DIALOG ( window ) , version_application ) ;
gtk_about_dialog_set_website_label ( GTK_ABOUT_DIALOG ( window ) , PROJECT_HOME_LABEL ) ;
gtk_about_dialog_set_comments ( GTK_ABOUT_DIALOG ( window ) , TITLE_LABEL ) ;
gtk_label_set_text ( GTK_LABEL ( title ) , TITLE_LABEL ) ;
g_signal_connect ( G_OBJECT ( window ) , " activate-link " , G_CALLBACK ( on_link ) , NULL ) ;
gtk_widget_set_visible ( hideButtonBox , 0 ) ;
gtk_widget_destroy ( hideButtonBox ) ;
gtk_widget_show ( window ) ;
void on_config_local_save ( ) {
yon_save_proceed ( " local " , YON_CONFIG_LOCAL , " config " , " SERVICESSTART SERVICESNOSTART SERVICESMASK " , NULL ) ;
}
//functions
void on_config_global_save ( ) {
yon_save_proceed ( " global " , YON_CONFIG_GLOBAL , " config " , " SERVICESSTART SERVICESNOSTART SERVICESMASK " , NULL ) ;
void on_activate ( GtkTreeView * self , main_window * widgets ) {
}
// standard functions
void on_config_autostart_clicked ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
char * name = NULL ;
char * description = NULL ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . list ) , & iter , 5 , & name , 6 , & description , - 1 ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > ChosenNameLabel ) , name ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > ChosenDescriptionLabel ) , description ) ;
menu_obj * menu = widgets - > menu ;
if ( main_config . rmb_clicked ) {
gboolean CAutostart , CAutostop , CBlock , SAutostart , SLaunched ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . list ) , & iter , 0 , & CAutostart , 1 , & CAutostop , 2 , & CBlock , 3 , & SAutostart , 4 , & SLaunched , - 1 ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuConfigAutostart ) ) , 0 ) ) ) , 2 ) ) , CAutostart ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuConfigAutostop ) ) , 0 ) ) ) , 2 ) ) , CAutostop ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuConfigBlock ) ) , 0 ) ) ) , 2 ) ) , CBlock ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuSystemAutostart ) ) , 0 ) ) ) , 2 ) ) , SAutostart ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuSystemLaunched ) ) , 0 ) ) ) , 2 ) ) , SLaunched ) ;
gtk_menu_popup_at_pointer ( GTK_MENU ( menu - > Menu ) , NULL ) ;
gboolean status = 0 ;
char * name ;
gtk_tree_model_get ( model , & iter , 0 , & status , 5 , & name , - 1 ) ;
char * parsed_name = yon_char_divide ( name , yon_char_find_last ( name , ' . ' ) ) ;
free ( name ) ;
name = parsed_name ;
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 0 , ! status , - 1 ) ;
char * config_sting = yon_config_get_by_key ( " SERVICESSTART " ) ;
int size ;
config_str parsed = yon_char_parse ( config_sting , & size , " , " ) ;
int place = yon_char_parsed_check_exist ( parsed , size , name ) ;
if ( status = = 0 ) {
if ( place = = - 1 ) {
if ( ! yon_config_append ( " SERVICESSTART " , name , " , " ) ) {
yon_config_register ( " SERVICESSTART " , " [config] " , name ) ;
}
}
main_config . rmb_clicked = 0 ;
} else {
if ( place ! = - 1 ) {
parsed = yon_char_parsed_rip ( parsed , & size , place ) ;
if ( parsed )
yon_config_set ( " SERVICESSTART " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICESSTART " ) ;
}
}
yon_char_parsed_free ( parsed , size ) ;
}
}
void yon_config_load_proceed ( char * command ) {
yon_config_clean ( ) ;
// yon_config_main_clean();
gtk_list_store_clear ( main_config . list ) ;
int services_len = 0 ;
int sockets_len = 0 ;
int config_size = 0 ;
config_str services = yon_config_load ( load_services_command , & services_len ) ;
config_str config = yon_config_load ( command , & config_size ) ;
for ( int i = 0 ; i < services_len ; i + + ) {
int current_size = 0 ;
gboolean syslaunched = 0 ;
gboolean conf_autolaunch = 0 ;
gboolean conf_autostop = 0 ;
gboolean conf_block = 0 ;
services [ i ] = yon_char_divide_search ( services [ i ] , " \n " , - 1 ) ;
config_str current_service = yon_char_parse ( services [ i ] , & current_size , " ; " ) ;
void on_config_autostop_clicked ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
if ( strcmp ( current_service [ 2 ] , " active " ) = = 0 ) syslaunched = 1 ;
if ( config ) {
main_config . loaded_config = config ;
if ( strstr ( config [ 0 ] , yon_char_append ( current_service [ 0 ] , " , " ) ) ) conf_autolaunch = 1 ;
if ( strstr ( config [ 1 ] , yon_char_append ( current_service [ 0 ] , " , " ) ) ) conf_autostop = 1 ;
if ( strstr ( config [ 2 ] , yon_char_append ( current_service [ 0 ] , " , " ) ) ) conf_block = 1 ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gboolean status = 0 ;
char * name ;
gtk_tree_model_get ( model , & iter , 1 , & status , 5 , & name , - 1 ) ;
char * parsed_name = yon_char_divide ( name , yon_char_find_last ( name , ' . ' ) ) ;
free ( name ) ;
name = parsed_name ;
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 1 , ! status , - 1 ) ;
char * config_sting = yon_config_get_by_key ( " SERVICESNOSTART " ) ;
int size ;
config_str parsed = yon_char_parse ( config_sting , & size , " , " ) ;
int place = yon_char_parsed_check_exist ( parsed , size , name ) ;
if ( status = = 0 ) {
if ( place = = - 1 ) {
if ( ! yon_config_append ( " SERVICESNOSTART " , name , " , " ) ) {
yon_config_register ( " SERVICESNOSTART " , " [config] " , name ) ;
}
gtk_list_store_append ( main_config . list , & iter ) ;
gtk_list_store_set ( main_config . list , & iter , 4 , syslaunched , 5 , current_service [ 0 ] , 6 , current_service [ 4 ] , - 1 ) ;
}
} else {
if ( place ! = - 1 ) {
parsed = yon_char_parsed_rip ( parsed , & size , place ) ;
if ( parsed )
yon_config_set ( " SERVICESNOSTART " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICESNOSTART " ) ;
}
}
yon_char_parsed_free ( parsed , size ) ;
}
if ( config ) {
main_config . loaded_config = config ;
yon_ubl_status_box_render ( LOCAL_SAVE_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
} else
yon_ubl_status_box_render ( LOAD_FAILED_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
}
void yon_config_load_local ( GtkWidget * self , main_window * widgets ) {
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , NULL ) ;
yon_config_load_proceed ( load_config_local_command ) ;
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( main_config . list ) ) ;
int size = 0 ;
dictionary * dict = NULL ;
config_str config = yon_config_load ( load_services_command , & size ) ;
printf ( " %s \n " , config [ 0 ] ) ;
for ( int i = 0 ; i < size ; i + + ) {
int servsize = 0 ;
config_str service = yon_char_parse ( config [ i ] , & servsize , " ; " ) ;
service_info * info = new ( service_info ) ;
info - > name = yon_char_divide ( service [ 0 ] , strlen ( service [ 0 ] ) - strlen ( " .service " ) ) ;
info - > loaded = strcmp ( service [ 1 ] , " loaded " ) = = 0 ;
info - > active = strcmp ( service [ 2 ] , " active " ) = = 0 ;
info - > description = yon_char_divide_search ( service [ 4 ] , " \n " , - 1 ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , info - > name , info ) ;
}
// if (main_config.loaded_config){
// for (int i=0;main_config.loaded_config[i];i++){
// dictionary *dct=NULL;
// for_dictionaries (dct,dict){
// if (strcmp(main_config.loaded_config[i],dict->key)==0){
// service_info *serv = yon_dictionary_get_data(dct,service_info*);
// GtkTreeIter iter;
// gtk_list_store_append(main_config.list,&iter);
// gtk_list_store_set(main_config.list,&iter,3,serv->loaded,4,serv->active,-1);
// }
// }
// }
// }
}
void yon_config_load_global ( ) {
}
void on_config_autostart_switch ( GtkMenuItem * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
void on_config_block_clicked ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gboolean autostart = 0 ;
gtk_tree_model_get ( model , & iter , 0 , & autostart , - 1 ) ;
gtk_list_store_set ( main_config . list , & iter , 0 , ! autostart , - 1 ) ;
gboolean status = 0 ;
char * name ;
gtk_tree_model_get ( model , & iter , 2 , & status , 5 , & name , - 1 ) ;
char * parsed_name = yon_char_divide ( name , yon_char_find_last ( name , ' . ' ) ) ;
free ( name ) ;
name = parsed_name ;
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 2 , ! status , - 1 ) ;
char * config_sting = yon_config_get_by_key ( " SERVICESMASK " ) ;
int size ;
config_str parsed = yon_char_parse ( config_sting , & size , " , " ) ;
int place = yon_char_parsed_check_exist ( parsed , size , name ) ;
if ( status = = 0 ) {
if ( place = = - 1 ) {
if ( ! yon_config_append ( " SERVICESMASK " , name , " , " ) ) {
yon_config_register ( " SERVICESMASK " , " [config] " , name ) ;
}
}
} else {
if ( place ! = - 1 ) {
parsed = yon_char_parsed_rip ( parsed , & size , place ) ;
if ( parsed )
yon_config_set ( " SERVICESMASK " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICESMASK " ) ;
}
}
yon_char_parsed_free ( parsed , size ) ;
}
}
void on_config_autostop_switch ( GtkMenuItem * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
void on_system_autostart_clicked ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gboolean autostop = 0 ;
gtk_tree_model_get ( model , & iter , 1 , & autostop , - 1 ) ;
gtk_list_store_set ( main_config . list , & iter , 1 , ! autostop , - 1 ) ;
gboolean status = 0 ;
char * service_name ;
gtk_tree_model_get ( model , & iter , 3 , & status , 5 , & service_name , - 1 ) ;
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 3 , ! status , - 1 ) ;
yon_launch ( ( ! status ) = = 1 ? service_enable_command ( service_name ) : \
service_disable_command ( service_name ) ) ;
}
}
void on_config_block_switch ( GtkMenuItem * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
void on_ system_launch_clicked( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gboolean block = 0 ;
gtk_tree_model_get ( model , & iter , 2 , & block , - 1 ) ;
gtk_list_store_set ( main_config . list , & iter , 2 , ! block , - 1 ) ;
gboolean status = 0 ;
char * service_name ;
gtk_tree_model_get ( model , & iter , 4 , & status , 5 , & service_name , - 1 ) ;
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 4 , ! status , - 1 ) ;
yon_launch ( ( ! status ) = = 1 ? service_start_command ( service_name ) : \
service_stop_command ( service_name ) ) ;
}
}
gboolean yon_service_source_check ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
int type ;
gtk_tree_model_get ( model , iter , 8 , & type , - 1 ) ;
return 1 ;
}
void on_system_autostart_switch ( GtkMenuItem * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gboolean autostart = 0 ;
gtk_tree_model_get ( model , & iter , 3 , & autostart , - 1 ) ;
gtk_list_store_set ( main_config . list , & iter , 3 , ! autostart , - 1 ) ;
void on_source_changed ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreePath * path = gtk_tree_path_new ( ) ;
GtkTreeModel * model = gtk_tree_model_filter_new ( GTK_TREE_MODEL ( widgets - > liststore2 ) , path ) ;
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( model ) , ( GtkTreeModelFilterVisibleFunc ) yon_service_source_check , NULL , NULL ) ;
}
gboolean on_service_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
int type ;
gtk_tree_model_get ( model , iter , 7 , & type , - 1 ) ;
if ( type = = 1 )
return 1 ;
return 0 ;
}
gboolean on_socket_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
int type ;
gtk_tree_model_get ( model , iter , 7 , & type , - 1 ) ;
if ( type = = 2 )
return 1 ;
return 0 ;
}
gboolean on_autostart_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
gboolean type ;
gtk_tree_model_get ( model , iter , 0 , & type , - 1 ) ;
if ( type )
return 1 ;
return 0 ;
}
gboolean on_stopped_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
gboolean type ;
gtk_tree_model_get ( model , iter , 1 , & type , - 1 ) ;
if ( type )
return 1 ;
return 0 ;
}
gboolean on_blocked_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
gboolean type ;
gtk_tree_model_get ( model , iter , 2 , & type , - 1 ) ;
if ( type )
return 1 ;
return 0 ;
}
void on_type_changed ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
switch ( gtk_combo_box_get_active ( GTK_COMBO_BOX ( widgets - > ServiceTypeCombo ) ) ) {
case 0 :
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( widgets - > liststore2 ) ) ;
break ;
case 1 :
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( main_config . ServiceFilter ) ) ;
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . ServiceFilter ) ) ;
break ;
case 2 :
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( main_config . SocketFilter ) ) ;
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . SocketFilter ) ) ;
break ;
case 3 :
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( main_config . AutolaunchFilter ) ) ;
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . AutolaunchFilter ) ) ;
break ;
case 4 :
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( main_config . StoppedFilter ) ) ;
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . StoppedFilter ) ) ;
break ;
case 5 :
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( main_config . BlockedFilter ) ) ;
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . BlockedFilter ) ) ;
break ;
}
}
void on_service_update ( GtkWidget * self , terminal_window * window ) {
if ( self ) { } ;
yon_terminal_integrated_start ( window - > SystemTerminal , service_info_command ( window - > target ) , NULL , NULL ) ;
}
void on_search ( ) {
}
void on_system_launched ( GtkMenuItem * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
terminal_window * yon_terminal_window_new ( ) {
terminal_window * window = malloc ( sizeof ( terminal_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_path_terminal ) ;
window - > Window = yon_gtk_builder_get_widget ( builder , " MonitorWindow " ) ;
window - > SystemTerminal = yon_gtk_builder_get_widget ( builder , " SystemTerminal " ) ;
window - > UpdateButton = yon_gtk_builder_get_widget ( builder , " UpdateButton " ) ;
window - > target = NULL ;
g_signal_connect ( G_OBJECT ( window - > UpdateButton ) , " clicked " , G_CALLBACK ( on_service_update ) , window ) ;
gtk_widget_show ( window - > Window ) ;
return window ;
}
void on_info_clicked ( GtkWidget * self , main_window * widgets ) {
if ( self ) { }
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gboolean launched = 0 ;
gtk_tree_model_get ( model , & iter , 4 , & launched , - 1 ) ;
gtk_list_store_set ( main_config . list , & iter , 4 , ! launched , - 1 ) ;
char * service_name ;
gtk_tree_model_get ( model , & iter , 5 , & service_name , - 1 ) ;
if ( ! yon_char_is_empty ( service_name ) ) {
terminal_window * window = yon_terminal_window_new ( ) ;
window - > target = service_name ;
on_service_update ( NULL , window ) ;
}
}
}
void on_update ( ) {
}
void on_config_reload ( GtkMenuItem * self , main_window * widgets ) {
void on_ status_show( ) {
}
void on_status_show ( GtkMenuItem * self , main_window * widgets ) {
GtkBuilder * builder = gtk_builder_new_from_resource ( terminal_window_path ) ;
GtkWidget * Window = yon_gtk_builder_get_widget ( builder , " TerminalWindow " ) ;
GtkWidget * box = yon_gtk_builder_get_widget ( builder , " TerminalHolder " ) ;
GtkWidget * updateButton = yon_gtk_builder_get_widget ( builder , " UpdateButton " ) ;
GtkWidget * closeButton = yon_gtk_builder_get_widget ( builder , " CancelButton " ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . list ) ;
void yon_interface_update ( main_window * widgets ) {
int size ;
GtkTreeIter iter ;
char * name = NULL ;
gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ;
gtk_tree_model_get ( model , & iter , 5 , & name , - 1 ) ;
yon_terminal_integrated_launch ( box , yon_char_append ( status_command , name ) , NULL , NULL ) ;
g_signal_connect ( G_OBJECT ( closeButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
gtk_widget_show_all ( Window ) ;
config_str services = yon_config_load ( load_services_command , & size ) ;
for ( int i = 0 ; i < size ; i + + ) {
int parsed_size ;
if ( services [ i ] [ strlen ( services [ i ] ) - 1 ] = = ' \n ' ) services [ i ] [ strlen ( services [ i ] ) - 1 ] = ' \0 ' ;
config_str parsed = yon_char_parse ( services [ i ] , & parsed_size , " ; " ) ;
gtk_list_store_append ( widgets - > liststore2 , & iter ) ;
int type ;
char * description = parsed [ parsed_size - 1 ] ;
if ( strstr ( parsed [ 0 ] , " .socket " ) )
type = 2 ;
else type = 1 ;
gtk_list_store_set ( widgets - > liststore2 , & iter , 5 , parsed [ 0 ] , 6 , description , 7 , type , - 1 ) ;
}
int launched_size ;
config_str launched_parsed = yon_config_load ( load_launched_command , & launched_size ) ;
int enabled_size ;
config_str enabled_parsed = yon_config_load ( load_enabled_command , & enabled_size ) ;
yon_char_parsed_divide_search_full ( launched_parsed , launched_size , " \n " , - 1 ) ;
yon_char_parsed_divide_search_full ( enabled_parsed , enabled_size , " \n " , - 1 ) ;
char * launched = yon_char_parsed_to_string ( launched_parsed , launched_size , " , " ) ;
char * enabled = yon_char_parsed_to_string ( enabled_parsed , enabled_size , " , " ) ;
char * start = yon_config_get_by_key ( " SERVICESSTART " ) ;
char * stop = yon_config_get_by_key ( " SERVICESSROP " ) ;
char * block = yon_config_get_by_key ( " SERVICESMASK " ) ;
if ( ! yon_char_is_empty ( launched ) & & launched [ strlen ( launched ) - 1 ] = = ' \n ' ) launched [ strlen ( launched ) - 1 ] = ' \0 ' ;
if ( ! yon_char_is_empty ( enabled ) & & enabled [ strlen ( enabled ) - 1 ] = = ' \n ' ) enabled [ strlen ( enabled ) - 1 ] = ' \0 ' ;
if ( ! yon_char_is_empty ( start ) & & start [ strlen ( start ) - 1 ] = = ' \n ' ) start [ strlen ( start ) - 1 ] = ' \0 ' ;
if ( ! yon_char_is_empty ( stop ) & & stop [ strlen ( stop ) - 1 ] = = ' \n ' ) stop [ strlen ( stop ) - 1 ] = ' \0 ' ;
if ( ! yon_char_is_empty ( block ) & & block [ strlen ( block ) - 1 ] = = ' \n ' ) block [ strlen ( block ) - 1 ] = ' \0 ' ;
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > liststore2 ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > liststore2 ) , & iter ) ) {
char * name ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > liststore2 ) , & iter , 5 , & name , - 1 ) ;
char * name_parsed = yon_char_divide ( name , yon_char_find_last ( name , ' . ' ) ) ;
free ( name ) ;
if ( ! yon_char_is_empty ( start ) ) {
if ( strstr ( start , name_parsed ) )
gtk_list_store_set ( widgets - > liststore2 , & iter , 0 , 1 , - 1 ) ;
else
gtk_list_store_set ( widgets - > liststore2 , & iter , 0 , 0 , - 1 ) ;
}
if ( ! yon_char_is_empty ( stop ) ) {
if ( strstr ( stop , name_parsed ) )
gtk_list_store_set ( widgets - > liststore2 , & iter , 1 , 1 , - 1 ) ;
else
gtk_list_store_set ( widgets - > liststore2 , & iter , 1 , 0 , - 1 ) ;
}
if ( ! yon_char_is_empty ( block ) ) {
if ( strstr ( block , name_parsed ) )
gtk_list_store_set ( widgets - > liststore2 , & iter , 2 , 1 , - 1 ) ;
else
gtk_list_store_set ( widgets - > liststore2 , & iter , 2 , 0 , - 1 ) ;
}
if ( ! yon_char_is_empty ( launched ) ) {
if ( strstr ( launched , name_parsed ) )
gtk_list_store_set ( widgets - > liststore2 , & iter , 4 , 1 , - 1 ) ;
else
gtk_list_store_set ( widgets - > liststore2 , & iter , 4 , 0 , - 1 ) ;
}
if ( ! yon_char_is_empty ( enabled ) ) {
if ( strstr ( enabled , name_parsed ) )
gtk_list_store_set ( widgets - > liststore2 , & iter , 3 , 1 , - 1 ) ;
else
gtk_list_store_set ( widgets - > liststore2 , & iter , 3 , 0 , - 1 ) ;
}
free ( name_parsed ) ;
}
}
void on_column_resize ( GtkTreeViewColumn * self , GParamSpec * pspec , main_window * widgets ) {
if ( self | | pspec ) { }
GList * list = gtk_tree_view_get_columns ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
int width_configuration = gtk_tree_view_column_get_width ( g_list_nth_data ( list , 0 ) ) + gtk_tree_view_column_get_width ( g_list_nth_data ( list , 1 ) ) + gtk_tree_view_column_get_width ( g_list_nth_data ( list , 2 ) ) ;
int width_system = gtk_tree_view_column_get_width ( g_list_nth_data ( list , 3 ) ) + gtk_tree_view_column_get_width ( g_list_nth_data ( list , 4 ) ) ;
g_list_free ( list ) ;
gtk_tree_view_column_set_fixed_width ( gtk_tree_view_get_column ( GTK_TREE_VIEW ( widgets - > MainUpperTree ) , 0 ) , width_configuration ) ;
gtk_tree_view_column_set_fixed_width ( gtk_tree_view_get_column ( GTK_TREE_VIEW ( widgets - > MainUpperTree ) , 1 ) , width_system ) ;
}
GtkWidget * yon_menu_separator_create ( ) {
GtkWidget * menu_item = gtk_menu_item_new ( ) ;
GtkWidget * box = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL , 0 ) ;
GtkWidget * separator = gtk_separator_new ( GTK_ORIENTATION_HORIZONTAL ) ;
gtk_box_pack_start ( GTK_BOX ( box ) , separator , 1 , 1 , 0 ) ;
gtk_container_add ( GTK_CONTAINER ( menu_item ) , box ) ;
gtk_widget_show_all ( menu_item ) ;
gtk_widget_set_sensitive ( menu_item , 0 ) ;
return menu_item ;
}
GtkWidget * yon_menu_button_create ( char * icon_name , char * text ) {
@ -300,19 +418,8 @@ GtkWidget *yon_menu_button_create(char *icon_name, char *text) {
return menu_item ;
}
GtkWidget * yon_menu_separator_create ( ) {
GtkWidget * menu_item = gtk_menu_item_new ( ) ;
GtkWidget * box = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL , 0 ) ;
GtkWidget * separator = gtk_separator_new ( GTK_ORIENTATION_HORIZONTAL ) ;
gtk_box_pack_start ( GTK_BOX ( box ) , separator , 1 , 1 , 0 ) ;
gtk_container_add ( GTK_CONTAINER ( menu_item ) , box ) ;
gtk_widget_show_all ( menu_item ) ;
gtk_widget_set_sensitive ( menu_item , 0 ) ;
return menu_item ;
}
gboolean on_context_menu_open ( GtkWidget * self , GdkEventButton * event , main_window * widgets ) {
if ( self ) { } ;
if ( event - > button = = 3 ) {
main_config . rmb_clicked = 1 ;
menu_obj * menu_object = g_malloc0 ( sizeof ( menu_obj ) ) ;
@ -339,12 +446,12 @@ gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window
menu_object - > MenuSystemLaunched = menu_item_launched ;
menu_object - > MenuReloadConfig = menu_item_reload ;
menu_object - > MenuStatus = menu_item_status ;
g_signal_connect ( G_OBJECT ( menu_item_autostart_config ) , " activate " , G_CALLBACK ( on_config_autostart_ switch ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_autostop ) , " activate " , G_CALLBACK ( on_config_autostop_ switch ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_block ) , " activate " , G_CALLBACK ( on_config_block_ switch ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_autostart_system ) , " activate " , G_CALLBACK ( on_system_autostart_ switch ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_launched ) , " activate " , G_CALLBACK ( on_system_launch ed) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_reload ) , " activate " , G_CALLBACK ( on_ config_reload ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_autostart_config ) , " activate " , G_CALLBACK ( on_config_autostart_ clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_autostop ) , " activate " , G_CALLBACK ( on_config_autostop_ clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_block ) , " activate " , G_CALLBACK ( on_config_block_ clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_autostart_system ) , " activate " , G_CALLBACK ( on_system_autostart_ clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_launched ) , " activate " , G_CALLBACK ( on_system_launch _click ed) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_reload ) , " activate " , G_CALLBACK ( on_ update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( menu_item_status ) , " activate " , G_CALLBACK ( on_status_show ) , widgets ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ) , menu_item_configuration_in_config ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ) , menu_item_autostart_config ) ;
@ -359,15 +466,20 @@ gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window
gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ) , menu_item_status ) ;
widgets - > RMBMenu = menu ;
widgets - > menu = menu_object ;
// gtk_menu_popup_at_pointer(GTK_MENU(menu),NULL);
// gtk_widget_show_all(widgets->RMBMenu);
// gtk_widget_show_all(widgets->menu->Menu);
gtk_menu_popup_at_pointer ( GTK_MENU ( menu ) , NULL ) ;
return 0 ;
}
return 0 ;
}
// standard functions
/**config_init()
* [ EN ]
*
* [ RU ]
* Ф у н к ц и я и н и ц и а л и з а ц и и в с е х п а р а м е т р о в к о н ф и г у р а ц и и
*/
void config_init ( ) {
main_config . always_open_documentation = 0 ;
main_config . socket_id = - 1 ;
@ -378,101 +490,101 @@ void config_init(){
main_config . lock_load_global = 0 ;
main_config . lock_save_global = 0 ;
main_config . lock_save_local = 0 ;
main_config . rmb_clicked = 0 ;
main_config . loaded_config = NULL ;
}
void yon_config_main_clean ( ) {
if ( main_config . loaded_config ) {
for ( char * str = main_config . loaded_config [ 0 ] ; str ; str + = 8 )
free ( str ) ;
void on_activate ( GtkTreeView * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
char * name = NULL ;
char * description = NULL ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > liststore2 ) , & iter , 5 , & name , 6 , & description , - 1 ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > ServiceLabel ) , name ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > DescriptionLabel ) , description ) ;
menu_obj * menu = widgets - > menu ;
if ( main_config . rmb_clicked ) {
gboolean CAutostart , CAutostop , CBlock , SAutostart , SLaunched ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > liststore2 ) , & iter , 0 , & CAutostart , 1 , & CAutostop , 2 , & CBlock , 3 , & SAutostart , 4 , & SLaunched , - 1 ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuConfigAutostart ) ) , 0 ) ) ) , 2 ) ) , CAutostart ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuConfigAutostop ) ) , 0 ) ) ) , 2 ) ) , CAutostop ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuConfigBlock ) ) , 0 ) ) ) , 2 ) ) , CBlock ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuSystemAutostart ) ) , 0 ) ) ) , 2 ) ) , SAutostart ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( gtk_container_get_children ( GTK_CONTAINER ( menu - > MenuSystemLaunched ) ) , 0 ) ) ) , 2 ) ) , SLaunched ) ;
gtk_menu_popup_at_pointer ( GTK_MENU ( menu - > Menu ) , NULL ) ;
}
main_config . loaded_config = NULL ;
}
main_config . rmb_clicked = 0 ;
}
main_window * setup_window ( ) {
/* Widgets getting | Получение виджетов */
main_window * widgets = malloc ( sizeof ( main_window ) ) ;
/**yon_main_window_complete(main_window *widgets)
* [ EN ]
*
* [ RU ]
* Ф у н к ц и я н а с т р о й к и о с н о в н о г о о к н а п р и л о ж е н и я . [ widgets ] - с т р у к т у р а с о с т а н д а р т н ы м и н т е р ф е й с о м .
*/
void yon_main_window_complete ( main_window * widgets ) {
widgets = yon_remalloc ( widgets , sizeof ( main_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_path ) ;
widgets - > Window = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
widgets - > HatLabel = yon_gtk_builder_get_widget ( builder , " headerTopic " ) ;
widgets - > PlugBox = yon_gtk_builder_get_widget ( builder , " plugBox " ) ;
widgets - > HeadOverlay = yon_gtk_builder_get_widget ( builder , " HeadOverlay " ) ;
widgets - > HeadImage = yon_gtk_builder_get_widget ( builder , " HeadBackgroundImage " ) ;
widgets - > HeadBox = yon_gtk_builder_get_widget ( builder , " HeaderBox " ) ;
widgets - > HeadTitleLabel = yon_gtk_builder_get_widget ( builder , " HeaderTitleLabel " ) ;
widgets - > HeadInfoLabel = yon_gtk_builder_get_widget ( builder , " HeaderInfoLabel " ) ;
widgets - > StatusBox = yon_gtk_builder_get_widget ( builder , " mainStatusBox " ) ;
widgets - > StatusIcon = yon_gtk_builder_get_widget ( builder , " mainStatusIcon " ) ;
widgets - > StatusLabel = yon_gtk_builder_get_widget ( builder , " mainStatusLabel " ) ;
widgets - > SaveLabel = yon_gtk_builder_get_widget ( builder , " headerSaveConfigLabel " ) ;
widgets - > SaveMenuItem = yon_gtk_builder_get_widget ( builder , " SaveGlobalLocalConfigurationMenuItem " ) ;
widgets - > SaveGlobalMenuItem = yon_gtk_builder_get_widget ( builder , " SaveGlobalConfigurationMenuItem " ) ;
widgets - > SaveLocalMenuItem = yon_gtk_builder_get_widget ( builder , " SaveLocalConfigurationMenuItem " ) ;
widgets - > RightBox = yon_gtk_builder_get_widget ( builder , " HeaderRightBox " ) ;
widgets - > ChosenNameLabel = yon_gtk_builder_get_widget ( builder , " MainChosenNameLabel " ) ;
widgets - > ChosenDescriptionLabel = yon_gtk_builder_get_widget ( builder , " MainChosenDescriptionLabel " ) ;
widgets - > LoadLabel = yon_gtk_builder_get_widget ( builder , " headerLoadConfigLabel " ) ;
widgets - > LoadGlobalMenuItem = yon_gtk_builder_get_widget ( builder , " LoadGlobalConfigurationMenuItem " ) ;
widgets - > LoadLocalMenuItem = yon_gtk_builder_get_widget ( builder , " LoadLocalConfigurationMenuItem " ) ;
widgets - > LeftBox = yon_gtk_builder_get_widget ( builder , " HeaderLeftBox " ) ;
widgets - > DocumentationMenuItem = yon_ubl_menu_item_documentation_new ( DOCUMENTATION_LABEL ) ; // yon_gtk_builder_get_widget(builder,"DocumentationMenuItem");
widgets - > AboutMenuItem = yon_ubl_menu_item_about_new ( ABOUT_LABEL ) ; // yon_gtk_builder_get_widget(builder,"AboutMenuItem");
widgets - > FirstRowNamesTree = yon_gtk_builder_get_widget ( builder , " FirstRowNamesTree " ) ;
widgets - > MainTree = yon_gtk_builder_get_widget ( builder , " MainTree " ) ;
widgets - > ActionsPopover = yon_gtk_builder_get_widget ( builder , " ActionsPopover " ) ;
widgets - > ServiceTreeColumn = GTK_TREE_VIEW_COLUMN ( gtk_builder_get_object ( builder , " ServiceTreeColumn " ) ) ;
widgets - > RMBMenu = yon_gtk_builder_get_widget ( builder , " RMBMenu " ) ;
GtkWidget * menu = yon_gtk_builder_get_widget ( builder , " menu2 " ) ;
main_config . list = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " mainList " ) ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ) , widgets - > DocumentationMenuItem ) ;
gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ) , widgets - > AboutMenuItem ) ;
gtk_menu_attach_to_widget ( GTK_MENU ( widgets - > RMBMenu ) , widgets - > MainTree , NULL ) ;
if ( main_config . lock_load_global = = 1 ) {
gtk_widget_set_sensitive ( widgets - > LoadGlobalMenuItem , 0 ) ;
}
if ( main_config . lock_save_global = = 1 ) {
gtk_widget_set_sensitive ( widgets - > SaveGlobalMenuItem , 0 ) ;
gtk_widget_set_sensitive ( widgets - > SaveMenuItem , 0 ) ;
}
if ( main_config . lock_save_local = = 1 ) {
gtk_widget_set_sensitive ( widgets - > SaveLocalMenuItem , 0 ) ;
gtk_widget_set_sensitive ( widgets - > SaveMenuItem , 0 ) ;
}
/* Signal connection | Присоединение сигналов */
g_signal_connect ( G_OBJECT ( widgets - > Window ) , " destroy " , G_CALLBACK ( gtk_main_quit ) , NULL ) ;
gtk_box_pack_start ( GTK_BOX ( widgets - > InterfaceBox ) , yon_gtk_builder_get_widget ( builder , " BoxMain " ) , 1 , 1 , 0 ) ;
// Custom widgets configuration
widgets - > liststore1 = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " liststore1 " ) ) ;
widgets - > liststore2 = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " liststore2 " ) ) ;
widgets - > BoxMain = yon_gtk_builder_get_widget ( builder , " BoxMain " ) ;
widgets - > ServiceSourceCombo = yon_gtk_builder_get_widget ( builder , " ServiceSourceCombo " ) ;
widgets - > ServiceTypeCombo = yon_gtk_builder_get_widget ( builder , " ServiceTypeCombo " ) ;
widgets - > SearchEntry = yon_gtk_builder_get_widget ( builder , " SearchEntry " ) ;
widgets - > UpdateButton = yon_gtk_builder_get_widget ( builder , " UpdateButton " ) ;
widgets - > ConfigAutostartButton = yon_gtk_builder_get_widget ( builder , " ConfigAutostartButton " ) ;
widgets - > ConfigAutostopButton = yon_gtk_builder_get_widget ( builder , " ConfigAutostopButton " ) ;
widgets - > ConfigBlockButton = yon_gtk_builder_get_widget ( builder , " ConfigBlockButton " ) ;
widgets - > SystemAutostartButton = yon_gtk_builder_get_widget ( builder , " SystemAutostartButton " ) ;
widgets - > SystemLaunchButton = yon_gtk_builder_get_widget ( builder , " SystemLaunchButton " ) ;
widgets - > InfoButton = yon_gtk_builder_get_widget ( builder , " InfoButton " ) ;
widgets - > LogButton = yon_gtk_builder_get_widget ( builder , " LogButton " ) ;
widgets - > MainUpperTree = yon_gtk_builder_get_widget ( builder , " MainUpperTree " ) ;
widgets - > MainTree = yon_gtk_builder_get_widget ( builder , " MainTree " ) ;
widgets - > DescriptionLabel = yon_gtk_builder_get_widget ( builder , " DescriptionLabel " ) ;
widgets - > ServiceLabel = yon_gtk_builder_get_widget ( builder , " ServiceLabel " ) ;
GList * list = gtk_tree_view_get_columns ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
yon_gtk_tree_view_minimal_fixed_size_set_full ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
g_signal_connect ( G_OBJECT ( widgets - > MainTree ) , " button-press-event " , G_CALLBACK ( on_context_menu_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DocumentationMenuItem ) , " activate " , G_CALLBACK ( on_open_documentation_confirmation ) , WIKI_LINK ) ;
g_signal_connect ( G_OBJECT ( widgets - > AboutMenuItem ) , " activate " , G_CALLBACK ( on_about ) , NULL ) ;
g_signal_connect ( G_OBJECT ( widgets - > ConfigAutostartButton ) , " clicked " , G_CALLBACK ( on_config_autostart_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ConfigAutostopButton ) , " clicked " , G_CALLBACK ( on_config_autostop_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ConfigBlockButton ) , " clicked " , G_CALLBACK ( on_config_block_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SystemAutostartButton ) , " clicked " , G_CALLBACK ( on_system_autostart_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SystemLaunchButton ) , " clicked " , G_CALLBACK ( on_system_launch_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > UpdateButton ) , " clicked " , G_CALLBACK ( on_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > InfoButton ) , " clicked " , G_CALLBACK ( on_info_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LogButton ) , " clicked " , G_CALLBACK ( on_status_show ) , widgets ) ;
g_signal_connect ( G_OBJECT ( g_list_nth_data ( list , 0 ) ) , " notify::width " , G_CALLBACK ( on_column_resize ) , widgets ) ;
g_signal_connect ( G_OBJECT ( g_list_nth_data ( list , 1 ) ) , " notify::width " , G_CALLBACK ( on_column_resize ) , widgets ) ;
g_signal_connect ( G_OBJECT ( g_list_nth_data ( list , 2 ) ) , " notify::width " , G_CALLBACK ( on_column_resize ) , widgets ) ;
g_signal_connect ( G_OBJECT ( g_list_nth_data ( list , 3 ) ) , " notify::width " , G_CALLBACK ( on_column_resize ) , widgets ) ;
g_signal_connect ( G_OBJECT ( g_list_nth_data ( list , 4 ) ) , " notify::width " , G_CALLBACK ( on_column_resize ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > MainTree ) , " cursor-changed " , G_CALLBACK ( on_activate ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadGlobalMenuItem ) , " activate " , G_CALLBACK ( yon_config_load_global ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadLocalMenuItem ) , " activate " , G_CALLBACK ( yon_config_load_local ) , widgets ) ;
// g_signal_connect(G_OBJECT(widgets->SaveMenuItem), "activate", G_CALLBACK(yon_config_save), widgets);
// g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem), "activate", G_CALLBACK(yon_config_save_global), widgets);
// g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem), "activate", G_CALLBACK(yon_config_save_local), widgets);
gtk_widget_show ( widgets - > Window ) ;
return widgets ;
g_signal_connect ( G_OBJECT ( widgets - > ServiceTypeCombo ) , " changed " , G_CALLBACK ( on_type_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadLocalMenuItem ) , " activate " , G_CALLBACK ( on_config_local_load ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadGlobalMenuItem ) , " activate " , G_CALLBACK ( on_config_global_load ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveMenuItem ) , " activate " , G_CALLBACK ( on_config_global_local_save ) , NULL ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveLocalMenuItem ) , " activate " , G_CALLBACK ( on_config_local_save ) , NULL ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveGlobalMenuItem ) , " activate " , G_CALLBACK ( on_config_global_save ) , NULL ) ;
g_list_free ( list ) ;
main_config . ServiceFilter = gtk_tree_model_filter_new ( GTK_TREE_MODEL ( widgets - > liststore2 ) , NULL ) ;
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . ServiceFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_service_filter , NULL , NULL ) ;
main_config . SocketFilter = gtk_tree_model_filter_new ( GTK_TREE_MODEL ( widgets - > liststore2 ) , NULL ) ;
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . SocketFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_socket_filter , NULL , NULL ) ;
main_config . AutolaunchFilter = gtk_tree_model_filter_new ( GTK_TREE_MODEL ( widgets - > liststore2 ) , NULL ) ;
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . AutolaunchFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_autostart_filter , NULL , NULL ) ;
main_config . StoppedFilter = gtk_tree_model_filter_new ( GTK_TREE_MODEL ( widgets - > liststore2 ) , NULL ) ;
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . StoppedFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_stopped_filter , NULL , NULL ) ;
main_config . BlockedFilter = gtk_tree_model_filter_new ( GTK_TREE_MODEL ( widgets - > liststore2 ) , NULL ) ;
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . BlockedFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_blocked_filter , NULL , NULL ) ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_interface_update ( widgets ) ;
}
int main ( int argc , char * argv [ ] ) {
@ -481,7 +593,6 @@ int main(int argc, char *argv[]){
config_init ( ) ;
int option_index = 0 ;
int show_help = 0 ;
int debug_mode = 0 ;
{
struct option long_options [ ] = {
{ " help " , 0 , 0 , ' h ' } ,
@ -494,11 +605,11 @@ int main(int argc, char *argv[]){
{ " socket-id " , 1 , 0 , ' s ' } ,
{ " socket-ext-id " , 1 , 0 , ' e ' } ,
{ " socket-trd-id " , 1 , 0 , ' t ' } ,
{ " debug" , 0 , 0 , ' d ' } ,
{ " clear-config" , 0 , 0 , ' c ' } ,
{ NULL , 0 , NULL , 0 }
} ;
for ( int i = 0 ; i < argc ; i + + ) {
int argument = getopt_long ( argc , argv , " hVvs:e:t: d " , long_options , & option_index ) ;
int argument = getopt_long ( argc , argv , " hVvs:e:t: c " , long_options , & option_index ) ;
switch ( argument ) {
case ' h ' :
show_help = 1 ;
@ -514,11 +625,13 @@ int main(int argc, char *argv[]){
break ;
case ' e ' :
if ( optarg )
main_config . load _socket_id= atoi ( optarg ) ;
main_config . save _socket_id= atoi ( optarg ) ;
break ;
case ' t ' :
if ( optarg )
main_config . save_socket_id = atoi ( optarg ) ;
main_config . load_socket_id = atoi ( optarg ) ;
break ;
case ' c ' : if ( system ( yon_char_unite ( " rm -rfd " , yon_ubl_user_get_home_directory ( ) , " /.config/ " , LocaleName , " / " , NULL ) ) ) { } ;
break ;
case 1 :
main_config . lock_help = 1 ;
@ -550,24 +663,10 @@ int main(int argc, char *argv[]){
main_config . lock_save_local = 1 ;
}
gtk_init ( & argc , & argv ) ;
main_window * widgets = setup_window ( ) ;
yon_ubl_header_setup_resource ( widgets - > HeadOverlay , widgets - > HeadBox , widgets - > HeadImage , banner_path ) ;
yon_ubl_status_box_setup ( widgets - > StatusIcon , widgets - > StatusBox , widgets - > StatusLabel ) ;
if ( getuid ( ) ! = 0 )
yon_ubl_status_box_render ( ROOT_WARNING_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
else
yon_ubl_status_box_render ( TITLE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_ubl_setup_sockets ( widgets - > PlugBox , widgets - > LeftBox , widgets - > RightBox , main_config . socket_id , main_config . load_socket_id , main_config . save_socket_id ) ;
yon_window_config_setup ( GTK_WINDOW ( widgets - > Window ) ) ;
yon_window_config_load ( config_path ) ;
yon_config_load_local ( NULL , widgets ) ;
GtkCssProvider * css = gtk_css_provider_new ( ) ;
gtk_css_provider_load_from_resource ( css , CssPath ) ;
gtk_style_context_add_provider_for_screen ( gdk_screen_get_default ( ) ,
GTK_STYLE_PROVIDER ( css ) ,
- 1 ) ;
yon_ubl_connect_config ( ( _template_config * ) & main_config ) ;
yon_ubl_window_init ( TITLE_LABEL , TITLE_INFO_LABEL , LocaleName , CssPath , LocaleName , version_application , WIKI_LINK ) ;
template_main_window * widgets = yon_ubl_window_setup ( ) ;
yon_main_window_complete ( ( main_window * ) widgets ) ;
gtk_main ( ) ;
return 0 ;
}