|
|
|
@ -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;i<g_list_length(paths);i++){
|
|
|
|
|
GtkWidget *box = (GtkWidget*)g_list_nth_data(paths,i);
|
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(box));
|
|
|
|
|
GtkWidget *button = (GtkWidget*)g_list_nth_data(list,4);
|
|
|
|
|
if (self==button){
|
|
|
|
|
if (g_list_length(list)>1&>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;i<size;i++){
|
|
|
|
|
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");
|
|
|
|
|
gtk_widget_set_sensitive(entry,0);
|
|
|
|
|
gtk_widget_set_sensitive(SearchButton,0);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(entry),paths_parsed[i]);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(window->LogPathsBox),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);
|
|
|
|
|
}
|
|
|
|
|