Services loading changes

pull/93/head
parent 1d059a1e0d
commit 63c3eadac3

@ -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;i<launched_size;i++){
yon_char_remove_last_symbol(launched[i],'\n');
}
// int launched_size;
// config_str launched = yon_config_load(load_launched_command,&launched_size);
// for (int i=0;i<launched_size;i++){
// yon_char_remove_last_symbol(launched[i],'\n');
// }
// dictionary *dact = NULL;
// for_dictionaries(dact,dict){
@ -1403,6 +1459,7 @@ void* yon_interface_update(main_window *widgets){
}
}
yon_char_parsed_free(system_services,system_size);
// for (int i=0;i<system_units_size;i++){
// yon_char_remove_last_symbol(system_units[i],'\n');
// if (!yon_char_parsed_check_exist_begins_with(system_services,system_size,system_units[i])){
@ -1454,6 +1511,7 @@ void* yon_interface_update(main_window *widgets){
}
}
yon_char_parsed_free(user_services,user_size);
// for (int i=0;i<user_units_size;i++){
// yon_char_remove_last_symbol(user_units[i],'\n');
// if (!yon_char_parsed_check_exist_begins_with(user_services,user_size,user_units[i])){
@ -1506,6 +1564,7 @@ void* yon_interface_update(main_window *widgets){
}
}
g_idle_add((GSourceFunc)yon_sessions_update,widgets);
yon_char_parsed_free(config_files,config_size);
for (size_t i=0;i<json_object_array_length(jsobject);i++){
struct json_object *item_obj = json_object_array_get_idx(jsobject, i);
@ -1601,6 +1660,7 @@ void on_interface_update(GtkWidget *, main_window *widgets){
if (!main_config.update_thread_active){
gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)));
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);
}

@ -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
Loading…
Cancel
Save