From b2f7d7596c253b2b254441fb6e9f932aee3c0666 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 1 Feb 2024 12:26:52 +0600 Subject: [PATCH 01/29] Removed check box from menu --- source/ubl-settings-services.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 24aaf4a..5a50fa1 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -473,13 +473,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),"separator"); + gtk_widget_show(menu_item); gtk_widget_set_sensitive(menu_item,0); return menu_item; } @@ -488,12 +485,12 @@ 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; + // GtkWidget *check; if(icon_name){ icon = gtk_image_new_from_icon_name(icon_name,GTK_ICON_SIZE_BUTTON); - check = gtk_check_button_new(); + // 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); + // 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); @@ -550,7 +547,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->RMBMenu); // gtk_widget_show_all(widgets->menu->Menu); gtk_menu_popup_at_pointer(GTK_MENU(menu),NULL); return 0; @@ -589,13 +586,6 @@ void on_activate(GtkTreeView *self, main_window *widgets){ 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); } } From 38777e68d8530e64261262490649b3d3f4d50aa1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 1 Feb 2024 16:38:54 +0600 Subject: [PATCH 02/29] Css classes fixes --- source/ubl-settings-services.c | 1 + ubl-settings-services.css | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 5a50fa1..9dacc97 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -622,6 +622,7 @@ void yon_main_window_complete(main_window *widgets){ 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"); + gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddlemargin"); 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); diff --git a/ubl-settings-services.css b/ubl-settings-services.css index d6b13ef..ef9ec8c 100644 --- a/ubl-settings-services.css +++ b/ubl-settings-services.css @@ -1,4 +1,3 @@ - .thin { margin:0px; padding:0px; @@ -50,17 +49,17 @@ background:transparent; border-left-width:inherit; border-right-width:inherit; } - .menuitemtop *{ + .menuitemtop >*{ margin:4px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } - .menuitemmiddle *{ + .menuitemmiddle >*{ margin:0 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } - .menuitembottom *{ + .menuitembottom >*{ margin:0 2px 2px 2px; padding: 3px 10px 3px 5px; } @@ -85,19 +84,19 @@ background:transparent; border-right-width:inherit; } - .menuitemtop:hover* { + .menuitemtop:hover>* { margin:4px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; } - .menuitemmiddle:hover* { + .menuitemmiddle:hover>* { margin:0 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; } - .menuitembottom:hover* { + .menuitembottom:hover>* { margin:0 2px 2px 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; From 5ec78aa4e372e8ebb885428884074406294c9522 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 1 Feb 2024 17:12:15 +0600 Subject: [PATCH 03/29] Separator at context menu --- source/ubl-settings-services.c | 2 +- ubl-settings-services.css | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 9dacc97..5946271 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -475,7 +475,7 @@ void on_column_resize(GtkTreeViewColumn *self,GParamSpec *pspec,main_window *wid GtkWidget *yon_menu_separator_create() { GtkWidget *menu_item = gtk_separator_menu_item_new(); - gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"separator"); + 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; diff --git a/ubl-settings-services.css b/ubl-settings-services.css index ef9ec8c..866afd7 100644 --- a/ubl-settings-services.css +++ b/ubl-settings-services.css @@ -122,10 +122,10 @@ background:transparent; border-style:solid; } -.debugborders *{ - border-width: 2px; - border-color: #000000; - border-style: solid; +.sepat{ + border-color: darker (@theme_bg_color); + border-top-width:1px; + border-style:solid; } .marginright image{ From 25b895d3ea5f2942500e8ee73fd2dc0ec53f7961 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 1 Feb 2024 17:53:48 +0600 Subject: [PATCH 04/29] Style changes --- ubl-settings-services.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ubl-settings-services.css b/ubl-settings-services.css index 866afd7..805d83c 100644 --- a/ubl-settings-services.css +++ b/ubl-settings-services.css @@ -50,7 +50,7 @@ background:transparent; border-right-width:inherit; } .menuitemtop >*{ - margin:4px 2px 0 2px; + margin:6px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } @@ -85,7 +85,7 @@ background:transparent; } .menuitemtop:hover>* { - margin:4px 2px 0 2px; + margin:6px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; From ef8dc1fc03b899cc66eaad684d24d265bda78761 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 12:47:21 +0600 Subject: [PATCH 05/29] Icons changes --- ...ngs-services.cancel-uncolored-symbolic.svg | 50 +---------------- ...l-settings-services.important-symbolic.svg | 56 +------------------ ....ubl-settings-services.lookup-symbolic.svg | 56 +------------------ 3 files changed, 3 insertions(+), 159 deletions(-) diff --git a/icons/com.ublinux.ubl-settings-services.cancel-uncolored-symbolic.svg b/icons/com.ublinux.ubl-settings-services.cancel-uncolored-symbolic.svg index aa858f9..cd84b0e 100644 --- a/icons/com.ublinux.ubl-settings-services.cancel-uncolored-symbolic.svg +++ b/icons/com.ublinux.ubl-settings-services.cancel-uncolored-symbolic.svg @@ -1,49 +1 @@ - - - - - - - - - - + \ No newline at end of file diff --git a/icons/com.ublinux.ubl-settings-services.important-symbolic.svg b/icons/com.ublinux.ubl-settings-services.important-symbolic.svg index ff8d4b3..1ba5b9e 100644 --- a/icons/com.ublinux.ubl-settings-services.important-symbolic.svg +++ b/icons/com.ublinux.ubl-settings-services.important-symbolic.svg @@ -1,55 +1 @@ - - - - - - image/svg+xml - - - - - - - - + \ No newline at end of file diff --git a/icons/com.ublinux.ubl-settings-services.lookup-symbolic.svg b/icons/com.ublinux.ubl-settings-services.lookup-symbolic.svg index f442cd0..163827f 100644 --- a/icons/com.ublinux.ubl-settings-services.lookup-symbolic.svg +++ b/icons/com.ublinux.ubl-settings-services.lookup-symbolic.svg @@ -1,55 +1 @@ - - - - - - - - - - - - + \ No newline at end of file From 9ced914ce1348ceefa5f5d13041452cdac886d13 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 14:50:09 +0600 Subject: [PATCH 06/29] Update crash fix --- source/ubl-settings-services.c | 45 ++++++++++++++++++++-------------- source/ubl-settings-services.h | 1 + 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 5946271..bb111a0 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -12,23 +12,25 @@ void yon_load_proceed(YON_CONFIG_TYPE type){ } 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); + g_thread_new("",(GThreadFunc)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); + g_thread_new("",(GThreadFunc)yon_interface_update,widgets); + main_config.load_mode=0; + } } @@ -375,9 +377,11 @@ 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){ @@ -459,6 +463,7 @@ void *yon_interface_update(main_window *widgets){ } textdomain(LocaleName); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(widgets->liststore2)); + main_config.update_thread_active=0; return NULL; } @@ -572,6 +577,7 @@ 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){ @@ -662,7 +668,10 @@ 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; + g_thread_new("",(GThreadFunc)yon_interface_update,widgets); + } } int main(int argc, char *argv[]){ diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index aca45c8..4df1a05 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -67,6 +67,7 @@ typedef struct { GtkTreeModel *AutolaunchFilter; GtkTreeModel *StoppedFilter; GtkTreeModel *BlockedFilter; + int update_thread_active; } config; From 5bdef3306e0720d44509b9ddce23b7e6ac0a143a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 15:02:39 +0600 Subject: [PATCH 07/29] Sensitivity logic for main window buttons --- source/ubl-settings-services.c | 18 ++++++++++++++++++ source/ubl-settings-services.h | 2 ++ ubl-settings-services.glade | 7 +++++++ 3 files changed, 27 insertions(+) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index bb111a0..1111c33 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -598,6 +598,23 @@ void on_activate(GtkTreeView *self, main_window *widgets){ 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] * @@ -654,6 +671,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); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 4df1a05..5647ff6 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -226,6 +226,8 @@ void yon_load_proceed(YON_CONFIG_TYPE type); void config_init(); +void on_tree_selection_changed(GtkWidget *self, main_window *widgets); + void yon_main_window_complete(main_window *widgets); diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 4b2b7b1..0e0d092 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -183,6 +183,7 @@ True + False True True Toggle autostart at configuration @@ -200,6 +201,7 @@ True + False True True Toggle autostop at configuration @@ -217,6 +219,7 @@ True + False True True Toggle service blocking at configuration @@ -234,6 +237,7 @@ True + False True True Toggle autostart at system @@ -251,6 +255,7 @@ True + False True True Launch service @@ -268,6 +273,7 @@ True + False True True Check service status @@ -285,6 +291,7 @@ True + False True True Check service log From b83d174e03a449d7586521c30f95aa3b5add166d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 15:06:59 +0600 Subject: [PATCH 08/29] comments removal --- source/ubl-settings-services.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 1111c33..aa9d754 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -367,6 +367,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); @@ -490,12 +494,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); @@ -553,7 +554,6 @@ gboolean on_context_menu_open(GtkWidget *self,GdkEventButton *event, main_window widgets->RMBMenu=menu; widgets->menu=menu_object; gtk_widget_show_all(widgets->RMBMenu); - // gtk_widget_show_all(widgets->menu->Menu); gtk_menu_popup_at_pointer(GTK_MENU(menu),NULL); return 0; } @@ -656,7 +656,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); From a740dd36120e21b5897fea40ae7f1a14dc006af8 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 15:24:01 +0600 Subject: [PATCH 09/29] Css margins changed --- ubl-settings-services.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ubl-settings-services.css b/ubl-settings-services.css index 805d83c..4629067 100644 --- a/ubl-settings-services.css +++ b/ubl-settings-services.css @@ -39,7 +39,7 @@ background:transparent; } .menuitemmiddlemargin{ - margin-top: 6px; + margin-top: 8px; } .menuitemtop{ @@ -50,7 +50,7 @@ background:transparent; border-right-width:inherit; } .menuitemtop >*{ - margin:6px 2px 0 2px; + margin:8px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } @@ -85,7 +85,7 @@ background:transparent; } .menuitemtop:hover>* { - margin:6px 2px 0 2px; + margin:8px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; From b31163d84a757748f50cd9f52ab4f8021affe6a6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 17:14:34 +0600 Subject: [PATCH 10/29] Build fix --- source/ubl-settings-services.h | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 5647ff6..db967f4 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -230,6 +230,7 @@ void on_tree_selection_changed(GtkWidget *self, main_window *widgets); void yon_main_window_complete(main_window *widgets); +void on_log_show(); gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); From 34a2b3929e701b563c0d2fd45b6b5ba0af25700f Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 2 Feb 2024 17:19:34 +0600 Subject: [PATCH 11/29] Added cooldown for configuration updates --- source/ubl-settings-services.c | 11 +++++++++-- source/ubl-settings-services.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index aa9d754..957bedf 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -368,7 +368,7 @@ void on_info_clicked(GtkWidget *self, main_window *widgets){ } void on_log_show(){ - + } void *yon_unthreaded_config_load(void *widgets){ @@ -388,6 +388,12 @@ void on_update(GtkWidget *self,main_window *widgets){ } } +void *update_delay(void*){ + sleep(1); + main_config.update_thread_active=0; + return NULL; +} + void *yon_interface_update(main_window *widgets){ int size; GtkTreeIter iter; @@ -467,7 +473,8 @@ void *yon_interface_update(main_window *widgets){ } textdomain(LocaleName); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(widgets->liststore2)); - main_config.update_thread_active=0; + g_thread_new("",(GThreadFunc)update_delay,NULL); + return NULL; } diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index db967f4..77313df 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -232,6 +232,8 @@ void yon_main_window_complete(main_window *widgets); void on_log_show(); +void *update_delay(void*); + gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_socket_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); From c5ebcbc846edc921dabe0c40a55e3a4a4515f372 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 5 Feb 2024 11:10:37 +0600 Subject: [PATCH 12/29] changed service parameters and sections --- source/ubl-settings-services.c | 52 +++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 957bedf..50a3d17 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -5,7 +5,7 @@ config main_config; //functions void yon_load_proceed(YON_CONFIG_TYPE type){ - if (yon_config_load_register(type,"config","SERVICESSTART SERVICESNOSTART SERVICESMASK",NULL)){ + if (yon_config_load_register(type,"system","SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK",NULL)){ } @@ -35,16 +35,16 @@ void on_config_global_load(GtkWidget *self,main_window *widgets){ } void on_config_global_local_save(){ - yon_save_proceed(NULL,YON_CONFIG_BOTH,"config","SERVICESSTART SERVICESNOSTART SERVICESMASK",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 SERVICESMASK",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 SERVICESMASK",NULL); + yon_save_proceed("global",YON_CONFIG_GLOBAL,"system","SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK",NULL); } @@ -114,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("SERVICESSTART"); + 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("SERVICESSTART",name,",")){ - yon_config_register("SERVICESSTART","[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("SERVICESSTART",yon_char_parsed_to_string(parsed,size,",")); - else yon_config_remove_by_key("SERVICESSTART"); + 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); @@ -148,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("SERVICESNOSTART"); + 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("SERVICESNOSTART",name,",")){ - yon_config_register("SERVICESNOSTART","[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("SERVICESNOSTART",yon_char_parsed_to_string(parsed,size,",")); - else yon_config_remove_by_key("SERVICESNOSTART"); + 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); @@ -183,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("SERVICESMASK"); + 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("SERVICESMASK",name,",")){ - yon_config_register("SERVICESMASK","[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("SERVICESMASK",yon_char_parsed_to_string(parsed,size,",")); - else yon_config_remove_by_key("SERVICESMASK"); + 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); @@ -419,9 +419,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("SERVICESSTART"); - char *stop = yon_config_get_by_key("SERVICESSROP"); - char *block = yon_config_get_by_key("SERVICESMASK"); + 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'; @@ -474,7 +474,13 @@ void *yon_interface_update(main_window *widgets){ textdomain(LocaleName); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),GTK_TREE_MODEL(widgets->liststore2)); g_thread_new("",(GThreadFunc)update_delay,NULL); - + int type_active=0; + if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); + } if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); + } + // gdk_threads_add_idle() return NULL; } From f8ec5d9e6aa1893349735e02bcceabe9c1b6768c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 5 Feb 2024 18:01:44 +0600 Subject: [PATCH 13/29] Fixed filtering canceling while updating --- source/ubl-settings-services.c | 15 ++++++++++++++- source/ubl-settings-services.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 50a3d17..c12d032 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -15,6 +15,13 @@ void on_config_local_load(GtkWidget *self,main_window *widgets){ if (!main_config.update_thread_active){ main_config.update_thread_active=1; if (self){}; + g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo),0); + + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); 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); @@ -26,6 +33,13 @@ void on_config_global_load(GtkWidget *self,main_window *widgets){ if (!main_config.update_thread_active){ main_config.update_thread_active=1; if (self){}; + g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo),0); + + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); 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); @@ -480,7 +494,6 @@ void *yon_interface_update(main_window *widgets){ } if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); } - // gdk_threads_add_idle() return NULL; } diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 77313df..f0801d7 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -1,4 +1,5 @@ #include +#include #include #include #include From 8f5aa4a04ab0015c5d0ab3e28bd947d65f205102 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 6 Feb 2024 10:15:58 +0600 Subject: [PATCH 14/29] Fixed filtering after updating --- source/ubl-settings-services.c | 64 ++++++++++++++++++---------------- source/ubl-settings-services.h | 2 +- 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index c12d032..3f4ae0e 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -15,13 +15,6 @@ void on_config_local_load(GtkWidget *self,main_window *widgets){ if (!main_config.update_thread_active){ main_config.update_thread_active=1; if (self){}; - g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); - g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo),0); - - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); 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); @@ -33,13 +26,6 @@ void on_config_global_load(GtkWidget *self,main_window *widgets){ if (!main_config.update_thread_active){ main_config.update_thread_active=1; if (self){}; - g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); - g_signal_handlers_block_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo),0); - - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceTypeCombo),on_type_changed,widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ServiceSourceCombo),on_source_changed,widgets); 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); @@ -402,9 +388,35 @@ void on_update(GtkWidget *self,main_window *widgets){ } } -void *update_delay(void*){ +void *update_delay(main_window *widgets){ sleep(1); main_config.update_thread_active=0; + 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_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter)); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.ServiceFilter); + break; + case 2: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.SocketFilter)); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.SocketFilter); + break; + case 3: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.AutolaunchFilter)); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.AutolaunchFilter); + break; + case 4: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.StoppedFilter)); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.StoppedFilter); + break; + case 5: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.BlockedFilter)); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.BlockedFilter); + break; + } + 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; } @@ -479,21 +491,13 @@ void *yon_interface_update(main_window *widgets){ } free(name_parsed); } - 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)); - g_thread_new("",(GThreadFunc)update_delay,NULL); - int type_active=0; - if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); - } if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); - } + g_thread_new("",(GThreadFunc)update_delay,widgets); + // int type_active=0; + // if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ + // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); + // } if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ + // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); + // } return NULL; } diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index f0801d7..b40b4ff 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -233,7 +233,7 @@ void yon_main_window_complete(main_window *widgets); void on_log_show(); -void *update_delay(void*); +void *update_delay(main_window *widgets); gboolean on_service_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); From 64ed79ce0a6d6e894cf9ebe7f03665790dc2b8c4 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 6 Feb 2024 17:07:17 +0600 Subject: [PATCH 15/29] Update button rework --- source/ubl-settings-services.c | 84 ++++++++++++++++++++++++++-------- source/ubl-settings-services.h | 12 +++-- 2 files changed, 73 insertions(+), 23 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 3f4ae0e..b1c4d60 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -17,7 +17,7 @@ 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); + gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); main_config.load_mode=1; } } @@ -28,7 +28,7 @@ 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); + gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); main_config.load_mode=0; } @@ -243,12 +243,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){}; @@ -295,6 +289,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))){ @@ -322,6 +336,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){ @@ -389,7 +418,6 @@ void on_update(GtkWidget *self,main_window *widgets){ } void *update_delay(main_window *widgets){ - sleep(1); main_config.update_thread_active=0; 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)); @@ -410,6 +438,17 @@ void *update_delay(main_window *widgets){ gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),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 source_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo)); + if (source_mode==1){ + gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_system_filter,NULL,NULL); + } else if (source_mode==2){ + gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_user_filter,NULL,NULL); + } textdomain(template_ui_LocaleName); if (main_config.load_mode){ yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); @@ -420,12 +459,16 @@ void *update_delay(main_window *widgets){ return NULL; } -void *yon_interface_update(main_window *widgets){ +gboolean yon_interface_update(main_window *widgets){ + gtk_widget_set_sensitive(widgets->UpdateButton,0); int size; + int size_users; GtkTreeIter iter; gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),NULL); config_str services = yon_config_load(load_services_command,&size); + config_str users_services = yon_config_load(load_user_services_command,&size_users); for (int i=0;iliststore2,&iter,5,parsed[0],6,description,7,type,-1); + int user_service=0; + if (yon_char_parsed_check_exist(users_services,size_users,parsed[0])!=-1){ + 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); @@ -490,15 +537,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(); } - g_thread_new("",(GThreadFunc)update_delay,widgets); - // int type_active=0; - // if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ - // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); - // } if (!(type_active=gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo)))){ - // gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ServiceTypeCombo),type_active); - // } - 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){ @@ -694,6 +737,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); @@ -718,7 +762,7 @@ void yon_main_window_complete(main_window *widgets){ yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); if (!main_config.update_thread_active){ main_config.update_thread_active=1; - g_thread_new("",(GThreadFunc)yon_interface_update,widgets); + gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); } } diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index b40b4ff..a8b683e 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -33,6 +33,8 @@ #define LocaleName "ubl-settings-services" #define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' -e 's/running /running;/g' -e 's/inactive /inactive;/g'" +#define load_user_services_command yon_char_unite("su -l ",yon_ubl_root_user_get()," -c \"systemctl --user list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'\"",NULL) +#define load_system_services_command "systemctl --system list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'" #define load_enabled_command "systemctl list-unit-files --type=service --type=socket --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:" #define load_launched_command "systemctl list-units --type=service --type=socket --no-pager --state=active --all --no-legend|sed -e 's/^ //g' -e 's/ */:/g' |cut -f1 -d:" #define service_start_command(target) yon_char_append("systemctl start --no-pager ",target) @@ -68,6 +70,8 @@ typedef struct { GtkTreeModel *AutolaunchFilter; GtkTreeModel *StoppedFilter; GtkTreeModel *BlockedFilter; + + GtkTreeModel *SourceFilter; int update_thread_active; } config; @@ -183,7 +187,7 @@ void on_config_local_save(); void on_config_global_save(); -void *yon_interface_update(main_window *widgets); +gboolean yon_interface_update(main_window *widgets); GtkWidget *yon_menu_button_create(char *icon_name, char *text); @@ -207,8 +211,6 @@ void on_system_launch_clicked(); gboolean yon_service_source_check(GtkTreeModel *model, GtkTreeIter *iter, void *data); -void on_source_changed(GtkWidget *self, main_window *widgets); - gboolean yon_service_type_check(GtkTreeModel *model, GtkTreeIter *iter,void *data); void on_type_changed(GtkWidget *self, main_window *widgets); @@ -245,6 +247,10 @@ gboolean on_stopped_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); gboolean on_blocked_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); +gboolean on_source_user_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); + +gboolean on_source_system_filter(GtkTreeModel *model, GtkTreeIter *iter,void *data); + terminal_window *yon_terminal_window_new(); void on_service_update(GtkWidget *self, terminal_window* window); \ No newline at end of file From 0ed2bc04ab91e76e5f8e5293fba59c16ae343c68 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 09:44:21 +0600 Subject: [PATCH 16/29] User services fixes --- source/ubl-settings-services.c | 25 +++++++++++++++++++------ source/ubl-settings-services.h | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index b1c4d60..ccba768 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -466,7 +466,8 @@ gboolean yon_interface_update(main_window *widgets){ GtkTreeIter iter; gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),NULL); config_str services = yon_config_load(load_services_command,&size); - config_str users_services = yon_config_load(load_user_services_command,&size_users); + char *command = load_user_services_command; + config_str users_services = yon_config_load(command,&size_users); for (int i=0;iliststore2,&iter,5,parsed[0],6,description,7,type,8,user_service,-1); } + for (int i=0;iliststore2,&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; @@ -656,11 +669,11 @@ void config_init(){ 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; diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index a8b683e..7e00a53 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -33,7 +33,7 @@ #define LocaleName "ubl-settings-services" #define load_services_command "systemctl list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' -e 's/running /running;/g' -e 's/inactive /inactive;/g'" -#define load_user_services_command yon_char_unite("su -l ",yon_ubl_root_user_get()," -c \"systemctl --user list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'\"",NULL) +#define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g'",NULL) #define load_system_services_command "systemctl --system list-units --type=service --type=socket --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'" #define load_enabled_command "systemctl list-unit-files --type=service --type=socket --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:" #define load_launched_command "systemctl list-units --type=service --type=socket --no-pager --state=active --all --no-legend|sed -e 's/^ //g' -e 's/ */:/g' |cut -f1 -d:" From 379949aeac017505eda8bd2af5dd7effd0698b50 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 09:49:22 +0600 Subject: [PATCH 17/29] Fixed loading blocking --- source/ubl-settings-services.c | 61 +++++++++++++++++----------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index ccba768..aced692 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -418,37 +418,38 @@ void on_update(GtkWidget *self,main_window *widgets){ } void *update_delay(main_window *widgets){ + on_type_changed(NULL,widgets); main_config.update_thread_active=0; - 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_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter)); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.ServiceFilter); - break; - case 2: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.SocketFilter)); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.SocketFilter); - break; - case 3: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.AutolaunchFilter)); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.AutolaunchFilter); - break; - case 4: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.StoppedFilter)); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.StoppedFilter); - break; - case 5: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.BlockedFilter)); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),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 source_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo)); - if (source_mode==1){ - gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_system_filter,NULL,NULL); - } else if (source_mode==2){ - gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_user_filter,NULL,NULL); - } + // 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_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter)); + // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.ServiceFilter); + // break; + // case 2: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.SocketFilter)); + // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.SocketFilter); + // break; + // case 3: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.AutolaunchFilter)); + // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.AutolaunchFilter); + // break; + // case 4: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.StoppedFilter)); + // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.StoppedFilter); + // break; + // case 5: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.BlockedFilter)); + // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),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 source_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo)); + // if (source_mode==1){ + // gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_system_filter,NULL,NULL); + // } else if (source_mode==2){ + // gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_user_filter,NULL,NULL); + // } textdomain(template_ui_LocaleName); if (main_config.load_mode){ yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); From 62a73271422618a8e8b02c399183466c92447b50 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 09:49:52 +0600 Subject: [PATCH 18/29] Comments removal --- source/ubl-settings-services.c | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index aced692..0587809 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -420,36 +420,6 @@ void on_update(GtkWidget *self,main_window *widgets){ void *update_delay(main_window *widgets){ on_type_changed(NULL,widgets); main_config.update_thread_active=0; - // 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_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter)); - // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.ServiceFilter); - // break; - // case 2: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.SocketFilter)); - // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.SocketFilter); - // break; - // case 3: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.AutolaunchFilter)); - // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.AutolaunchFilter); - // break; - // case 4: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.StoppedFilter)); - // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),main_config.StoppedFilter); - // break; - // case 5: gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(main_config.BlockedFilter)); - // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->MainTree),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 source_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->ServiceSourceCombo)); - // if (source_mode==1){ - // gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_system_filter,NULL,NULL); - // } else if (source_mode==2){ - // gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(main_config.ServiceFilter),(GtkTreeModelFilterVisibleFunc)on_source_user_filter,NULL,NULL); - // } textdomain(template_ui_LocaleName); if (main_config.load_mode){ yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); From 070b3d5f2ce5b4bed4fbb8d318e81e5dc560584d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 Feb 2024 14:40:32 +0600 Subject: [PATCH 19/29] fixed services list copying after loading configuration --- source/ubl-settings-services.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 0587809..2000918 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -435,6 +435,7 @@ gboolean yon_interface_update(main_window *widgets){ 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; From 5e24179180b64feb5951715a7517d3db49fb5a5e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 8 Feb 2024 09:49:03 +0600 Subject: [PATCH 20/29] CSS style changes --- source/ubl-settings-services.c | 1 - ubl-settings-services.css | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 2000918..260f7a0 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -703,7 +703,6 @@ void yon_main_window_complete(main_window *widgets){ 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"); - gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddlemargin"); 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); diff --git a/ubl-settings-services.css b/ubl-settings-services.css index 4629067..805d83c 100644 --- a/ubl-settings-services.css +++ b/ubl-settings-services.css @@ -39,7 +39,7 @@ background:transparent; } .menuitemmiddlemargin{ - margin-top: 8px; + margin-top: 6px; } .menuitemtop{ @@ -50,7 +50,7 @@ background:transparent; border-right-width:inherit; } .menuitemtop >*{ - margin:8px 2px 0 2px; + margin:6px 2px 0 2px; padding: 3px 10px 3px 5px; border:transparent; } @@ -85,7 +85,7 @@ background:transparent; } .menuitemtop:hover>* { - margin:8px 2px 0 2px; + margin:6px 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; border-radius:2px; From b5b47b3112168b6e0e653552ed146b3cbbe01833 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 9 Feb 2024 14:43:09 +0600 Subject: [PATCH 21/29] Tooltip update; separators for buttons --- source/ubl-strings.h | 2 +- ubl-settings-services.css | 4 ---- ubl-settings-services.glade | 32 +++++++++++++++++++++++++++----- ubl-settings-services.pot | 2 +- ubl-settings-services_ru.po | 4 ++-- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 70f96df..762dfc9 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -30,7 +30,7 @@ #define AUTOSTOP_TOGGLE_LABEL _("Toggle autostop at configuration") #define BLOCK_TOGGLE_LABEL _("Toggle service blocking at configuration") #define SYSTEM_AUTOSTART_TOGGLE_LABEL _("Toggle autostart at system") -#define SYSTEM_LAUNCH_TOGGLE_LABEL _("Launch service") +#define SYSTEM_LAUNCH_TOGGLE_LABEL _("Launch/stop service") #define CHECKSTATUS_LABEL _("Check service status") #define LOG_LABEL _("Check service log") diff --git a/ubl-settings-services.css b/ubl-settings-services.css index 805d83c..e166326 100644 --- a/ubl-settings-services.css +++ b/ubl-settings-services.css @@ -37,10 +37,6 @@ background:transparent; border-left-width:inherit; border-right-width:inherit; } - -.menuitemmiddlemargin{ - margin-top: 6px; -} .menuitemtop{ margin-bottom:0px; diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 0e0d092..eea2101 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -234,6 +234,17 @@ 2 + + + True + False + + + False + True + 3 + + True @@ -249,7 +260,7 @@ False True - 3 + 4 @@ -258,7 +269,7 @@ False True True - Launch service + Launch/stop service image5