|
|
|
|
@ -71,7 +71,7 @@ void on_config_local_load(GtkWidget *,main_window *widgets){
|
|
|
|
|
main_config.update_thread_active=1;
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
g_idle_add((GSourceFunc)yon_interface_update,widgets);
|
|
|
|
|
g_thread_new("update",(GThreadFunc)yon_interface_update,widgets);
|
|
|
|
|
main_config.load_mode=1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -81,7 +81,7 @@ void on_config_global_load(GtkWidget *,main_window *widgets){
|
|
|
|
|
main_config.update_thread_active=1;
|
|
|
|
|
yon_load_proceed(YON_CONFIG_GLOBAL);
|
|
|
|
|
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
g_idle_add((GSourceFunc)yon_interface_update,widgets);
|
|
|
|
|
g_thread_new("update",(GThreadFunc)yon_interface_update,widgets);
|
|
|
|
|
main_config.load_mode=0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -93,7 +93,7 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
|
|
|
|
|
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
main_config.load_mode=3;
|
|
|
|
|
g_idle_add((GSourceFunc)yon_interface_update,widgets);
|
|
|
|
|
g_thread_new("update",(GThreadFunc)yon_interface_update,widgets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_service_constant_update(){
|
|
|
|
|
@ -124,20 +124,6 @@ void on_config_custom_save(GtkWidget *, main_window *){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// functions
|
|
|
|
|
|
|
|
|
|
enum YON_UNIT_TYPE {
|
|
|
|
|
YON_UNIT_SERVICE=0,
|
|
|
|
|
YON_UNIT_SWAP,
|
|
|
|
|
YON_UNIT_SOCKET,
|
|
|
|
|
YON_UNIT_DEVICE,
|
|
|
|
|
YON_UNIT_TARGET,
|
|
|
|
|
YON_UNIT_MOUNT,
|
|
|
|
|
YON_UNIT_TIMER,
|
|
|
|
|
YON_UNIT_PATH,
|
|
|
|
|
YON_UNIT_SLICE,
|
|
|
|
|
YON_UNIT_SCOPE,
|
|
|
|
|
YON_UNIT_UNRECOGNISED
|
|
|
|
|
};
|
|
|
|
|
enum YON_UNIT_TYPE yon_get_unit_type(char *unit_name);
|
|
|
|
|
|
|
|
|
|
enum YON_UNIT_TYPE yon_get_unit_type(char *unit_name){
|
|
|
|
|
@ -391,9 +377,9 @@ void on_system_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_filter(GtkTreeModel* model, GtkTreeIter *iter, main_window *widgets){
|
|
|
|
|
gboolean autostart,autostop,masked,type,loaded,inactive;
|
|
|
|
|
gboolean autostart,autostop,masked,type,loaded,active;
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,iter,0,&autostart,1,&autostop,2,&masked,5,&name,7,&type,8,&loaded,9,&inactive,-1);
|
|
|
|
|
gtk_tree_model_get(model,iter,0,&autostart,1,&autostop,2,&masked,5,&name,7,&type,8,&loaded,9,&active,-1);
|
|
|
|
|
GtkWidget *combo=NULL;
|
|
|
|
|
GtkWidget *loaded_check=NULL;
|
|
|
|
|
GtkWidget *active_check=NULL;
|
|
|
|
|
@ -442,7 +428,7 @@ gboolean yon_filter(GtkTreeModel* model, GtkTreeIter *iter, main_window *widgets
|
|
|
|
|
char *name_text = (char*)gtk_entry_get_text(GTK_ENTRY(name_entry));
|
|
|
|
|
if (name&&!yon_char_is_empty(name_text)&&!strstr(name,name_text))
|
|
|
|
|
name_filter=0;
|
|
|
|
|
if (type_filter&&(active_filter||inactive)&&(loaded_filter||loaded)&&name_filter){
|
|
|
|
|
if (type_filter&&(active_filter||active)&&(loaded_filter||loaded)&&name_filter){
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
@ -1045,8 +1031,8 @@ void on_timers_list_status(GtkWidget *, main_window *widgets){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
if (widgets){
|
|
|
|
|
gboolean yon_interface_list_models_disconnect(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),NULL);
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),NULL);
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ConfigMainTree),NULL);
|
|
|
|
|
@ -1055,7 +1041,191 @@ gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
gtk_list_store_clear(widgets->UserList);
|
|
|
|
|
gtk_list_store_clear(widgets->ConfigList);
|
|
|
|
|
gtk_list_store_clear(widgets->TimersList);
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
g_signal_handlers_block_by_func(G_OBJECT(widgets->UserInactiveShowCheck),G_CALLBACK(on_filter_changed),widgets);
|
|
|
|
|
g_signal_handlers_block_by_func(G_OBJECT(widgets->UserUnloadedShowCheck),G_CALLBACK(on_filter_changed),widgets);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_interface_list_models_connect(main_window *widgets){
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemFilter));
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserFilter));
|
|
|
|
|
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));
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserInactiveShowCheck),G_CALLBACK(on_filter_changed),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->UserUnloadedShowCheck),G_CALLBACK(on_filter_changed),widgets);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_system_set(struct system_services_data *data){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(data->widgets->SystemList,&iter);
|
|
|
|
|
gtk_list_store_set(data->widgets->SystemList,&iter,3,data->SystemAutostart,4,data->SystemLaunched,5,data->Name,6,data->Descr,7,data->Type,8,data->Loaded,9,data->Active,11,data->State,-1);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_user_set(struct system_user_data *data){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(data->widgets->UserList,&iter);
|
|
|
|
|
gtk_list_store_set(data->widgets->UserList,&iter,3,data->SystemAutostart,4,data->SystemLaunched,5,data->Name,6,data->Descr,5,data->Name,6,data->Descr,7,data->Type,8,data->Loaded,9,data->Active,11,data->State,-1);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_system_config_set(struct system_config_data *data){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(data->widgets->ConfigList,&iter);
|
|
|
|
|
gtk_list_store_set(data->widgets->ConfigList,&iter,0,data->Name,1,data->Date,2,data->Descr,-1);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_timers_set(struct system_timers_data *data){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(data->widgets->TimersList,&iter);
|
|
|
|
|
gtk_list_store_set(data->widgets->TimersList,&iter,0,data->unit,1,data->next,2,data->left,3,data->last,4,data->passed,5,data->activates,-1);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_interface_update_finish(main_window *widgets){
|
|
|
|
|
{
|
|
|
|
|
int parsed_size;
|
|
|
|
|
char *enabled = yon_config_get_by_key(SERVICES_ENABLE_PARAMETER);
|
|
|
|
|
config_str parsed = yon_char_parse(enabled,&parsed_size,",");
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
|
|
|
|
|
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,0,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (yon_char_find_last(parsed[i],'.')==-1) {
|
|
|
|
|
char *temp = yon_char_append(parsed[i],".service");
|
|
|
|
|
free(parsed[i]);
|
|
|
|
|
parsed[i]=temp;
|
|
|
|
|
}
|
|
|
|
|
if (!strcmp(name,parsed[i]))
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,0,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(disabled,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,1,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->SystemList,&iter,1,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(masked,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,2,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->SystemList,&iter,2,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
int parsed_size;
|
|
|
|
|
char *enabled = yon_config_get_by_key(SERVICES_ENABLE_PARAMETER);
|
|
|
|
|
config_str parsed = yon_char_parse(enabled,&parsed_size,",");
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList);
|
|
|
|
|
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,0,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->UserList,&iter,0,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(disabled,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,1,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->UserList,&iter,1,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(masked,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,2,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->UserList,&iter,2,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
main_config.update_thread_active=0;
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void* yon_interface_update(main_window *widgets){
|
|
|
|
|
if (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 user_size;
|
|
|
|
|
@ -1071,8 +1241,7 @@ gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
yon_char_remove_last_symbol(launched[i],'\n');
|
|
|
|
|
}
|
|
|
|
|
for (int i=0; i<system_size;i++){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
if (system_services[i][strlen(system_services[i])-1]=='\n') system_services[i][strlen(system_services[i])-1] = '\0';
|
|
|
|
|
yon_char_remove_last_symbol(system_services[i],'\n');
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse(system_services[i],&size,";");
|
|
|
|
|
char *name_temp = yon_char_replace(parsed[0],"\\","\18");
|
|
|
|
|
@ -1080,30 +1249,51 @@ gboolean 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 loaded = !strcmp(parsed[1],"loaded");
|
|
|
|
|
int active = !strcmp(parsed[2],"active");
|
|
|
|
|
int loaded = !system(check_enabled_command(parsed[0]));
|
|
|
|
|
int active = !system(service_check_active_command(parsed[0]));
|
|
|
|
|
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,yon_char_parsed_check_exist(launched,launched_size,parsed[0])>-1,4,strcmp(parsed[2],"active")?0:1,5,parsed[0],6,parsed[4],7,type,8,loaded,9,active,11,_(parsed[3]),-1);
|
|
|
|
|
struct system_services_data *data = malloc(sizeof(struct system_services_data));
|
|
|
|
|
{
|
|
|
|
|
data->widgets=widgets;
|
|
|
|
|
data->SystemAutostart=loaded;
|
|
|
|
|
data->SystemLaunched=active;
|
|
|
|
|
data->Name=parsed[0];
|
|
|
|
|
data->Descr=parsed[4];
|
|
|
|
|
data->Type = type;
|
|
|
|
|
data->Loaded=strcmp(parsed[1],"loaded")?0:1;
|
|
|
|
|
data->Active=strcmp(parsed[2],"active")?0:1;
|
|
|
|
|
data->State=_(parsed[3]);
|
|
|
|
|
}
|
|
|
|
|
g_idle_add((GSourceFunc)yon_system_set,data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
|
|
|
|
|
for (int i=0; i<user_size;i++){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
if (user_services[i][strlen(user_services[i])-1]=='\n') user_services[i][strlen(user_services[i])-1] = '\0';
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse(user_services[i],&size,";");
|
|
|
|
|
if (parsed){
|
|
|
|
|
int loaded = !strcmp(parsed[1],"loaded");
|
|
|
|
|
int active = !strcmp(parsed[2],"active");
|
|
|
|
|
int loaded = !system(check_enabled_command(parsed[0]));
|
|
|
|
|
int active = !system(service_check_active_command(parsed[0]));
|
|
|
|
|
enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]);
|
|
|
|
|
gtk_list_store_append(widgets->UserList,&iter);
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,3,yon_char_parsed_check_exist(launched,launched_size,parsed[0])>-1,4,strcmp(parsed[2],"active")?0:1,5,parsed[0],6,parsed[4],5,parsed[0],6,parsed[4],7,type,8,loaded,9,active,11,_(parsed[3]),-1);
|
|
|
|
|
struct system_user_data *data = malloc(sizeof(struct system_user_data));
|
|
|
|
|
{
|
|
|
|
|
data->widgets=widgets;
|
|
|
|
|
data->SystemAutostart=yon_char_parsed_check_exist(launched,launched_size,parsed[0])>-1;
|
|
|
|
|
data->SystemLaunched=strcmp(parsed[2],"active")?0:1;
|
|
|
|
|
data->Name=parsed[0];
|
|
|
|
|
data->Descr=parsed[4];
|
|
|
|
|
data->Type = type;
|
|
|
|
|
data->Loaded=loaded;
|
|
|
|
|
data->Active=active;
|
|
|
|
|
data->State=_(parsed[3]);
|
|
|
|
|
}
|
|
|
|
|
g_idle_add((GSourceFunc)yon_user_set,data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
|
|
|
|
|
int descr_size;
|
|
|
|
|
config_str config_descr = yon_resource_open_file(systemd_config_path,&descr_size);
|
|
|
|
|
for (int i=0; i<config_size;i++){
|
|
|
|
|
@ -1111,7 +1301,6 @@ gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
if (config_files[i][strlen(config_files[i])-1]=='\n') config_files[i][strlen(config_files[i])-1] = '\0';
|
|
|
|
|
config_str parsed = yon_char_parse(config_files[i],&size,";");
|
|
|
|
|
if (parsed&&size>2){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *description = "";
|
|
|
|
|
{
|
|
|
|
|
for (int k=0;k<descr_size;k++){
|
|
|
|
|
@ -1135,12 +1324,18 @@ gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
gtk_list_store_append(widgets->ConfigList,&iter);
|
|
|
|
|
gtk_list_store_set(widgets->ConfigList,&iter,0,parsed[2],1,parsed[1],2,description,-1);
|
|
|
|
|
struct system_config_data *data = malloc(sizeof(struct system_config_data));
|
|
|
|
|
{
|
|
|
|
|
data->widgets=widgets;
|
|
|
|
|
data->Name=parsed[2];
|
|
|
|
|
data->Descr=parsed[1];
|
|
|
|
|
data->Date = description;
|
|
|
|
|
}
|
|
|
|
|
g_idle_add((GSourceFunc)yon_system_config_set,data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_sessions_update(widgets);
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
|
|
|
|
|
for (size_t i=0;i<json_object_array_length(jsobject);i++){
|
|
|
|
|
struct json_object *item_obj = json_object_array_get_idx(jsobject, i);
|
|
|
|
|
const char *unit="",*next="",*left="",*last="",*passed="",*activates="";
|
|
|
|
|
@ -1174,8 +1369,6 @@ gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
if (json_object_object_get_ex(item_obj, "activates", &activates_obj)) {
|
|
|
|
|
activates = json_object_get_string(activates_obj);
|
|
|
|
|
}
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(widgets->TimersList,&iter);
|
|
|
|
|
GDateTime *datetime=NULL;
|
|
|
|
|
if (!yon_char_is_empty(next)&&atol(next)!=0){
|
|
|
|
|
datetime = g_date_time_new_from_unix_local(atol(next)/1000000);
|
|
|
|
|
@ -1214,145 +1407,23 @@ gboolean yon_interface_update(main_window *widgets){
|
|
|
|
|
} else {
|
|
|
|
|
passed="";
|
|
|
|
|
}
|
|
|
|
|
gtk_list_store_set(widgets->TimersList,&iter,0,unit,1,next,2,left,3,last,4,passed,5,activates,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
{
|
|
|
|
|
int parsed_size;
|
|
|
|
|
char *enabled = yon_config_get_by_key(SERVICES_ENABLE_PARAMETER);
|
|
|
|
|
config_str parsed = yon_char_parse(enabled,&parsed_size,",");
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->SystemList);
|
|
|
|
|
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,0,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (yon_char_find_last(parsed[i],'.')==-1) {
|
|
|
|
|
char *temp = yon_char_append(parsed[i],".service");
|
|
|
|
|
free(parsed[i]);
|
|
|
|
|
parsed[i]=temp;
|
|
|
|
|
}
|
|
|
|
|
if (!strcmp(name,parsed[i]))
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,0,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(disabled,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,1,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->SystemList,&iter,1,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(masked,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->SystemList,&iter,2,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->SystemList,&iter,2,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
int parsed_size;
|
|
|
|
|
char *enabled = yon_config_get_by_key(SERVICES_ENABLE_PARAMETER);
|
|
|
|
|
config_str parsed = yon_char_parse(enabled,&parsed_size,",");
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList);
|
|
|
|
|
|
|
|
|
|
int valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,0,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->UserList,&iter,0,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(disabled,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
struct system_timers_data *data = malloc(sizeof(struct system_timers_data));
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,1,0,-1);
|
|
|
|
|
data->widgets=widgets;
|
|
|
|
|
data->unit=unit;
|
|
|
|
|
data->next=next;
|
|
|
|
|
data->left=left;
|
|
|
|
|
data->last=last;
|
|
|
|
|
data->passed=passed;
|
|
|
|
|
data->activates=activates;
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->UserList,&iter,1,1,-1);
|
|
|
|
|
g_idle_add((GSourceFunc)yon_timers_set,data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER);
|
|
|
|
|
parsed = yon_char_parse(masked,&parsed_size,",");
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
gtk_list_store_set(widgets->UserList,&iter,2,0,-1);
|
|
|
|
|
}
|
|
|
|
|
valid = gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(model,&iter))
|
|
|
|
|
{
|
|
|
|
|
char *name;
|
|
|
|
|
gtk_tree_model_get(model,&iter,5,&name,-1);
|
|
|
|
|
for (int i=0;i<parsed_size;i++){
|
|
|
|
|
if (strstr(name,parsed[i])) gtk_list_store_set(widgets->UserList,&iter,2,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while(gtk_events_pending()) gtk_main_iteration();
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemFilter));
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserFilter));
|
|
|
|
|
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));
|
|
|
|
|
main_config.update_thread_active=0;
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
g_idle_add((GSourceFunc)yon_interface_update_finish,widgets);
|
|
|
|
|
g_idle_add((GSourceFunc)yon_interface_list_models_connect,widgets);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_interface_update(GtkWidget *, main_window *widgets){
|
|
|
|
|
@ -1360,7 +1431,7 @@ void on_interface_update(GtkWidget *, main_window *widgets){
|
|
|
|
|
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)));
|
|
|
|
|
main_config.update_thread_active=1;
|
|
|
|
|
g_idle_add((GSourceFunc)yon_interface_update,widgets);
|
|
|
|
|
g_thread_new("update",(GThreadFunc)yon_interface_update,widgets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1825,7 +1896,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_idle_add((GSourceFunc)yon_interface_update,widgets);
|
|
|
|
|
g_thread_new("update",(GThreadFunc)yon_interface_update,widgets);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
yon_save_window_set_postsave_function(on_save_done,widgets);
|
|
|
|
|
|