From 20501d742be9c5e03e356d94139255900b09948c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 18 Nov 2025 15:53:36 +0600 Subject: [PATCH 1/5] Fixed configuration edit button sensitivity --- source/ubl-settings-services.c | 25 ++++++++++++++++++------- source/ubl-settings-services.h | 1 + 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index b385c6e..996b36a 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -200,11 +200,11 @@ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid char *config_sting = yon_config_get_by_key("SERVICES_ENABLE"); int size; config_str parsed = yon_char_parse(config_sting,&size,","); - if (strstr(name,".service")){ - char *temp = yon_char_divide_search(name,".",-1); - free(name); - name = temp; - } + // if (strstr(name,".service")){ + // char *temp = yon_char_divide_search(name,".",-1); + // free(name); + // name = temp; + // } int place = yon_char_parsed_check_exist(parsed,size,name); if (status==0){ if (place ==-1){ @@ -215,7 +215,7 @@ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid } else { parsed = yon_char_parsed_rip(parsed,&size,place); if (parsed) - yon_config_set("SERVICES_ENABLE",yon_char_parsed_to_string(parsed,size,",")); + yon_config_register("SERVICES_ENABLE",SERVICES_ENABLE_get_command,yon_char_parsed_to_string(parsed,size,",")); else yon_config_remove_by_key("SERVICES_ENABLE"); } } @@ -223,7 +223,7 @@ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid if (place !=-1){ parsed = yon_char_parsed_rip(parsed,&size,place); if (parsed) - yon_config_set("SERVICES_ENABLE",yon_char_parsed_to_string(parsed,size,",")); + yon_config_register("SERVICES_ENABLE",SERVICES_ENABLE_get_command,yon_char_parsed_to_string(parsed,size,",")); else yon_config_remove_by_key("SERVICES_ENABLE"); } } @@ -608,6 +608,16 @@ void on_system_restart_clicked(GtkWidget *, main_window *widgets){ } } +void on_configs_selection_changed(GtkWidget *,main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ConfigMainTree)),&model,&iter)){ + gtk_widget_set_sensitive(widgets->ConfigEditButton,1); + } else { + gtk_widget_set_sensitive(widgets->ConfigEditButton,0); + } +} + void on_sessions_selection_changed(GtkWidget *, main_window *widgets){ GtkTreeIter iter; GtkTreeModel *model; @@ -2084,6 +2094,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SessionStopButton),"clicked",G_CALLBACK(on_session_end),widgets); g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_block),widgets); g_signal_connect(G_OBJECT(widgets->SessionMainTree),"cursor-changed",G_CALLBACK(on_sessions_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->ConfigMainTree),"cursor-changed",G_CALLBACK(on_configs_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->SystemServicesStatusMenuItem),"activate",G_CALLBACK(on_system_services_status),widgets); g_signal_connect(G_OBJECT(widgets->InstalledUnitsStatusMenuItem),"activate",G_CALLBACK(on_units_status),widgets); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 4f005d3..ad2e3ee 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -591,4 +591,5 @@ void on_sort_activate(GtkTreeViewColumn *self, main_window *widgets); gboolean sort_bool(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,gpointer col); gboolean sort_string(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,gpointer col); void yon_service_update(main_window *widgets); +void on_configs_selection_changed(GtkWidget *,main_window *widgets); #endif \ No newline at end of file From 721b06ffe69891bb2f98d796a2a259fc6b38b008 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 18 Nov 2025 16:09:32 +0600 Subject: [PATCH 2/5] Fixed sensitiveness without root --- source/ubl-settings-services.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 996b36a..733b7c3 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -2211,6 +2211,13 @@ void yon_main_window_complete(main_window *widgets){ } yon_save_window_set_postsave_function(on_save_done,widgets); + if (getuid()){ + gtk_widget_set_sensitive(widgets->SystemUnitsTree,0); + gtk_widget_set_sensitive(widgets->UserUnitsTree,0); + gtk_widget_set_sensitive(widgets->ConfigMainTree,0); + gtk_widget_set_sensitive(widgets->SessionMainTree,0); + gtk_widget_set_sensitive(widgets->TimersMainTree,0); + } } int main(int argc, char *argv[]){ From 638da4eaa49815ee4f57a5b9e5bcbc23d2a94e9d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 18 Nov 2025 16:21:26 +0600 Subject: [PATCH 3/5] Localisation fixes --- locale/ubl-settings-services.pot | 12 ++++++++++++ locale/ubl-settings-services_ru.po | 14 +++++++++++++- source/ubl-strings.h | 6 +++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/locale/ubl-settings-services.pot b/locale/ubl-settings-services.pot index c8290b0..6d6ea29 100644 --- a/locale/ubl-settings-services.pot +++ b/locale/ubl-settings-services.pot @@ -654,3 +654,15 @@ msgstr "" #: source/ubl-strings.h:180 msgid "Masked" msgstr "" + +#: source/ubl-strings.h:180 +msgid "Unit information" +msgstr "" + +#: source/ubl-strings.h:180 +msgid "Unit source file" +msgstr "" + +#: source/ubl-strings.h:180 +msgid "Unit properties" +msgstr "" diff --git a/locale/ubl-settings-services_ru.po b/locale/ubl-settings-services_ru.po index 238f72d..74a769f 100644 --- a/locale/ubl-settings-services_ru.po +++ b/locale/ubl-settings-services_ru.po @@ -740,4 +740,16 @@ msgstr "Вылючен" #: source/ubl-strings.h:180 msgid "Masked" -msgstr "Выключен" \ No newline at end of file +msgstr "Выключен" + +#: source/ubl-strings.h:180 +msgid "Unit information" +msgstr "Информация о юните" + +#: source/ubl-strings.h:180 +msgid "Unit source file" +msgstr "Исходный файл юнита" + +#: source/ubl-strings.h:180 +msgid "Unit properties" +msgstr "Свойства юнита" \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index bfe3958..3098384 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -192,4 +192,8 @@ #define STATE_MOUNTED_TOOLTIP_LABEL _("Mounted") #define STATE_PLUGGED_TOOLTIP_LABEL _("Plugged") #define STATE_ABANDONED_TOOLTIP_LABEL _("Abandoned") -#define AUTOSTART_STATUS_TOOLTIP_LABEL _("Autostart:") \ No newline at end of file +#define AUTOSTART_STATUS_TOOLTIP_LABEL _("Autostart:") + +#define UNIT_INFO_TOOLTIP_LABEL _("Unit information") +#define UNIT_SOURCE_FILE_TOOLTIP_LABEL _("Unit source file") +#define UNIT_PROPERTIES_TOOLTIP_LABEL _("Unit properties") \ No newline at end of file From b1e4024cf0c07882a663caa84ed2f0760a0b6dac Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Nov 2025 10:51:37 +0600 Subject: [PATCH 4/5] Test fix for units state configuration save --- source/ubl-settings-services.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 733b7c3..fda10c3 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -200,12 +200,16 @@ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid char *config_sting = yon_config_get_by_key("SERVICES_ENABLE"); int size; config_str parsed = yon_char_parse(config_sting,&size,","); - // if (strstr(name,".service")){ - // char *temp = yon_char_divide_search(name,".",-1); - // free(name); - // name = temp; - // } + char *additional_name = NULL; + if (strstr(name,".service")){ + char *temp = yon_char_new(name); + additional_name = yon_char_divide_search(temp,".",-1); + free(temp); + } int place = yon_char_parsed_check_exist(parsed,size,name); + if (place==-1){ + place = yon_char_parsed_check_exist(parsed,size,additional_name); + } if (status==0){ if (place ==-1){ if (yon_char_parsed_check_exist(parsed,size,unit)==-1){ @@ -265,12 +269,16 @@ void on_config_autostop_clicked(GtkCellRenderer *, char *path, main_window *widg char *config_sting = yon_config_get_by_key("SERVICES_DISABLE"); int size; config_str parsed = yon_char_parse(config_sting,&size,","); + char *additional_name = NULL; if (strstr(name,".service")){ - char *temp = yon_char_divide_search(name,".",-1); - free(name); - name = temp; + char *temp = yon_char_new(name); + additional_name = yon_char_divide_search(temp,".",-1); + free(temp); } int place = yon_char_parsed_check_exist(parsed,size,name); + if (place==-1){ + place = yon_char_parsed_check_exist(parsed,size,additional_name); + } if (status==0){ if (place ==-1){ if (yon_char_parsed_check_exist(parsed,size,unit)==-1){ @@ -328,12 +336,16 @@ void on_config_block_clicked(GtkCellRenderer *, char *path, main_window *widgets char *config_sting = yon_config_get_by_key(SERVICES_MASK_parameter); int size; config_str parsed = yon_char_parse(config_sting,&size,","); + char *additional_name = NULL; if (strstr(name,".service")){ - char *temp = yon_char_divide_search(name,".",-1); - free(name); - name = temp; + char *temp = yon_char_new(name); + additional_name = yon_char_divide_search(temp,".",-1); + free(temp); } int place = yon_char_parsed_check_exist(parsed,size,name); + if (place==-1){ + place = yon_char_parsed_check_exist(parsed,size,additional_name); + } if (status==0){ if (place ==-1){ if (yon_char_parsed_check_exist(parsed,size,unit)==-1){ From 756096cb8955db802819f5eba452b21e8e3cece9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 19 Nov 2025 13:46:42 +0600 Subject: [PATCH 5/5] Fixed sensitiveness; Fixed status message without root --- source/ubl-settings-services.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index fda10c3..2b5c070 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1410,9 +1410,15 @@ gboolean yon_interface_update_finish(main_window *widgets){ } } main_config.update_thread_active=0; - char *final = yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ",main_config.load_mode==YON_CONFIG_GLOBAL?yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),NULL); - yon_ubl_status_box_render(final,BACKGROUND_IMAGE_SUCCESS_TYPE); - free(final); + if (!getuid()){ + char *final = yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ",main_config.load_mode==YON_CONFIG_GLOBAL?yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),NULL); + yon_ubl_status_box_render(final,BACKGROUND_IMAGE_SUCCESS_TYPE); + free(final); + } else { + textdomain(template_ui_LocaleName); + yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + textdomain(LocaleName); + } return G_SOURCE_REMOVE; } @@ -2223,13 +2229,6 @@ void yon_main_window_complete(main_window *widgets){ } yon_save_window_set_postsave_function(on_save_done,widgets); - if (getuid()){ - gtk_widget_set_sensitive(widgets->SystemUnitsTree,0); - gtk_widget_set_sensitive(widgets->UserUnitsTree,0); - gtk_widget_set_sensitive(widgets->ConfigMainTree,0); - gtk_widget_set_sensitive(widgets->SessionMainTree,0); - gtk_widget_set_sensitive(widgets->TimersMainTree,0); - } } int main(int argc, char *argv[]){