diff --git a/gresource.xml b/gresource.xml index 835a942..b6f2a4b 100644 --- a/gresource.xml +++ b/gresource.xml @@ -3,6 +3,7 @@ ubl-settings-services.glade ubl-settings-services-terminal.glade + ubl-settings-services-log.glade ubl-settings-services.css diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 935b734..c7a4bdb 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -39,7 +39,7 @@ void on_config_global_local_save(){ } void on_config_local_save(){ - yon_save_proceed("local",YON_CONFIG_LOCAL,"system","SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK",NULL); + yon_save_proceed("system",YON_CONFIG_LOCAL,"system","SERVICES_ENABLE SERVICES_DISABLE SERVICES_MASK",NULL); } @@ -422,8 +422,40 @@ void on_info_clicked(GtkWidget *self, main_window *widgets){ } } -void on_log_show(){ +log_window *yon_log_window_new(){ + log_window *window = malloc(sizeof(log_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_log); + window->Window = yon_gtk_builder_get_widget(builder,"MonitorWindow"); + window->SystemTerminal = yon_gtk_builder_get_widget(builder,"SystemTerminal"); + window->webHeaderNameLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel"); + window->target=NULL; + yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"terminal_window"); + return window; +} +void on_log_show(GtkWidget *self, main_window *widgets){ + if (self){}; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){ + log_window *window = yon_log_window_new(); + char *name; + gtk_tree_model_get(model,&iter,5,&name,-1); + yon_terminal_integrated_start(window->SystemTerminal,start_log_command(name),NULL,NULL); + GdkRGBA rgba; + rgba.alpha=1; + rgba.red=0.95; + rgba.green=0.95; + rgba.blue=0.95; + vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba); + vte_terminal_set_color_background(VTE_TERMINAL(window->SystemTerminal),&rgba); + rgba.red=0; + rgba.green=0; + rgba.blue=0; + vte_terminal_set_color_foreground(VTE_TERMINAL(window->SystemTerminal),&rgba); + gtk_widget_show(window->Window); + } + } void *yon_unthreaded_config_load(void *widgets){ @@ -515,38 +547,49 @@ gboolean yon_interface_update(main_window *widgets){ for (;valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->liststore2),&iter)){ char *name; gtk_tree_model_get(GTK_TREE_MODEL(widgets->liststore2),&iter,5,&name,-1); - char *name_parsed = yon_char_divide(name,yon_char_find_last(name,'.')); - free(name); + char *name_copy = yon_char_new(name); + char *name_parsed = yon_char_divide(name_copy,yon_char_find_last(name_copy,'.')); if (!yon_char_is_empty(start)){ - if (strstr(start,name_parsed)) + if (!strcmp(start,name)) + gtk_list_store_set(widgets->liststore2,&iter,0,1,-1); + else if (strstr(start,name_parsed)&&strcmp(name_copy,"socket")) gtk_list_store_set(widgets->liststore2,&iter,0,1,-1); else gtk_list_store_set(widgets->liststore2,&iter,0,0,-1); } if (!yon_char_is_empty(stop)){ - if (strstr(stop,name_parsed)) + if (strstr(stop,name)) + gtk_list_store_set(widgets->liststore2,&iter,1,1,-1); + else if (strstr(stop,name_parsed)&&strcmp(name_copy,"socket")) gtk_list_store_set(widgets->liststore2,&iter,1,1,-1); else gtk_list_store_set(widgets->liststore2,&iter,1,0,-1); } if (!yon_char_is_empty(block)){ - if (strstr(block,name_parsed)) + if (strstr(block,name)) + gtk_list_store_set(widgets->liststore2,&iter,2,1,-1); + else if (strstr(block,name_parsed)&&strcmp(name_copy,"socket")) gtk_list_store_set(widgets->liststore2,&iter,2,1,-1); else gtk_list_store_set(widgets->liststore2,&iter,2,0,-1); } if (!yon_char_is_empty(launched)){ - if (strstr(launched,name_parsed)) + if (strstr(launched,name)) + gtk_list_store_set(widgets->liststore2,&iter,4,1,-1); + else if (strstr(launched,name_parsed)&&strcmp(name_copy,"socket")) gtk_list_store_set(widgets->liststore2,&iter,4,1,-1); else gtk_list_store_set(widgets->liststore2,&iter,4,0,-1); } if (!yon_char_is_empty(enabled)){ - if (strstr(enabled,name_parsed)) + if (strstr(enabled,name)) + gtk_list_store_set(widgets->liststore2,&iter,3,1,-1); + else if (strstr(enabled,name_parsed)&&strcmp(name_copy,"socket")) gtk_list_store_set(widgets->liststore2,&iter,3,1,-1); else gtk_list_store_set(widgets->liststore2,&iter,3,0,-1); } + free(name); free(name_parsed); while(gtk_events_pending()) gtk_main_iteration(); } diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 21ea7a8..a98cd69 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -24,6 +24,7 @@ #define glade_path "/com/ublinux/ui/ubl-settings-services.glade" #define glade_path_terminal "/com/ublinux/ui/ubl-settings-services-terminal.glade" +#define glade_path_log "/com/ublinux/ui/ubl-settings-services-log.glade" #define banner_path "/com/ublinux/images/ubl-settings-services-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-services.css" @@ -45,6 +46,8 @@ #define service_kill_command(target) yon_char_append("systemctl kill ",target) #define service_check_active_command(target) yon_char_append("systemctl is-active ",target) +#define start_log_command(target) yon_char_append("journalctl --all --no-pager --unit ",target) + typedef char* string; string version_application; @@ -180,6 +183,13 @@ typedef struct { char *target; } terminal_window; +typedef struct { + GtkWidget *Window; + GtkWidget *SystemTerminal; + GtkWidget *webHeaderNameLabel; + char *target; +} log_window; + void on_config_local_load(GtkWidget *self,main_window *widgets); void on_config_global_load(GtkWidget *self,main_window *widgets); @@ -190,6 +200,8 @@ void on_config_local_save(); void on_config_global_save(); +log_window *yon_log_window_new(); + gboolean yon_interface_update(main_window *widgets); GtkWidget *yon_menu_button_create(char *icon_name, char *text); diff --git a/ubl-settings-services-log.glade b/ubl-settings-services-log.glade new file mode 100644 index 0000000..9b05667 --- /dev/null +++ b/ubl-settings-services-log.glade @@ -0,0 +1,92 @@ + + + + + + + + 100 + 1 + 10 + + + 800 + 600 + False + com.ublinux.ubl-settings-usergroups + + + True + False + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + True + always + always + in + + + True + False + + + True + False + True + natural + adjustment1 + natural + UTF-8 + True + 0 + True + False + + + + + + + True + True + 0 + + + + + True + True + 1 + + + + + + + True + False + True + + + True + False + Services and processes - service information + + + + + + + + + diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 55fd278..899ea95 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -389,7 +389,7 @@ True True liststore2 - 6 + 3 horizontal