@ -5,44 +5,46 @@ config main_config;
//functions
void yon_load_proceed ( YON_CONFIG_TYPE type ) {
if ( yon_config_load_register ( type , " config" , " SERVICESSTART SERVICESNOSTART SERVICES MASK" , NULL ) ) {
if ( yon_config_load_register ( type , " system" , " SERVICES_ENABLE SERVICES_DISABLE SERVICES_ MASK" , NULL ) ) {
}
}
void on_config_local_load ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
g_thread_new ( " " , ( GThreadFunc ) yon_interface_update , widgets ) ;
main_config . load_mode = 1 ;
textdomain ( template_ui_LocaleName ) ;
textdomain ( LocaleName ) ;
if ( ! main_config . update_thread_active ) {
main_config . update_thread_active = 1 ;
if ( self ) { } ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
gdk_threads_add_idle ( ( GSourceFunc ) ( ( gboolean * ) ( void * ) yon_interface_update ) , widgets ) ;
main_config . load_mode = 1 ;
}
}
void on_config_global_load ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
g_thread_new ( " " , ( GThreadFunc ) yon_interface_update , widgets ) ;
main_config . load_mode = 0 ;
textdomain ( template_ui_LocaleName ) ;
textdomain ( LocaleName ) ;
if ( ! main_config . update_thread_active ) {
main_config . update_thread_active = 1 ;
if ( self ) { } ;
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
gdk_threads_add_idle ( ( GSourceFunc ) ( ( gboolean * ) ( void * ) yon_interface_update ) , widgets ) ;
main_config . load_mode = 0 ;
}
}
void on_config_global_local_save ( ) {
yon_save_proceed ( NULL , YON_CONFIG_BOTH , " config" , " SERVICESSTART SERVICESNOSTART SERVICES MASK" , NULL ) ;
yon_save_proceed ( NULL , YON_CONFIG_BOTH , " system" , " SERVICES_ENABLE SERVICES_DISABLE SERVICES_ MASK" , NULL ) ;
}
void on_config_local_save ( ) {
yon_save_proceed ( " local " , YON_CONFIG_LOCAL , " config" , " SERVICESSTART SERVICESNOSTART SERVICES MASK" , NULL ) ;
yon_save_proceed ( " local " , YON_CONFIG_LOCAL , " system" , " SERVICES_ENABLE SERVICES_DISABLE SERVICES_ MASK" , NULL ) ;
}
void on_config_global_save ( ) {
yon_save_proceed ( " global " , YON_CONFIG_GLOBAL , " config" , " SERVICESSTART SERVICESNOSTART SERVICES MASK" , NULL ) ;
yon_save_proceed ( " global " , YON_CONFIG_GLOBAL , " system" , " SERVICES_ENABLE SERVICES_DISABLE SERVICES_ MASK" , NULL ) ;
}
@ -112,22 +114,22 @@ void on_config_autostart_clicked(GtkWidget *self, main_window *widgets){
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 ( " SERVICES START " ) ;
char * config_sting = yon_config_get_by_key ( " SERVICES _ENABLE " ) ;
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 ( " SERVICES START " , name , " , " ) ) {
yon_config_register ( " SERVICES START" , " [config ]" , name ) ;
if ( ! yon_config_append ( " SERVICES _ENABLE " , name , " , " ) ) {
yon_config_register ( " SERVICES _ENABLE" , " [system ]" , name ) ;
}
}
} else {
if ( place ! = - 1 ) {
parsed = yon_char_parsed_rip ( parsed , & size , place ) ;
if ( parsed )
yon_config_set ( " SERVICES START " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICES START " ) ;
yon_config_set ( " SERVICES _ENABLE " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICES _ENABLE " ) ;
}
}
yon_char_parsed_free ( parsed , size ) ;
@ -146,22 +148,22 @@ void on_config_autostop_clicked(GtkWidget *self, main_window *widgets){
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 ( " SERVICES NOSTART " ) ;
char * config_sting = yon_config_get_by_key ( " SERVICES _DISABLE " ) ;
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 ( " SERVICES NOSTART " , name , " , " ) ) {
yon_config_register ( " SERVICES NOSTART" , " [config ]" , name ) ;
if ( ! yon_config_append ( " SERVICES _DISABLE " , name , " , " ) ) {
yon_config_register ( " SERVICES _DISABLE" , " [system ]" , name ) ;
}
}
} else {
if ( place ! = - 1 ) {
parsed = yon_char_parsed_rip ( parsed , & size , place ) ;
if ( parsed )
yon_config_set ( " SERVICES NOSTART " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICES NOSTART " ) ;
yon_config_set ( " SERVICES _DISABLE " , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICES _DISABLE " ) ;
}
}
yon_char_parsed_free ( parsed , size ) ;
@ -181,22 +183,22 @@ void on_config_block_clicked(GtkWidget *self, main_window *widgets){
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 ( " SERVICES MASK" ) ;
char * config_sting = yon_config_get_by_key ( " SERVICES _ MASK" ) ;
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 ( " SERVICES MASK" , name , " , " ) ) {
yon_config_register ( " SERVICES MASK" , " [ config ]" , name ) ;
if ( ! yon_config_append ( " SERVICES _ MASK" , name , " , " ) ) {
yon_config_register ( " SERVICES _ MASK" , " [ system ]" , name ) ;
}
}
} else {
if ( place ! = - 1 ) {
parsed = yon_char_parsed_rip ( parsed , & size , place ) ;
if ( parsed )
yon_config_set ( " SERVICES MASK" , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICES MASK" ) ;
yon_config_set ( " SERVICES _ MASK" , yon_char_parsed_to_string ( parsed , size , " , " ) ) ;
else yon_config_remove_by_key ( " SERVICES _ MASK" ) ;
}
}
yon_char_parsed_free ( parsed , size ) ;
@ -219,6 +221,12 @@ void on_system_autostart_clicked(GtkWidget *self, main_window *widgets){
}
void on_system_kill_confirmed ( GtkWidget * self , char * service_name ) {
if ( self ) { } ;
char * command = service_kill_command ( service_name ) ;
yon_launch ( command ) ;
}
void on_system_launch_clicked ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
@ -227,9 +235,29 @@ void on_system_launch_clicked(GtkWidget *self, main_window *widgets){
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 ) ) ;
int size ;
config_str result = yon_config_load ( service_check_active_command ( service_name ) , & size ) ;
yon_char_remove_last_symbol ( result [ 0 ] , ' \n ' ) ;
if ( size > 0 ) {
if ( ! strcmp ( result [ 0 ] , " active " ) ) {
if ( status ) {
dialog_confirmation_data data ;
data . action_text = STOP_SERVICE_WARMING_LABEL ( service_name ) ;
data . function = ( void * ) ( void * ) on_system_kill_confirmed ;
data . data = service_name ;
int answer = yon_confirmation_dialog_call ( self , & data ) ;
if ( answer )
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 4 , 0 , - 1 ) ;
} else {
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 4 , 1 , - 1 ) ;
}
} else {
gtk_list_store_set ( GTK_LIST_STORE ( widgets - > liststore2 ) , & iter , 4 , 0 , - 1 ) ;
}
}
yon_char_parsed_free ( result , size ) ;
}
}
@ -241,12 +269,6 @@ gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter,void *d
return 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 ) { } ;
@ -293,6 +315,26 @@ gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data){
return 0 ;
}
gboolean on_source_user_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
gboolean type ;
gtk_tree_model_get ( model , iter , 8 , & type , - 1 ) ;
if ( type )
return 1 ;
return 0 ;
}
gboolean on_source_system_filter ( GtkTreeModel * model , GtkTreeIter * iter , void * data ) {
if ( data ) { } ;
gboolean type ;
gtk_tree_model_get ( model , iter , 8 , & 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 ) ) ) {
@ -320,6 +362,21 @@ void on_type_changed(GtkWidget *self, main_window *widgets){
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . BlockedFilter ) ) ;
break ;
}
if ( main_config . SourceFilter ) {
g_object_unref ( main_config . SourceFilter ) ;
main_config . SourceFilter = NULL ;
}
main_config . SourceFilter = gtk_tree_model_filter_new ( gtk_tree_view_get_model ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , NULL ) ;
int active = gtk_combo_box_get_active ( GTK_COMBO_BOX ( widgets - > ServiceSourceCombo ) ) ;
if ( active = = 1 ) {
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . SourceFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_source_system_filter , NULL , NULL ) ;
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , main_config . SourceFilter ) ;
} else if ( active = = 2 ) {
gtk_tree_model_filter_set_visible_func ( GTK_TREE_MODEL_FILTER ( main_config . SourceFilter ) , ( GtkTreeModelFilterVisibleFunc ) on_source_user_filter , NULL , NULL ) ;
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , main_config . SourceFilter ) ;
}
gtk_tree_model_filter_refilter ( GTK_TREE_MODEL_FILTER ( main_config . SourceFilter ) ) ;
}
void on_service_update ( GtkWidget * self , terminal_window * window ) {
@ -365,6 +422,10 @@ void on_info_clicked(GtkWidget *self, main_window *widgets){
}
}
void on_log_show ( ) {
}
void * yon_unthreaded_config_load ( void * widgets ) {
if ( main_config . load_mode = = 1 ) {
on_config_local_load ( NULL , ( main_window * ) widgets ) ;
@ -375,17 +436,38 @@ void *yon_unthreaded_config_load(void *widgets){
}
void on_update ( GtkWidget * self , main_window * widgets ) {
if ( self ) { }
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
g_thread_new ( " " , ( GThreadFunc ) yon_unthreaded_config_load , widgets ) ;
if ( ! main_config . update_thread_active ) {
if ( self ) { }
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
if ( yon_unthreaded_config_load ( widgets ) ) { } ;
}
}
void * yon_interface_update ( main_window * widgets ) {
void * update_delay ( main_window * widgets ) {
on_type_changed ( NULL , widgets ) ;
main_config . update_thread_active = 0 ;
textdomain ( template_ui_LocaleName ) ;
if ( main_config . load_mode ) {
yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
} else {
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
textdomain ( LocaleName ) ;
return NULL ;
}
gboolean yon_interface_update ( main_window * widgets ) {
gtk_widget_set_sensitive ( widgets - > UpdateButton , 0 ) ;
int size ;
int size_users ;
GtkTreeIter iter ;
gtk_list_store_clear ( widgets - > liststore2 ) ;
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , NULL ) ;
config_str services = yon_config_load ( load_services_command , & size ) ;
char * command = load_user_services_command ;
config_str users_services = yon_config_load ( command , & size_users ) ;
for ( int i = 0 ; i < size ; i + + ) {
while ( gtk_events_pending ( ) ) gtk_main_iteration ( ) ;
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 , " ; " ) ;
@ -395,8 +477,24 @@ void *yon_interface_update(main_window *widgets){
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 user_service = 0 ;
gtk_list_store_set ( widgets - > liststore2 , & iter , 5 , parsed [ 0 ] , 6 , description , 7 , type , 8 , user_service , - 1 ) ;
}
for ( int i = 0 ; i < size_users ; i + + ) {
while ( gtk_events_pending ( ) ) gtk_main_iteration ( ) ;
int parsed_size ;
if ( users_services [ i ] [ strlen ( users_services [ i ] ) - 1 ] = = ' \n ' ) users_services [ i ] [ strlen ( users_services [ i ] ) - 1 ] = ' \0 ' ;
config_str parsed = yon_char_parse ( users_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 ;
int user_service = 1 ;
gtk_list_store_set ( widgets - > liststore2 , & iter , 5 , parsed [ 0 ] , 6 , description , 7 , type , 8 , user_service , - 1 ) ;
}
int launched_size ;
config_str launched_parsed = yon_config_load ( load_launched_command , & launched_size ) ;
int enabled_size ;
@ -405,9 +503,9 @@ void *yon_interface_update(main_window *widgets){
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 ( " SERVICES START " ) ;
char * stop = yon_config_get_by_key ( " SERVICES SROP " ) ;
char * block = yon_config_get_by_key ( " SERVICES MASK" ) ;
char * start = yon_config_get_by_key ( " SERVICES _ENABLE " ) ;
char * stop = yon_config_get_by_key ( " SERVICES _DISABLE " ) ;
char * block = yon_config_get_by_key ( " SERVICES _ MASK" ) ;
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 ' ;
@ -450,16 +548,11 @@ void *yon_interface_update(main_window *widgets){
gtk_list_store_set ( widgets - > liststore2 , & iter , 3 , 0 , - 1 ) ;
}
free ( name_parsed ) ;
while ( gtk_events_pending ( ) ) gtk_main_iteration ( ) ;
}
textdomain ( template_ui_LocaleName ) ;
if ( main_config . load_mode ) {
yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
} else {
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
textdomain ( LocaleName ) ;
gtk_tree_view_set_model ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_TREE_MODEL ( widgets - > liststore2 ) ) ;
return NULL ;
update_delay ( widgets ) ;
gtk_widget_set_sensitive ( widgets - > UpdateButton , 1 ) ;
return 0 ;
}
void on_column_resize ( GtkTreeViewColumn * self , GParamSpec * pspec , main_window * widgets ) {
@ -473,13 +566,10 @@ void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *wid
}
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 ) ;
GtkWidget * menu_item = gtk_separator_menu_item_new ( ) ;
gtk_widget_show_all ( menu_item ) ;
gtk_style_context_add_class ( gtk_widget_get_style_context ( menu_item ) , " sepat " ) ;
gtk_widget_show ( menu_item ) ;
gtk_widget_set_sensitive ( menu_item , 0 ) ;
return menu_item ;
}
@ -488,12 +578,9 @@ GtkWidget *yon_menu_button_create(char *icon_name, char *text) {
GtkWidget * menu_item = gtk_menu_item_new ( ) ;
GtkWidget * box = gtk_box_new ( GTK_ORIENTATION_HORIZONTAL , 0 ) ;
GtkWidget * icon ;
GtkWidget * check ;
if ( icon_name ) {
icon = gtk_image_new_from_icon_name ( icon_name , GTK_ICON_SIZE_BUTTON ) ;
check = gtk_check_button_new ( ) ;
gtk_box_pack_start ( GTK_BOX ( box ) , icon , 0 , 0 , 5 ) ;
gtk_box_pack_end ( GTK_BOX ( box ) , check , 0 , 0 , 5 ) ;
}
GtkWidget * label = gtk_label_new ( text ) ;
gtk_box_pack_start ( GTK_BOX ( box ) , label , 0 , 0 , 5 ) ;
@ -518,7 +605,7 @@ gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window
GtkWidget * menu_item_configuration_in_system = yon_menu_button_create ( NULL , SYSTEM_CONFIGURATION_LABEL ) ;
gtk_widget_set_sensitive ( menu_item_configuration_in_system , 0 ) ;
GtkWidget * menu_item_autostart_system = yon_menu_button_create ( " media-playback-start-symbolic " , AUTOSTART_LABEL ) ;
GtkWidget * menu_item_launched = yon_menu_button_create ( " emoji-flags-symbolic " , LAUNCHED _LABEL) ;
GtkWidget * menu_item_launched = yon_menu_button_create ( " emoji-flags-symbolic " , SYSTEM_ LAUNCH_TOGGL E_LABEL) ;
GtkWidget * menu_item_separator2 = yon_menu_separator_create ( ) ;
GtkWidget * menu_item_reload = yon_menu_button_create ( " emblem-synchronizing-symbolic " , SERVICE_RELOAD_LABEL ) ;
GtkWidget * menu_item_status = yon_menu_button_create ( " dialog-information-symbolic " , STATUS_LABEL ) ;
@ -550,8 +637,7 @@ 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_widget_show_all(widgets->RMBMenu);
// gtk_widget_show_all(widgets->menu->Menu);
gtk_widget_show_all ( widgets - > RMBMenu ) ;
gtk_menu_popup_at_pointer ( GTK_MENU ( menu ) , NULL ) ;
return 0 ;
}
@ -575,33 +661,44 @@ void config_init(){
main_config . lock_save_global = 0 ;
main_config . lock_save_local = 0 ;
main_config . load_mode = 1 ;
main_config . update_thread_active = 0 ;
}
void on_activate ( GtkTreeView * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL( widgets - > liststore2 ) ;
GtkTreeModel * model = gtk_tree_view_get_model( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
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_tree_model_get ( model , & 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 . rmb_clicked = 0 ;
}
void on_tree_selection_changed ( GtkWidget * self , main_window * widgets ) {
if ( self ) { } ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > liststore2 ) ;
GtkTreeIter iter ;
int switch_status = 0 ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
switch_status = 1 ;
}
gtk_widget_set_sensitive ( widgets - > ConfigAutostartButton , switch_status ) ;
gtk_widget_set_sensitive ( widgets - > ConfigAutostopButton , switch_status ) ;
gtk_widget_set_sensitive ( widgets - > ConfigBlockButton , switch_status ) ;
gtk_widget_set_sensitive ( widgets - > SystemAutostartButton , switch_status ) ;
gtk_widget_set_sensitive ( widgets - > SystemLaunchButton , switch_status ) ;
gtk_widget_set_sensitive ( widgets - > InfoButton , switch_status ) ;
gtk_widget_set_sensitive ( widgets - > LogButton , switch_status ) ;
}
/**yon_main_window_complete(main_window *widgets)
* [ EN ]
*
@ -642,7 +739,7 @@ void yon_main_window_complete(main_window *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 ( widgets - > LogButton ) , " clicked " , G_CALLBACK ( on_log_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 ) ;
@ -650,6 +747,7 @@ void yon_main_window_complete(main_window *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 - > ServiceTypeCombo ) , " changed " , G_CALLBACK ( on_type_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ServiceSourceCombo ) , " 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 ) ;
@ -657,6 +755,7 @@ void yon_main_window_complete(main_window *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_signal_connect ( G_OBJECT ( widgets - > MainTree ) , " cursor-changed " , G_CALLBACK ( on_tree_selection_changed ) , widgets ) ;
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 ) ;
@ -671,87 +770,23 @@ void yon_main_window_complete(main_window *widgets){
gtk_tree_view_set_search_entry ( GTK_TREE_VIEW ( widgets - > MainTree ) , GTK_ENTRY ( widgets - > SearchEntry ) ) ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
yon_ubl_status_box_render ( LIST_LOAD_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
g_thread_new ( " " , ( GThreadFunc ) yon_interface_update , widgets ) ;
if ( ! main_config . update_thread_active ) {
main_config . update_thread_active = 1 ;
gdk_threads_add_idle ( ( GSourceFunc ) ( ( gboolean * ) ( void * ) yon_interface_update ) , widgets ) ;
}
}
int main ( int argc , char * argv [ ] ) {
local = setlocale ( LC_ALL , " " ) ;
textdomain ( LocaleName ) ;
config_init ( ) ;
int option_index = 0 ;
int show_help = 0 ;
{
struct option long_options [ ] = {
{ " help " , 0 , 0 , ' h ' } ,
{ " version " , 0 , 0 , ' V ' } ,
{ " lock-help " , 0 , 0 , 1 } ,
{ " lock-save " , 0 , 0 , 2 } ,
{ " lock-save-local " , 0 , 0 , 3 } ,
{ " lock-save-global " , 0 , 0 , 4 } ,
{ " lock-load-global " , 0 , 0 , 5 } ,
{ " socket-id " , 1 , 0 , ' s ' } ,
{ " socket-ext-id " , 1 , 0 , ' e ' } ,
{ " socket-trd-id " , 1 , 0 , ' t ' } ,
{ " 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:c " , long_options , & option_index ) ;
switch ( argument ) {
case ' h ' :
show_help = 1 ;
break ;
case ' v ' :
case ' V ' :
printf ( " %s \n " , VERSION_LABEL ) ;
exit ( 0 ) ;
break ;
case ' s ' :
if ( optarg )
main_config . socket_id = atoi ( optarg ) ;
break ;
case ' e ' :
if ( optarg )
main_config . save_socket_id = atoi ( optarg ) ;
break ;
case ' t ' :
if ( 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 ;
break ;
case 2 :
main_config . lock_save_local = 1 ;
main_config . lock_save_global = 1 ;
break ;
case 3 :
main_config . lock_save_local = 1 ;
break ;
case 4 :
main_config . lock_save_global = 1 ;
break ;
case 5 :
main_config . lock_load_global = 1 ;
break ;
}
}
if ( show_help = = 1 & & main_config . lock_help ! = 1 ) {
printf ( " %s \n " , HELP_LABEL ) ;
exit ( 0 ) ;
}
}
if ( getuid ( ) ! = 0 ) {
main_config . lock_load_global = 1 ;
main_config . lock_save_global = 1 ;
main_config . lock_save_local = 1 ;
}
gtk_init ( & argc , & argv ) ;
yon_ubl_connect_config ( ( _template_config * ) & main_config ) ;
yon_ubl_window_init ( TITLE_LABEL , TITLE_INFO_LABEL , LocaleName , CssPath , LocaleName , version_application , WIKI_LINK ) ;
config_str unfound = NULL ;
int size = 0 ;
yon_ubl_setup_arguments ( argc , argv , & unfound , & size , NULL ) ;
gtk_init ( & argc , & argv ) ;
template_main_window * widgets = yon_ubl_window_setup ( ) ;
yon_main_window_complete ( ( main_window * ) widgets ) ;
gtk_main ( ) ;