From 4db5fe1df13374a074add438221f5f52f3b5b3d1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 20 Oct 2023 17:49:54 +0600 Subject: [PATCH] Log add window startup functions --- gresource.xml | 1 + source/CMakeLists.txt | 1 + source/ubl-settings-logging.c | 159 ++++++++++++++++++++------- source/ubl-settings-logging.h | 3 + ubl-settings-logging-add-path.glade | 96 ++++++++++++++++ ubl-settings-logging-add.glade | 119 +++++--------------- ubl-settings-logging-logrotate.glade | 28 +++-- 7 files changed, 265 insertions(+), 142 deletions(-) create mode 100644 ubl-settings-logging-add-path.glade diff --git a/gresource.xml b/gresource.xml index 1914fde..bf9d603 100644 --- a/gresource.xml +++ b/gresource.xml @@ -3,6 +3,7 @@ ubl-settings-logging.glade ubl-settings-logging-add.glade + ubl-settings-logging-add-path.glade ubl-settings-logging-inspector.glade ubl-settings-logging-logrotate.glade ubl-settings-logging-journald.glade diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index c9220c0..48c020f 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -37,6 +37,7 @@ add_custom_target(GLADE ubl-settings-logging.glade) set(DEPENDFILES ../ubl-settings-logging.glade ../ubl-settings-logging-add.glade + ../ubl-settings-logging-add-path.glade ../ubl-settings-logging-inspector.glade ../ubl-settings-logging-journald.glade ../ubl-settings-logging-logrotate.glade diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index cdf4796..f59ebe2 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -108,28 +108,6 @@ void yon_load_proceed(char *command){ } -add_log_window *on_add_open(){ - add_log_window *window = malloc(sizeof(add_log_window)); - GtkBuilder *builder = gtk_builder_new_from_resource(glade_add_path); - window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); - window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); - window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); - window->LogAddingBox=yon_gtk_builder_get_widget(builder,"LogAddingBox"); - window->LogTypeCombo=yon_gtk_builder_get_widget(builder,"LogTypeCombo"); - window->LogPathEntry=yon_gtk_builder_get_widget(builder,"LogPathEntry"); - window->LogFindButton=yon_gtk_builder_get_widget(builder,"LogFindButton"); - window->LogDescriptionEntry=yon_gtk_builder_get_widget(builder,"LogDescriptionEntry"); - window->LogrotateButton=yon_gtk_builder_get_widget(builder,"LogrotateButton"); - window->MetalogButton=yon_gtk_builder_get_widget(builder,"MetalogButton"); - window->SyslogButton=yon_gtk_builder_get_widget(builder,"SyslogButton"); - window->JournaldButton=yon_gtk_builder_get_widget(builder,"JournaldButton"); - window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel"); - window->StatisticsFrame=yon_gtk_builder_get_widget(builder,"StatisticsFrame"); - gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL); - g_signal_connect(G_OBJECT(window->CancelButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); - return window; -} - void on_inspector_update(GtkWidget *self, inspector_window *window){ int size; GtkTextIter titer,titerend; @@ -227,6 +205,8 @@ void on_log_choose(GtkWidget *self,add_log_window *window){ gtk_widget_destroy(dialog); } +// Logrotate window + logrotate_configure_window *yon_logrotate_window_new(){ logrotate_configure_window *window = malloc(sizeof(logrotate_configure_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_logrotate_path); @@ -343,6 +323,8 @@ void on_logrotate_tab_open(GtkWidget *self, main_window *widgets){ gtk_widget_show(window->Window); } +// Journald window + void on_journald_open(GtkWidget *self, main_window *widgets){ journald_window *window = malloc(sizeof(journald_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_journald_path); @@ -388,18 +370,35 @@ void on_journald_open(GtkWidget *self, main_window *widgets){ gtk_widget_show(window->MainWindow); } -void on_serivces_open(GtkWidget *self,main_window *widgets){ - GtkTreeModel *model = GTK_TREE_MODEL(widgets->list); - GtkTreeIter iter; - if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model, &iter)){ - char *service_name; - gtk_tree_model_get(model,&iter,1,&service_name,-1); - if (!strcmp(service_name,"journald")){ - on_journald_open(NULL,widgets); - } else { - on_logrotate_tab_open(NULL,widgets); - } - } + +// Log adding menu + +add_log_window *on_add_open(){ + add_log_window *window = malloc(sizeof(add_log_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_add_path); + window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); + window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); + window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); + window->LogAddingBox=yon_gtk_builder_get_widget(builder,"LogAddingBox"); + window->LogTypeCombo=yon_gtk_builder_get_widget(builder,"LogTypeCombo"); + window->LogPathEntry=yon_gtk_builder_get_widget(builder,"LogPathEntry"); + window->LogFindButton=yon_gtk_builder_get_widget(builder,"LogFindButton"); + window->LogDescriptionEntry=yon_gtk_builder_get_widget(builder,"LogDescriptionEntry"); + window->LogrotateButton=yon_gtk_builder_get_widget(builder,"LogrotateButton"); + window->MetalogButton=yon_gtk_builder_get_widget(builder,"MetalogButton"); + window->SyslogButton=yon_gtk_builder_get_widget(builder,"SyslogButton"); + window->JournaldButton=yon_gtk_builder_get_widget(builder,"JournaldButton"); + window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel"); + window->StatisticsFrame=yon_gtk_builder_get_widget(builder,"StatisticsFrame"); + window->ControlSectionBox=yon_gtk_builder_get_widget(builder,"ControlSectionBox"); + window->LogPathsBox=yon_gtk_builder_get_widget(builder,"LogPathsBox"); + gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); + return window; +} + + +void on_log_edit_logrotate_settings(GtkWidget *self, add_log_window *window){ } @@ -409,10 +408,65 @@ void on_log_add(GtkWidget *self, main_window *widgets){ add_log_window *window = on_add_open(); gtk_widget_show(window->MainWindow); gtk_widget_hide(window->StatisticsFrame); - gtk_widget_hide(window->JournaldButton); + gtk_widget_hide(window->ControlSectionBox); g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); } +void on_log_path_choose(GtkWidget *self,add_log_window *window){ + GtkWidget *dialog = gtk_file_chooser_dialog_new(TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog),"/"); + int response = gtk_dialog_run(GTK_DIALOG(dialog)); + if (response == GTK_RESPONSE_ACCEPT){ + GtkWidget *parent = gtk_widget_get_parent(self); + GList *list = gtk_container_get_children(GTK_CONTAINER(parent)); + gtk_entry_set_text((GtkEntry*)g_list_nth_data(list,1),gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog))); + } + gtk_widget_destroy(dialog); +} + +void on_log_path_remove(GtkWidget *self, add_log_window *window){ + GList *paths = gtk_container_get_children(GTK_CONTAINER(window->LogPathsBox)); + for (int i=0;i1&>k_widget_get_sensitive(g_list_nth_data(list,3))){ + GtkWidget *prevbox = (GtkWidget*)g_list_nth_data(paths,i-1); + GList *prevlist = gtk_container_get_children(GTK_CONTAINER(prevbox)); + gtk_widget_show(g_list_nth_data(prevlist,3)); + g_list_free(prevlist); + gtk_widget_destroy(box); + } + } + g_list_free(list); + } + g_list_free(paths); +} + +void on_log_path_append(GtkWidget *self, add_log_window *window){ + GList *paths = gtk_container_get_children(GTK_CONTAINER(window->LogPathsBox)); + GtkWidget *box = (GtkWidget*)g_list_nth_data(paths,g_list_length(paths)-1); + GList *path_widgets = gtk_container_get_children(GTK_CONTAINER(box)); + GtkWidget *entry = (GtkWidget*)g_list_nth_data(path_widgets,1); + if (gtk_widget_get_sensitive(box)&&strcmp(gtk_entry_get_text(GTK_ENTRY(entry)),"")){ + GtkBuilder *builder = gtk_builder_new_from_resource(glade_add_path_path); + GtkWidget *box = yon_gtk_builder_get_widget(builder,"PathBox"); + GtkWidget *entry = yon_gtk_builder_get_widget(builder,"PathEntry"); + GtkWidget *AppendButton = yon_gtk_builder_get_widget(builder,"AppendButton"); + GtkWidget *SearchButton = yon_gtk_builder_get_widget(builder,"SearchButton"); + GtkWidget *RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton"); + g_signal_connect(G_OBJECT(AppendButton),"clicked",G_CALLBACK(on_log_path_append),window); + g_signal_connect(G_OBJECT(RemoveButton),"clicked",G_CALLBACK(on_log_path_remove),window); + g_signal_connect(G_OBJECT(SearchButton),"clicked",G_CALLBACK(on_log_path_choose),window); + gtk_widget_show(AppendButton); + gtk_widget_hide(self); + gtk_box_pack_start(GTK_BOX(window->LogPathsBox),box,0,0,5); + } + g_list_free(paths); + g_list_free(path_widgets); +} + void on_log_edit(GtkWidget *self,main_window *widgets){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->list); GtkTreeIter iter; @@ -421,7 +475,10 @@ void on_log_edit(GtkWidget *self,main_window *widgets){ gtk_widget_show(window->MainWindow); gtk_widget_hide(window->StatisticsFrame); char *name; - gtk_tree_model_get(model,&iter,0,&name,-1); + char *paths; + int size; + char *description; + gtk_tree_model_get(model,&iter,0,&name,1,&paths,2,&description,-1); if (!strcmp(name,"journald")){ gtk_widget_hide(window->LogrotateButton); gtk_widget_hide(window->MetalogButton); @@ -429,11 +486,30 @@ void on_log_edit(GtkWidget *self,main_window *widgets){ g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets); } else { gtk_widget_hide(window->JournaldButton); - // g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets); - // g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_log),widgets); - // g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets); + g_signal_connect(G_OBJECT(window->LogrotateButton),"clicked", G_CALLBACK(on_log_edit_logrotate_settings),widgets); + // g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets); + // g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK(on_journald_open),widgets); + } + gtk_entry_set_text(GTK_ENTRY(window->LogDescriptionEntry),description); + config_str paths_parsed = yon_char_parse(paths,&size,"\n"); + GtkWidget *last=NULL; + for (int i=0;iLogPathsBox),box,0,0,5); + last = AppendButton; } - gtk_widget_set_sensitive(window->LogAddingBox,0); + gtk_widget_show(last); + g_signal_connect(G_OBJECT(last),"clicked",G_CALLBACK(on_log_path_append),window); + gtk_widget_set_sensitive(window->LogTypeCombo,0); + gtk_widget_set_sensitive(window->LogDescriptionEntry,0); g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); } } @@ -446,6 +522,8 @@ void on_log_remove(GtkWidget *self, main_window *widgets){ } } +// Main window + void on_service_edit(GtkWidget *self,main_window *widgets){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->ServicesList); GtkTreeIter iter; @@ -552,6 +630,7 @@ main_window *setup_window(){ int log_size; journals[i]=yon_char_divide_search(journals[i],"\n",-1); config_str log = yon_char_parse(journals[i],&log_size,";"); + log[1] = yon_char_replace(log[1],",","\n"); gtk_list_store_append(widgets->list,&iter); gtk_list_store_set(widgets->list,&iter,0,log[0],1,log[1],2,log[2],3,-1,4,-1,5,-1,6,-1,7,-1,-1); } diff --git a/source/ubl-settings-logging.h b/source/ubl-settings-logging.h index 68bfa6a..566c763 100644 --- a/source/ubl-settings-logging.h +++ b/source/ubl-settings-logging.h @@ -20,6 +20,7 @@ #define glade_path "/com/ublinux/ui/ubl-settings-logging.glade" #define glade_add_path "/com/ublinux/ui/ubl-settings-logging-add.glade" +#define glade_add_path_path "/com/ublinux/ui/ubl-settings-logging-add-path.glade" #define glade_inspector_path "/com/ublinux/ui/ubl-settings-logging-inspector.glade" #define glade_journald_path "/com/ublinux/ui/ubl-settings-logging-journald.glade" #define glade_logrotate_path "/com/ublinux/ui/ubl-settings-logging-logrotate.glade" @@ -161,6 +162,8 @@ typedef struct { GtkWidget *JournaldButton; GtkWidget *LogSizeLabel; GtkWidget *StatisticsFrame; + GtkWidget *ControlSectionBox; + GtkWidget *LogPathsBox; } add_log_window; typedef struct { diff --git a/ubl-settings-logging-add-path.glade b/ubl-settings-logging-add-path.glade new file mode 100644 index 0000000..b3f0a35 --- /dev/null +++ b/ubl-settings-logging-add-path.glade @@ -0,0 +1,96 @@ + + + + + + True + False + 5 + + + True + False + Path (-s): + 0 + + + False + True + 0 + + + + + True + True + + + True + True + 1 + + + + + True + True + True + image4 + + + + False + True + 2 + + + + + True + True + image3 + + + + False + True + 3 + + + + + True + True + True + image9 + + + + False + True + 4 + + + + + True + False + com.ublinux.ubl-settings-logging.increase-symbolic + + + True + False + com.ublinux.ubl-settings-logging.zoom-symbolic + + + True + False + com.ublinux.ubl-settings-logging.decrease-symbolic + + diff --git a/ubl-settings-logging-add.glade b/ubl-settings-logging-add.glade index dcba07a..f7d8eec 100644 --- a/ubl-settings-logging-add.glade +++ b/ubl-settings-logging-add.glade @@ -28,16 +28,6 @@ False emblem-ok-symbolic - - True - False - com.ublinux.ubl-settings-logging.increase-symbolic - - - True - False - com.ublinux.ubl-settings-logging.zoom-symbolic - True False @@ -135,6 +125,7 @@ True False Log/Journal: + 0 False @@ -166,85 +157,34 @@ - + True - False - 5 + True + never + in - + True False - Path (-s): - 0 + 5 + 5 + 5 + 5 + + + True + False + vertical + + + + + - - False - True - 0 - - - - - True - True - - - True - True - 1 - - - - - True - True - True - image4 - - - - False - True - 2 - - - - - True - True - True - image3 - - - - False - True - 3 - - - - - True - True - True - image9 - - - - False - True - 4 - - False + True True 1 @@ -259,6 +199,7 @@ True False Description: + 0 False @@ -286,14 +227,14 @@ - False + True True 0 - False + True True 0 @@ -312,7 +253,7 @@ - + True False 5 @@ -321,6 +262,7 @@ True False Control: + 0 False @@ -409,7 +351,7 @@ True False - 0 + 0.019999999552965164 in @@ -429,6 +371,7 @@ True False Log size: + 0 False @@ -513,13 +456,7 @@ - - - True - False - com.ublinux.ubl-settings-logging.decrease-symbolic - diff --git a/ubl-settings-logging-logrotate.glade b/ubl-settings-logging-logrotate.glade index cd7e181..cf4edb4 100644 --- a/ubl-settings-logging-logrotate.glade +++ b/ubl-settings-logging-logrotate.glade @@ -73,6 +73,22 @@ False com.ublinux.ubl-settings-logging.profile-symbolic + + True + False + com.ublinux.ubl-settings-logging.decrease-symbolic + + + True + False + com.ublinux.ubl-settings-logging.increase-symbolic + + + + + + + 800 600 @@ -312,6 +328,7 @@ True True + liststore1 False @@ -2027,15 +2044,4 @@ - - True - False - com.ublinux.ubl-settings-logging.decrease-symbolic - - - True - False - com.ublinux.ubl-settings-logging.increase-symbolic - -