From e2ddad7931915290a36676b0fb3f8fd8bd33fa37 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 May 2025 17:11:56 +0600 Subject: [PATCH 01/15] Localisation changes --- ubl-settings-services_ru.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ubl-settings-services_ru.po b/ubl-settings-services_ru.po index 348428b..7bbb134 100644 --- a/ubl-settings-services_ru.po +++ b/ubl-settings-services_ru.po @@ -269,7 +269,7 @@ msgid "" "If this is your active session, you will be taken to the login screen. Make " "sure to save all files before performing this operation." msgstr "" -"Если это ваша активная сессия, вы будете выведены в экран входа. Убедитесь, " +"Если это ваша активная сессия, вы будете переключены в экран входа. Убедитесь, " "что сохранили все файлы перед выполнением этой операции." #: source/ubl-strings.h:77 @@ -298,7 +298,7 @@ msgstr "Отключение автообновления юнита" #: source/ubl-strings.h:85 msgid "Switching to session" -msgstr "Переключение на сессию" +msgstr "Переключиться на сессию" #: source/ubl-strings.h:86 msgid "Session locking" -- 2.35.1 From a1beb6aefefa03a30212bba16939d07869395b57 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 7 May 2025 17:13:15 +0600 Subject: [PATCH 02/15] Localisation changes --- ubl-settings-services_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-services_ru.po b/ubl-settings-services_ru.po index 7bbb134..dcc38b7 100644 --- a/ubl-settings-services_ru.po +++ b/ubl-settings-services_ru.po @@ -269,7 +269,7 @@ msgid "" "If this is your active session, you will be taken to the login screen. Make " "sure to save all files before performing this operation." msgstr "" -"Если это ваша активная сессия, вы будете переключены в экран входа. Убедитесь, " +"Если это ваша активная сессия, вы будете переключены на экран входа. Убедитесь, " "что сохранили все файлы перед выполнением этой операции." #: source/ubl-strings.h:77 -- 2.35.1 From a3c00d1ebaad3c5be83705d70372c51e209bce7e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 14 May 2025 12:27:56 +0600 Subject: [PATCH 03/15] Services sort fixed --- source/ubl-settings-services-systemd.c | 22 +++++++++++++--------- source/ubl-settings-services.c | 5 ++++- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/source/ubl-settings-services-systemd.c b/source/ubl-settings-services-systemd.c index 86e8b5e..2e02265 100644 --- a/source/ubl-settings-services-systemd.c +++ b/source/ubl-settings-services-systemd.c @@ -82,15 +82,19 @@ dictionary *yon_systemd_get_list() { } } if (!found) { - systemd_struct *u = calloc(1, sizeof(systemd_struct)); - u->name = yon_char_new(name); - u->description = yon_char_new(""); - u->load = 0; - u->active = 0; - u->state = yon_char_new(""); - u->enable = 0; - - yon_dictionary_add_or_create_if_exists_with_data(dict, (char*)name, u); + char *temp_name = yon_char_new(name); + if (!yon_dictionary_get(&dict,temp_name)){ + systemd_struct *u = calloc(1, sizeof(systemd_struct)); + free(yon_char_divide(temp_name,yon_char_find_last(temp_name,'/'))); + u->name = temp_name; + u->description = yon_char_new(""); + u->load = 0; + u->active = 0; + u->state = _("disabled"); + u->enable = 0; + + yon_dictionary_add_or_create_if_exists_with_data(dict, (char*)temp_name, u); + } } sd_bus_message_exit_container(reply); } diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index d70246b..62ac971 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -2077,9 +2077,12 @@ void yon_main_window_complete(main_window *widgets){ gtk_tree_model_filter_set_visible_func(widgets->SystemFilter,(GtkTreeModelFilterVisibleFunc)yon_filter,widgets,NULL); for (int i=0;i<5;i++){ gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),i,(GtkTreeIterCompareFunc)sort_bool,GINT_TO_POINTER(i),NULL); + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->UserSort),i,(GtkTreeIterCompareFunc)sort_bool,GINT_TO_POINTER(i),NULL); } gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),5,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(13),NULL); - gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),6,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(6),NULL); + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),6,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(5),NULL); + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->UserSort),5,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(13),NULL); + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->UserSort),6,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(5),NULL); gtk_tree_view_set_search_column(GTK_TREE_VIEW(widgets->UserUnitsTree),5); yon_load_proceed(YON_CONFIG_LOCAL); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); -- 2.35.1 From 1d059a1e0df972020ff5e7a75b9fba17c9456491 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 15 May 2025 16:39:22 +0600 Subject: [PATCH 04/15] WIP service loading changes --- source/ubl-settings-services.c | 52 ++++++++++++++++++---------------- source/ubl-settings-services.h | 25 ++++++++++++++-- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 62ac971..3b6c00c 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1349,12 +1349,12 @@ void* yon_interface_update(main_window *widgets){ g_idle_add((GSourceFunc)yon_interface_list_models_disconnect,widgets); int system_size; config_str system_services = yon_config_load(load_services_command,&system_size); - int system_units_size; - config_str system_units = yon_config_load(load_system_units_command,&system_units_size); + // int system_units_size; + // config_str system_units = yon_config_load(load_system_units_command,&system_units_size); int user_size; - config_str user_services = yon_config_load(load_user_services_command,&user_size); - int user_units_size; - config_str user_units = yon_config_load(load_user_units_command,&user_units_size); + config_str user_services = yon_config_load(load_user_units_command,&user_size); + // int user_units_size; + // config_str user_units = yon_config_load(load_user_units_command,&user_units_size); int config_size; config_str config_files = yon_config_load(get_config_files_command,&config_size); int timers_size; @@ -1394,24 +1394,25 @@ void* yon_interface_update(main_window *widgets){ parsed[0]=yon_char_replace(name_temp,"\18","\\\\"); if (name_temp!=parsed[0]) free(name_temp); if (parsed){ + int enabled = !strcmp(parsed[5],"enabled"); int loaded = !strcmp(parsed[1],"loaded"); int active = !strcmp(parsed[2],"active"); enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]); gtk_list_store_append(widgets->SystemList,&iter); - gtk_list_store_set(widgets->SystemList,&iter,3,loaded,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,1,11,_(parsed[3]),13,parsed[3],-1); + gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); } } - for (int i=0;iSystemList,&iter); - enum YON_UNIT_TYPE type = yon_get_unit_type(system_units[i]); - gtk_list_store_set(widgets->SystemList,&iter,0,0,1,0,2,0,3,0,4,0,5,system_units[i],6,"",7,type,8,0,9,0,10,0,11,_("disabled"),13,"disabled",-1); + // for (int i=0;iSystemList,&iter); + // enum YON_UNIT_TYPE type = yon_get_unit_type(system_units[i]); + // gtk_list_store_set(widgets->SystemList,&iter,0,0,1,0,2,0,3,0,4,0,5,system_units[i],6,"",7,type,8,0,9,0,10,0,11,_("disabled"),13,"disabled",-1); - } - } + // } + // } // for (int i=0; iUserList,&iter); - gtk_list_store_set(widgets->UserList,&iter,3,loaded,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,1,11,_(parsed[3]),13,parsed[3],-1); + gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); } } - for (int i=0;iUserList,&iter); - enum YON_UNIT_TYPE type = yon_get_unit_type(user_units[i]); - gtk_list_store_set(widgets->UserList,&iter,0,0,1,0,2,0,3,0,4,0,5,user_units[i],6,"",7,type,8,0,9,0,10,0,11,_("disabled"),13,"disabled",-1); + // for (int i=0;iUserList,&iter); + // enum YON_UNIT_TYPE type = yon_get_unit_type(user_units[i]); + // gtk_list_store_set(widgets->UserList,&iter,0,0,1,0,2,0,3,0,4,0,5,user_units[i],6,"",7,type,8,0,9,0,10,0,11,_("disabled"),13,"disabled",-1); - } - } + // } + // } int descr_size; config_str config_descr = yon_resource_open_file(systemd_config_path,&descr_size); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 2eecd13..2e6c752 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -38,9 +38,30 @@ #define systemd_config_path "resource:///com/ublinux/csv/systemd_conf.csv" -#define load_services_command "systemctl list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'" +#define load_services_command \ +"systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic " \ +"--no-pager --all --no-legend show -- $( { " \ +"systemctl list-units --no-pager --all --plain --no-legend | sed -E 's/^([^ ]+).*/\\1/'; " \ +"systemctl list-unit-files --no-pager --no-legend | sed -E 's/^([^ ]+).*/\\1/'; " \ +"} | sed '/@\\./d' | sort -u ) | " \ +"awk 'BEGIN { RS=\"\"; FS=\"\\n\" } " \ +"{ for (i=1; i<=NF; i++) { split($i, kv, \"=\"); val[kv[1]] = kv[2]; } " \ +"print val[\"Names\"] \";\" val[\"LoadState\"] \";\" val[\"ActiveState\"] \";\" val[\"SubState\"] \";\" " \ +"val[\"Description\"] \";\" val[\"UnitFileState\"] \";\" val[\"ActiveEnterTimestampMonotonic\"] \";\" " \ +"val[\"InactiveEnterTimestampMonotonic\"]; delete val }'" + #define load_system_units_command "systemctl list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)(.*)/\\1/'" -#define load_user_units_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)(.*)/\\1;\\2;\\3;/'",NULL) +#define load_user_units_command yon_char_unite(\ +"systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic " \ +"--no-pager --all --no-legend show -- $( { " \ +"systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --no-pager --all --plain --no-legend | sed -E 's/^([^ ]+).*/\\1/'; " \ +"systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-unit-files --no-pager --no-legend | sed -E 's/^([^ ]+).*/\\1/'; " \ +"} | sed '/@\\./d' | sort -u ) | " \ +"awk 'BEGIN { RS=\"\"; FS=\"\\n\" } " \ +"{ for (i=1; i<=NF; i++) { split($i, kv, \"=\"); val[kv[1]] = kv[2]; } " \ +"print val[\"Names\"] \";\" val[\"LoadState\"] \";\" val[\"ActiveState\"] \";\" val[\"SubState\"] \";\" " \ +"val[\"Description\"] \";\" val[\"UnitFileState\"] \";\" val[\"ActiveEnterTimestampMonotonic\"] \";\" " \ +"val[\"InactiveEnterTimestampMonotonic\"]; delete val }'",NULL) #define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'",NULL) #define load_system_services_command "systemctl --system list-units --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 --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:" -- 2.35.1 From 63c3eadac36f541e839c1ff305dbf9e745f09383 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 15 May 2025 17:48:47 +0600 Subject: [PATCH 05/15] Services loading changes --- source/ubl-settings-services.c | 70 +++++++++++++++++++++++++++++++--- source/ubl-settings-services.h | 14 +++++++ 2 files changed, 79 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 3b6c00c..b0a715a 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1342,6 +1342,62 @@ gboolean yon_interface_update_finish(main_window *widgets){ return G_SOURCE_REMOVE; } +void yon_service_update(main_window *widgets){ + int active_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook)); + switch (active_page) + { + case 0:{ + GtkTreeModel *model; + GtkTreeIter iter; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)),&model,&iter); + char *target; + gtk_tree_model_get(model,&iter,5,&target,-1); + int size; + config_str new_info = yon_config_load(load_system_service_single(target),&size); + int parsed_size; + config_str parsed = yon_char_parse(new_info[0],&parsed_size,";"); + char *name_temp = yon_char_replace(parsed[0],"\\","\18"); + if (name_temp!=parsed[0]) free(parsed[0]); + parsed[0]=yon_char_replace(name_temp,"\18","\\\\"); + if (name_temp!=parsed[0]) free(name_temp); + if (parsed){ + int enabled = !strcmp(parsed[5],"enabled"); + int loaded = !strcmp(parsed[1],"loaded"); + int active = !strcmp(parsed[2],"active"); + enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]); + gtk_list_store_append(widgets->SystemList,&iter); + gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } + + } break; + case 1:{ + GtkTreeModel *model; + GtkTreeIter iter; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter); + char *target; + gtk_tree_model_get(model,&iter,5,&target,-1); + int size; + config_str new_info = yon_config_load(load_user_service_single(target),&size); + int parsed_size; + config_str parsed = yon_char_parse(new_info[0],&parsed_size,";"); + char *name_temp = yon_char_replace(parsed[0],"\\","\18"); + if (name_temp!=parsed[0]) free(parsed[0]); + parsed[0]=yon_char_replace(name_temp,"\18","\\\\"); + if (name_temp!=parsed[0]) free(name_temp); + if (parsed){ + int enabled = !strcmp(parsed[5],"enabled"); + int loaded = !strcmp(parsed[1],"loaded"); + int active = !strcmp(parsed[2],"active"); + enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]); + gtk_list_store_append(widgets->SystemList,&iter); + gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } + } break; + default: + break; + } +} + void* yon_interface_update(main_window *widgets){ // dictionary *dict = yon_systemd_get_list(); // if (dict){} @@ -1360,11 +1416,11 @@ void* yon_interface_update(main_window *widgets){ int timers_size; config_str timers = yon_config_load(get_timers_command,&timers_size); struct json_object *jsobject = json_tokener_parse(timers[0]); - int launched_size; - config_str launched = yon_config_load(load_launched_command,&launched_size); - for (int i=0;iSystemUnitsTree))); gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree))); + yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_INFO_TYPE); main_config.update_thread_active=1; g_thread_new("update",(GThreadFunc)yon_interface_update,widgets); } diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 2e6c752..b310dce 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -76,6 +76,19 @@ #define user_check_active_command(target) yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ is-active ",target,NULL) #define user_check_enabled_command(target) yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ is-enabled ",target,NULL) +#define load_system_service_single(target) yon_char_unite("systemctl --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- ",target,\ +"awk 'BEGIN { RS=\"\"; FS=\"\\n\" } " \ +"{ for (i=1; i<=NF; i++) { split($i, kv, \"=\"); val[kv[1]] = kv[2]; } " \ +"print val[\"Names\"] \";\" val[\"LoadState\"] \";\" val[\"ActiveState\"] \";\" val[\"SubState\"] \";\" " \ +"val[\"Description\"] \";\" val[\"UnitFileState\"] \";\" val[\"ActiveEnterTimestampMonotonic\"] \";\" " \ +"val[\"InactiveEnterTimestampMonotonic\"]; delete val }'",NULL) +#define load_user_service_single(target) yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ --property=Names,Description,LoadState,ActiveState,SubState,UnitFileState,ActiveEnterTimestampMonotonic,InactiveEnterTimestampMonotonic --no-pager --all --no-legend show -- ",target,\ +"awk 'BEGIN { RS=\"\"; FS=\"\\n\" } " \ +"{ for (i=1; i<=NF; i++) { split($i, kv, \"=\"); val[kv[1]] = kv[2]; } " \ +"print val[\"Names\"] \";\" val[\"LoadState\"] \";\" val[\"ActiveState\"] \";\" val[\"SubState\"] \";\" " \ +"val[\"Description\"] \";\" val[\"UnitFileState\"] \";\" val[\"ActiveEnterTimestampMonotonic\"] \";\" " \ +"val[\"InactiveEnterTimestampMonotonic\"]; delete val }'",NULL) + #define service_info_command(target) yon_char_append("systemctl status -l --no-pager ",target) #define get_log_command(target) yon_char_append("journalctl --all --no-pager --unit ",target) #define show_source_command(target) yon_char_append("systemctl edit --full ",target) @@ -567,4 +580,5 @@ gboolean yon_interface_list_models_disconnect(main_window *widgets); 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); #endif \ No newline at end of file -- 2.35.1 From 93efb93f78fe7653d92514f1ff7e64cb0a2215c2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 May 2025 16:37:19 +0600 Subject: [PATCH 06/15] Fixed double service names --- source/ubl-settings-services.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index b0a715a..ce184b0 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1450,12 +1450,17 @@ void* yon_interface_update(main_window *widgets){ parsed[0]=yon_char_replace(name_temp,"\18","\\\\"); if (name_temp!=parsed[0]) free(name_temp); if (parsed){ + int names_size; + config_str names_parsed = yon_char_parse(parsed[0],&names_size," "); + for (int j=0;jSystemList,&iter); - gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } + yon_char_parsed_free(names_parsed,names_size); } } @@ -1502,12 +1507,17 @@ void* yon_interface_update(main_window *widgets){ int size; config_str parsed = yon_char_parse(user_services[i],&size,";"); if (parsed){ + int names_size; + config_str names_parsed = yon_char_parse(parsed[0],&names_size," "); + for (int j=0;jUserList,&iter); - gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } + yon_char_parsed_free(names_parsed,names_size); } } -- 2.35.1 From 58278909b0c6f9b34a60ce81f1eeee354918ab82 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 May 2025 17:12:31 +0600 Subject: [PATCH 07/15] Fixed autostart and autoblock checks to be checked together --- source/ubl-settings-services.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index ce184b0..36fc64a 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -184,14 +184,17 @@ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid { gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor); - gboolean status = 0; + gboolean status = 0,autoblock = 0; char *name; - gtk_tree_model_get(model,&iter,0,&status,5,&name,-1); + gtk_tree_model_get(model,&iter,0,&status,1,&autoblock,5,&name,-1); char *unit = yon_char_new(name); char *parsed_name = yon_char_divide(unit, yon_char_find_last(name,'.')); free(unit); unit=parsed_name; gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!status,-1); + if (!status&&autoblock){ + on_config_autostop_clicked(NULL,path,widgets); + } char *config_sting = yon_config_get_by_key("SERVICES_ENABLE"); int size; config_str parsed = yon_char_parse(config_sting,&size,","); @@ -246,14 +249,17 @@ void on_config_autostop_clicked(GtkCellRenderer *, char *path, main_window *widg { gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter); gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor); - gboolean status = 0; + gboolean status = 0,autostart=0; char *name; - gtk_tree_model_get(model,&iter,1,&status,5,&name,-1); + gtk_tree_model_get(model,&iter,0,&autostart,1,&status,5,&name,-1); char *unit = yon_char_new(name); char *parsed_name = yon_char_divide(unit, yon_char_find_last(name,'.')); free(unit); unit=parsed_name; gtk_list_store_set(GTK_LIST_STORE(model),&iter,1,!status,-1); + if (!status&&autostart){ + on_config_autostart_clicked(NULL,path,widgets); + } char *config_sting = yon_config_get_by_key("SERVICES_DISABLE"); int size; config_str parsed = yon_char_parse(config_sting,&size,","); -- 2.35.1 From 0afa0158d5ab4e56a31887067c736e8d197f6808 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 16 May 2025 17:52:38 +0600 Subject: [PATCH 08/15] Added default parameters --- source/ubl-settings-services.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index b310dce..cba57b9 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -128,7 +128,7 @@ #define config_get_global_command yon_char_new("ubconfig --source global get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK") #define config_get_default_command "" -#define config_get_global_only_parameters "" +#define config_get_global_only_parameters "ubconfig --source default get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK" #define config_get_local_only_parameters "" #define SERVICES_ENABLE_get_command "ubconfig --source global get [system] SERVICES_ENABLE" -- 2.35.1 From e6d6eaefa9caec4ecb7b4f68f1153676d7f29fae Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 May 2025 09:56:51 +0600 Subject: [PATCH 09/15] Fixed default config loading with custom config --- source/ubl-settings-services.c | 6 ++++-- source/ubl-settings-services.h | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 36fc64a..84645ae 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -31,9 +31,9 @@ void on_save_done(main_window *, config_str output, int size){ void yon_load_proceed(YON_CONFIG_TYPE type){ if (type!=YON_CONFIG_CUSTOM){ yon_config_clean(); + if (!yon_char_is_empty(config_get_default_command)) + yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); } - if (!yon_char_is_empty(config_get_default_command)) - yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); if (type==YON_CONFIG_GLOBAL){ yon_config_load_config(type,config_get_global_command,NULL); } else if (type==YON_CONFIG_LOCAL){ @@ -57,6 +57,8 @@ void yon_load_proceed(YON_CONFIG_TYPE type){ path=file; } yon_config_clean(); + if (!yon_char_is_empty(config_get_default_command)) + yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); char *command = yon_config_get_custom_command(path); yon_config_load_config(type,command,NULL); gtk_widget_destroy(dialog); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index cba57b9..940ecb9 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -126,9 +126,9 @@ #define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK",NULL) #define config_get_local_command "ubconfig --source system get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK" #define config_get_global_command yon_char_new("ubconfig --source global get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK") -#define config_get_default_command "" +#define config_get_default_command "ubconfig --source default get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK" -#define config_get_global_only_parameters "ubconfig --source default get system SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK" +#define config_get_global_only_parameters "" #define config_get_local_only_parameters "" #define SERVICES_ENABLE_get_command "ubconfig --source global get [system] SERVICES_ENABLE" -- 2.35.1 From a176e5c5fc8e7e5bdae71ff3dc36b3c639624004 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 May 2025 10:06:54 +0600 Subject: [PATCH 10/15] Table width changes --- ubl-settings-services.glade | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index c124c37..01455f3 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -950,6 +950,7 @@ True True + never True @@ -1566,6 +1567,7 @@ True True + never True @@ -1681,7 +1683,9 @@ True 6 - + + 250 + 5 -- 2.35.1 From 58ed2dd0aff693b173d282f4857c3bb55a721d9a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 19 May 2025 12:27:50 +0600 Subject: [PATCH 11/15] Added loading spinners; load mode changes --- source/ubl-settings-services.c | 36 +- source/ubl-settings-services.h | 10 + ubl-settings-services.glade | 998 +++++++++++++++++---------------- 3 files changed, 562 insertions(+), 482 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 84645ae..aaeb0df 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -74,7 +74,7 @@ void on_config_local_load(GtkWidget *,main_window *widgets){ yon_load_proceed(YON_CONFIG_LOCAL); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); g_thread_new("update",(GThreadFunc)yon_interface_update,widgets); - main_config.load_mode=1; + main_config.load_mode=YON_CONFIG_LOCAL; } } @@ -84,7 +84,7 @@ void on_config_global_load(GtkWidget *,main_window *widgets){ yon_load_proceed(YON_CONFIG_GLOBAL); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); g_thread_new("update",(GThreadFunc)yon_interface_update,widgets); - main_config.load_mode=0; + main_config.load_mode=YON_CONFIG_GLOBAL; } } @@ -94,7 +94,7 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ textdomain(template_ui_LocaleName); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName); - main_config.load_mode=3; + main_config.load_mode=YON_CONFIG_CUSTOM; g_thread_new("update",(GThreadFunc)yon_interface_update,widgets); } @@ -1157,6 +1157,11 @@ gboolean yon_interface_list_models_disconnect(main_window *widgets){ gtk_list_store_clear(widgets->UserList); gtk_list_store_clear(widgets->ConfigList); gtk_list_store_clear(widgets->TimersList); + gtk_spinner_start(GTK_SPINNER(widgets->SystemLoadingSpinner)); + gtk_spinner_start(GTK_SPINNER(widgets->UserLoadingSpinner)); + gtk_spinner_start(GTK_SPINNER(widgets->ConfigLoadingSpinner)); + gtk_spinner_start(GTK_SPINNER(widgets->SessionsLoadingSpinner)); + gtk_spinner_start(GTK_SPINNER(widgets->TimersLoadingSpinner)); g_signal_handlers_block_by_func(G_OBJECT(widgets->UserFiltersCombo),G_CALLBACK(on_filter_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->UserSearchEntry),G_CALLBACK(on_filter_changed),widgets); @@ -1178,6 +1183,11 @@ gboolean yon_interface_list_models_connect(main_window *widgets){ gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserSort)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ConfigMainTree),GTK_TREE_MODEL(widgets->ConfigList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->TimersMainTree),GTK_TREE_MODEL(widgets->TimersList)); + gtk_spinner_stop(GTK_SPINNER(widgets->SystemLoadingSpinner)); + gtk_spinner_stop(GTK_SPINNER(widgets->UserLoadingSpinner)); + gtk_spinner_stop(GTK_SPINNER(widgets->ConfigLoadingSpinner)); + gtk_spinner_stop(GTK_SPINNER(widgets->SessionsLoadingSpinner)); + gtk_spinner_stop(GTK_SPINNER(widgets->TimersLoadingSpinner)); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserFiltersCombo),G_CALLBACK(on_filter_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserSearchEntry),G_CALLBACK(on_filter_changed),widgets); @@ -1344,7 +1354,7 @@ 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==0?yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),NULL); + 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); return G_SOURCE_REMOVE; @@ -1716,7 +1726,7 @@ void config_init(){ main_config.lock_load_global=0; main_config.lock_save_global=0; main_config.lock_save_local=0; - main_config.load_mode=1; + main_config.load_mode=YON_CONFIG_LOCAL; main_config.update_thread_active=0; main_config.launch_arguments=NULL; main_config.launch_size=0; @@ -1902,6 +1912,17 @@ void yon_main_window_complete(main_window *widgets){ widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree"); widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); + widgets->SystemLoadingOverlay=yon_gtk_builder_get_widget(builder,"SystemLoadingOverlay"); + widgets->SystemLoadingSpinner=yon_gtk_builder_get_widget(builder,"SystemLoadingSpinner"); + widgets->UserLoadingOverlay=yon_gtk_builder_get_widget(builder,"UserLoadingOverlay"); + widgets->UserLoadingSpinner=yon_gtk_builder_get_widget(builder,"UserLoadingSpinner"); + widgets->ConfigLoadingOverlay=yon_gtk_builder_get_widget(builder,"ConfigLoadingOverlay"); + widgets->ConfigLoadingSpinner=yon_gtk_builder_get_widget(builder,"ConfigLoadingSpinner"); + widgets->SessionsLoadingOverlay=yon_gtk_builder_get_widget(builder,"SessionsLoadingOverlay"); + widgets->SessionsLoadingSpinner=yon_gtk_builder_get_widget(builder,"SessionsLoadingSpinner"); + widgets->TimersLoadingOverlay=yon_gtk_builder_get_widget(builder,"TiemrsLoadingOverlay"); + widgets->TimersLoadingSpinner=yon_gtk_builder_get_widget(builder,"TimersLoadingSpinner"); + widgets->TooltipBox=yon_gtk_builder_get_widget(builder,"TooltipBox"); widgets->NameLabel=yon_gtk_builder_get_widget(builder,"NameLabel"); widgets->DescriptionLabel=yon_gtk_builder_get_widget(builder,"DescriptionLabel"); @@ -2100,6 +2121,11 @@ void yon_main_window_complete(main_window *widgets){ gtk_widget_set_sensitive(widgets->SystemUpdateButton,0); gtk_widget_set_sensitive(widgets->SystemPrevButton,0); } + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->SystemLoadingOverlay),widgets->SystemLoadingSpinner); + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->UserLoadingOverlay),widgets->UserLoadingSpinner); + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->ConfigLoadingOverlay),widgets->ConfigLoadingSpinner); + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->SessionsLoadingOverlay),widgets->SessionsLoadingSpinner); + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TimersLoadingOverlay),widgets->TimersLoadingSpinner); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UserUnitsTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->ConfigMainTree)); diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 940ecb9..71b730e 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -241,6 +241,16 @@ typedef struct { rmb_menu_window *SystemMenu; GtkWidget *SystemServiceLabel; GtkWidget *SystemDescriptionLabel; + GtkWidget *SystemLoadingOverlay; + GtkWidget *SystemLoadingSpinner; + GtkWidget *UserLoadingOverlay; + GtkWidget *UserLoadingSpinner; + GtkWidget *ConfigLoadingOverlay; + GtkWidget *ConfigLoadingSpinner; + GtkWidget *SessionsLoadingOverlay; + GtkWidget *SessionsLoadingSpinner; + GtkWidget *TimersLoadingOverlay; + GtkWidget *TimersLoadingSpinner; GtkWidget *UserSearchEntry; GtkWidget *UserFiltersCombo; diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 01455f3..c9c9ebf 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -1,5 +1,5 @@ - + @@ -13,6 +13,14 @@ + + True + False + + + True + False + @@ -69,6 +77,10 @@ SystemFilter + + True + False + @@ -85,6 +97,10 @@ + + True + False + True False @@ -371,6 +387,10 @@ UserFilter + + True + False + True False @@ -907,180 +927,183 @@ 0 in - + True False - vertical - - - True - True - liststore1 - vertical - - - - - - fixed - Configure in configuration - - - - - fixed - Configure in system - - - - - autosize - Service - True - - - - - False - True - 0 - - - + True - True - never + False + vertical - + True True - SystemList - 5 - both - 12 - - - + liststore1 + vertical - True fixed - 20 - Autostart - True - 0 - - - - 0 - - + Configure in configuration - True fixed - 20 - Autostop - True - 1 - - - - 1 - - + Configure in system - True - fixed - 20 - Block + autosize + Service True - 2 - - - - 2 - - + + + False + True + 0 + + + + + True + True + never - - True - fixed - 20 - Autostart - True - 3 + + True + True + SystemList + 5 + both + 12 - - - 3 - + + True + fixed + 20 + Autostart + True + 0 + + + + 0 + + + - - - - - True - fixed - 20 - Launched - True - 4 - - - 4 - + + True + fixed + 20 + Autostop + True + 1 + + + + 1 + + + - - - - - True - 10 - 20 - Unit - True - 5 - - - 11 - + + True + fixed + 20 + Block + True + 2 + + + + 2 + + + - - - - - True - fixed - 20 - - True - 6 - - - 5 - + + True + fixed + 20 + Autostart + True + 3 + + + + 3 + + + + + + + True + fixed + 20 + Launched + True + 4 + + + + 4 + + + + + + + True + 10 + 20 + Unit + True + 5 + + + + 11 + + + + + + + True + fixed + 20 + + True + 6 + + + + 5 + + + + + True + True + 1 + - True - True - 1 + -1 @@ -1528,177 +1551,180 @@ 0.019999999552965164 in - + True False - vertical - - - True - True - liststore1 - - - - - - Configure in configuration - - - - - Configure in system - - - - - Service - True - - - - - False - True - 0 - - - + True - True - never + False + vertical - + True True - UserList - 5 - both - 12 - - - + liststore1 - True - fixed - 20 - Autostart - True - 0 - - - - 0 - - + Configure in configuration - True - fixed - 20 - Autostop - True - 1 - - - - 1 - - + Configure in system - True - fixed - 20 - Block + Service True - 2 - - - - 2 - - + + + False + True + 0 + + + + + True + True + never - - True - fixed - 20 - Autostart - True + + True + True + UserList + 5 + both + 12 - - - 3 - + + True + fixed + 20 + Autostart + True + 0 + + + + 0 + + + - - - - - True - fixed - 20 - Launched - True - 4 - - - 4 - + + True + fixed + 20 + Autostop + True + 1 + + + + 1 + + + - - - - - True - 10 - 20 - Unit - True - 5 - - - 11 - + + True + fixed + 20 + Block + True + 2 + + + + 2 + + + - - - - - autosize - 20 - - True - True - 6 - - 250 + + True + fixed + 20 + Autostart + True + + + + 3 + + + + + + + True + fixed + 20 + Launched + True + 4 + + + + 4 + + + + + + + True + 10 + 20 + Unit + True + 5 + + + + 11 + + + + + + + autosize + 20 + + True + True + 6 + + + 250 + + + 5 + + - - 5 - + + True + True + 1 + - True - True - 1 + -1 @@ -1889,63 +1915,69 @@ 0 in - + True - True + False - + True True - ConfigList - both - - - - - True - fixed - 20 - File - 0 + + True + True + ConfigList + both - - - 0 - + + True + fixed + 20 + File + 0 + + + + 0 + + + - - - - - True - fixed - 20 - Change date - 1 - - - 1 - + + True + fixed + 20 + Change date + 1 + + + + 1 + + + - - - - - 20 - Description - True - 2 - - - 2 - + + 20 + Description + True + 2 + + + + 2 + + + + + -1 + @@ -2104,105 +2136,111 @@ 0 in - + True - True + False - + True True - SessionsList - both - - - - - True - fixed - 20 - Session ID - 0 + + True + True + SessionsList + both - - - 0 - + + True + fixed + 20 + Session ID + 0 + + + + 0 + + + - - - - - True - fixed - 20 - Status - 1 - - - 1 - + + True + fixed + 20 + Status + 1 + + + + 1 + + + - - - - - True - fixed - 20 - User ID - 2 - - - 2 - + + True + fixed + 20 + User ID + 2 + + + + 2 + + + - - - - - True - fixed - 20 - User name - 3 - - - 3 - + + True + fixed + 20 + User name + 3 + + + + 3 + + + - - - - - 20 - Seat ID - 4 - - - 4 - + + 20 + Seat ID + 4 + + + + 4 + + + - - - - - 20 - TTY - True - - - 6 - + + 20 + TTY + True + + + + 6 + + + + + -1 + @@ -2278,108 +2316,114 @@ 0.019999999552965164 in - + True - True + False - + True True - TimersList - both - - - - - True - fixed - 20 - Timer - 0 + + True + True + TimersList + both - - - 0 - + + True + fixed + 20 + Timer + 0 + + + + 0 + + + - - - - - True - fixed - 20 - Next - 1 - - - 1 - + + True + fixed + 20 + Next + 1 + + + + 1 + + + - - - - - True - fixed - 20 - Left - 2 - - - 2 - + + True + fixed + 20 + Left + 2 + + + + 2 + + + - - - - - True - fixed - 20 - Last - 3 - - - 3 - + + True + fixed + 20 + Last + 3 + + + + 3 + + + - - - - - True - fixed - 20 - Passed - 4 - - - 4 - + + True + fixed + 20 + Passed + 4 + + + + 4 + + + - - - - - 20 - Activates - True - 5 - - - 5 - + + 20 + Activates + True + 5 + + + + 5 + + + + + -1 + -- 2.35.1 From b83fc259bacd5e91bfda9da0dd0aa5de22c504c1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 22 May 2025 13:43:26 +0600 Subject: [PATCH 12/15] Fixes --- source/ubl-settings-services.c | 12 +++++++++++- ubl-settings-services.glade | 29 +++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index aaeb0df..12c5c46 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1162,6 +1162,11 @@ gboolean yon_interface_list_models_disconnect(main_window *widgets){ gtk_spinner_start(GTK_SPINNER(widgets->ConfigLoadingSpinner)); gtk_spinner_start(GTK_SPINNER(widgets->SessionsLoadingSpinner)); gtk_spinner_start(GTK_SPINNER(widgets->TimersLoadingSpinner)); + gtk_widget_show(widgets->SystemLoadingSpinner); + gtk_widget_show(widgets->UserLoadingSpinner); + gtk_widget_show(widgets->ConfigLoadingSpinner); + gtk_widget_show(widgets->SessionsLoadingSpinner); + gtk_widget_show(widgets->TimersLoadingSpinner); g_signal_handlers_block_by_func(G_OBJECT(widgets->UserFiltersCombo),G_CALLBACK(on_filter_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->UserSearchEntry),G_CALLBACK(on_filter_changed),widgets); @@ -1188,6 +1193,11 @@ gboolean yon_interface_list_models_connect(main_window *widgets){ gtk_spinner_stop(GTK_SPINNER(widgets->ConfigLoadingSpinner)); gtk_spinner_stop(GTK_SPINNER(widgets->SessionsLoadingSpinner)); gtk_spinner_stop(GTK_SPINNER(widgets->TimersLoadingSpinner)); + gtk_widget_hide(widgets->SystemLoadingSpinner); + gtk_widget_hide(widgets->UserLoadingSpinner); + gtk_widget_hide(widgets->ConfigLoadingSpinner); + gtk_widget_hide(widgets->SessionsLoadingSpinner); + gtk_widget_hide(widgets->TimersLoadingSpinner); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserFiltersCombo),G_CALLBACK(on_filter_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserSearchEntry),G_CALLBACK(on_filter_changed),widgets); @@ -1920,7 +1930,7 @@ void yon_main_window_complete(main_window *widgets){ widgets->ConfigLoadingSpinner=yon_gtk_builder_get_widget(builder,"ConfigLoadingSpinner"); widgets->SessionsLoadingOverlay=yon_gtk_builder_get_widget(builder,"SessionsLoadingOverlay"); widgets->SessionsLoadingSpinner=yon_gtk_builder_get_widget(builder,"SessionsLoadingSpinner"); - widgets->TimersLoadingOverlay=yon_gtk_builder_get_widget(builder,"TiemrsLoadingOverlay"); + widgets->TimersLoadingOverlay=yon_gtk_builder_get_widget(builder,"TimersLoadingOverlay"); widgets->TimersLoadingSpinner=yon_gtk_builder_get_widget(builder,"TimersLoadingSpinner"); widgets->TooltipBox=yon_gtk_builder_get_widget(builder,"TooltipBox"); diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index c9c9ebf..37d1a1c 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -17,10 +17,6 @@ True False - - True - False - @@ -39,6 +35,10 @@ + + True + False + @@ -941,6 +941,9 @@ True liststore1 vertical + + + fixed @@ -980,6 +983,9 @@ 5 both 12 + + + True @@ -1564,6 +1570,9 @@ True True liststore1 + + + Configure in configuration @@ -1600,6 +1609,9 @@ 5 both 12 + + + True @@ -1928,6 +1940,9 @@ True ConfigList both + + + True @@ -2149,6 +2164,9 @@ True SessionsList both + + + True @@ -2329,6 +2347,9 @@ True TimersList both + + + True -- 2.35.1 From 6824e91fd1c0bcff117ccf696f6671637d0880be Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 22 May 2025 14:03:53 +0600 Subject: [PATCH 13/15] Added wrap for system services table --- ubl-settings-services.glade | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 37d1a1c..f06da36 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -1091,7 +1091,9 @@ True 6 - + + 250 + 5 -- 2.35.1 From f5db2366c7ffe30be9a87fb37766fb151b80f8a5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 22 May 2025 15:01:58 +0600 Subject: [PATCH 14/15] Fixed sort --- ubl-settings-services.glade | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index f06da36..96d0279 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -1093,6 +1093,7 @@ 250 + 250 5 @@ -1669,6 +1670,7 @@ 20 Autostart True + 3 -- 2.35.1 From ef1241feb49dacbf1e8a0ffb6867172b5d8c7995 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 23 May 2025 09:32:54 +0600 Subject: [PATCH 15/15] Fixed service duplicating --- source/ubl-settings-services.c | 46 +++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 12c5c46..0a6a203 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1481,12 +1481,23 @@ void* yon_interface_update(main_window *widgets){ int names_size; config_str names_parsed = yon_char_parse(parsed[0],&names_size," "); for (int j=0;jSystemList,&iter); - gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + int found=0; + for_iter(widgets->SystemList,&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->SystemList),&iter,5,&target,-1); + if (!strcmp(target,names_parsed[j])){ + found = 1; + break; + } + } + if (!found) { + int enabled = !strcmp(parsed[5],"enabled"); + int loaded = !strcmp(parsed[1],"loaded"); + int active = !strcmp(parsed[2],"active"); + enum YON_UNIT_TYPE type = yon_get_unit_type(names_parsed[j]); + gtk_list_store_append(widgets->SystemList,&iter); + gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } } yon_char_parsed_free(names_parsed,names_size); } @@ -1538,12 +1549,23 @@ void* yon_interface_update(main_window *widgets){ int names_size; config_str names_parsed = yon_char_parse(parsed[0],&names_size," "); for (int j=0;jUserList,&iter); - gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + int found=0; + for_iter(widgets->UserList,&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->UserList),&iter,5,&target,-1); + if (!strcmp(target,names_parsed[j])){ + found = 1; + break; + } + } + if (found) { + int enabled = !strcmp(parsed[5],"enabled"); + int loaded = !strcmp(parsed[1],"loaded"); + int active = !strcmp(parsed[2],"active"); + enum YON_UNIT_TYPE type = yon_get_unit_type(names_parsed[j]); + gtk_list_store_append(widgets->UserList,&iter); + gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } } yon_char_parsed_free(names_parsed,names_size); } -- 2.35.1