diff --git a/Makefile b/Makefile index 30a1cb2..1399ffb 100644 --- a/Makefile +++ b/Makefile @@ -122,11 +122,18 @@ install: check uninstall @sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.view-symbolic.svg" - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.zoom-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.checked.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.warning.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.view-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.play-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.stop-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.zoom-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.back-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.increase-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.decrease-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.profile-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "journals_list.csv" + @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "logging_services.csv" @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ diff --git a/gresource.xml b/gresource.xml index f066c56..1914fde 100644 --- a/gresource.xml +++ b/gresource.xml @@ -4,6 +4,9 @@ ubl-settings-logging.glade ubl-settings-logging-add.glade ubl-settings-logging-inspector.glade + ubl-settings-logging-logrotate.glade + ubl-settings-logging-journald.glade + ubl-settings-logging-logrotate-table.glade ubl-settings-logging.css diff --git a/icons/com.ublinux.ubl-settings-logging.back-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.back-symbolic.svg new file mode 100644 index 0000000..3e0225a --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.back-symbolic.svg @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/com.ublinux.ubl-settings-logging.checked.svg b/icons/com.ublinux.ubl-settings-logging.checked.svg similarity index 100% rename from com.ublinux.ubl-settings-logging.checked.svg rename to icons/com.ublinux.ubl-settings-logging.checked.svg diff --git a/icons/com.ublinux.ubl-settings-logging.decrease-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.decrease-symbolic.svg new file mode 100644 index 0000000..1413e10 --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.decrease-symbolic.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/icons/com.ublinux.ubl-settings-logging.increase-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.increase-symbolic.svg new file mode 100644 index 0000000..800b264 --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.increase-symbolic.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/icons/com.ublinux.ubl-settings-logging.play-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.play-symbolic.svg new file mode 100644 index 0000000..3ebe8f3 --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.play-symbolic.svg @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/icons/com.ublinux.ubl-settings-logging.profile-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.profile-symbolic.svg new file mode 100644 index 0000000..4bc7b0c --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.profile-symbolic.svg @@ -0,0 +1,49 @@ + + + + + + + + + + diff --git a/icons/com.ublinux.ubl-settings-logging.stop-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.stop-symbolic.svg new file mode 100644 index 0000000..91f45bc --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.stop-symbolic.svg @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/com.ublinux.ubl-settings-logging.view-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.view-symbolic.svg similarity index 100% rename from com.ublinux.ubl-settings-logging.view-symbolic.svg rename to icons/com.ublinux.ubl-settings-logging.view-symbolic.svg diff --git a/com.ublinux.ubl-settings-logging.warning.svg b/icons/com.ublinux.ubl-settings-logging.warning.svg similarity index 100% rename from com.ublinux.ubl-settings-logging.warning.svg rename to icons/com.ublinux.ubl-settings-logging.warning.svg diff --git a/com.ublinux.ubl-settings-logging.zoom-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.zoom-symbolic.svg similarity index 100% rename from com.ublinux.ubl-settings-logging.zoom-symbolic.svg rename to icons/com.ublinux.ubl-settings-logging.zoom-symbolic.svg diff --git a/logging_services.csv b/logging_services.csv new file mode 100644 index 0000000..ccc34a9 --- /dev/null +++ b/logging_services.csv @@ -0,0 +1,4 @@ +journald;Системный журнал событий;systemctl start;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set config SERVICESSTART+=systemd-journald.service;ubconfig set config SERVICESSTART-=systemd-journald.service;systemctl status systemd-journald.service +logrotate;Служба ротации системных журналов событий;systemctl start logrotate.service;systemctl stop logrotate.service;ubconfig set config SERVICESSTART+=logrotate.service;ubconfig set config SERVICESSTART-=logrotate.service;systemctl status logrotate.service +metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service +syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 93e0050..c9220c0 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -38,6 +38,9 @@ set(DEPENDFILES ../ubl-settings-logging.glade ../ubl-settings-logging-add.glade ../ubl-settings-logging-inspector.glade + ../ubl-settings-logging-journald.glade + ../ubl-settings-logging-logrotate.glade + ../ubl-settings-logging-logrotate-table.glade ../gresource.xml ../ubl-settings-logging-banner.png ../ubl-settings-logging.css diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index 60fa266..3b35ba2 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -107,6 +107,28 @@ 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; @@ -143,13 +165,14 @@ void on_inspector_update(GtkWidget *self, inspector_window *window){ window->last_mode=4; output = yon_config_load(get_journal_output_prioritied_command, &size); } - for (int i=0;itextbuffer1,&titer); + gtk_text_buffer_insert(window->textbuffer1,&titer,output[i],-1); + } gtk_text_buffer_get_end_iter(window->textbuffer1,&titer); - gtk_text_buffer_insert(window->textbuffer1,&titer,output[i],-1); + gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(window->LoggingTextView),&titer,0.25,0,1,0); } - gtk_text_buffer_get_end_iter(window->textbuffer1,&titer); - gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(window->LoggingTextView),&titer,0.25,0,1,0); - } void on_inspector_open(GtkWidget *self, main_window *widgets){ @@ -185,41 +208,6 @@ void on_inspector_open(GtkWidget *self, main_window *widgets){ } } -add_log_window *yon_log_open(main_window *widgets){ - 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->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->editingBox=yon_gtk_builder_get_widget(builder,"editingBox"); - window->FileAmountCheck=yon_gtk_builder_get_widget(builder,"FileAmountCheck"); - window->FileAmountSpin=yon_gtk_builder_get_widget(builder,"FileAmountSpin"); - window->FileSizeCheck=yon_gtk_builder_get_widget(builder,"FileSizeCheck"); - window->FileSizeSpin=yon_gtk_builder_get_widget(builder,"FileSizeSpin"); - window->FileSizeCombo=yon_gtk_builder_get_widget(builder,"FileSizeCombo"); - window->RotationPeriodCheck=yon_gtk_builder_get_widget(builder,"RotationPeriodCheck"); - window->RotationPeriodCombo=yon_gtk_builder_get_widget(builder,"RotationPeriodCombo"); - window->JournalSizeCheck=yon_gtk_builder_get_widget(builder,"JournalSizeCheck"); - window->JournalSizeSpin=yon_gtk_builder_get_widget(builder,"JournalSizeSpin"); - window->JournalSizeCombo=yon_gtk_builder_get_widget(builder,"JournalSizeCombo"); - window->JournalGatheringPeriodCheck=yon_gtk_builder_get_widget(builder,"JournalGatheringPeriodCheck"); - window->JournalGatheringPeriodCombo=yon_gtk_builder_get_widget(builder,"JournalGatheringPeriodCombo"); - window->logSizeLabel=yon_gtk_builder_get_widget(builder,"logSizeLabel"); - window->diskSizeLabel=yon_gtk_builder_get_widget(builder,"diskSizeLabel"); - window->LogSettingsBox=yon_gtk_builder_get_widget(builder,"LogSettingsBox"); - window->JournalSettingsBox=yon_gtk_builder_get_widget(builder,"JournalSettingsBox"); - window->LogEditingBox=yon_gtk_builder_get_widget(builder,"LogEditingBox"); - window->LogAddingBox=yon_gtk_builder_get_widget(builder,"LogAddingBox"); - window->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameLabel"); - g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); - - return window; -} - void on_log_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_add_shortcut_folder(GTK_FILE_CHOOSER(dialog),yon_ubl_user_get_home_directory(),NULL); @@ -237,114 +225,220 @@ void on_log_choose(GtkWidget *self,add_log_window *window){ gtk_widget_destroy(dialog); } -void on_log_save(GtkWidget *self, dictionary *dict){ - main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); - add_log_window *window = yon_dictionary_get_data(dict->first->next,add_log_window*); - char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->LogPathEntry)); - const char *description = gtk_entry_get_text(GTK_ENTRY(window->LogDescriptionEntry)); - char *path = yon_char_divide(name,yon_char_find_last(name,'/')); - GtkTreeIter iter; - gtk_list_store_append(widgets->list,&iter); - gtk_list_store_set(widgets->list,&iter,0,name,1,path,2,description,-1); - gtk_widget_destroy(window->MainWindow); +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); + 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->LogNamelabel=yon_gtk_builder_get_widget(builder,"LogNamelabel"); + window->LogNameButton=yon_gtk_builder_get_widget(builder,"LogNameButton"); + window->RotationPeriodCheck=yon_gtk_builder_get_widget(builder,"RotationPeriodCheck"); + window->RotationPeriodMainCombo=yon_gtk_builder_get_widget(builder,"RotationPeriodMainCombo"); + window->RotationPeriodAdditionalCombo=yon_gtk_builder_get_widget(builder,"RotationPeriodAdditionalCombo"); + window->JournalMaxSizeCheck=yon_gtk_builder_get_widget(builder,"JournalMaxSizeCheck"); + window->JournalMaxSizeSpin=yon_gtk_builder_get_widget(builder,"JournalMaxSizeSpin"); + window->JournalMaxSizeCombo=yon_gtk_builder_get_widget(builder,"JournalMaxSizeCombo"); + window->FileAmountCheck=yon_gtk_builder_get_widget(builder,"FileAmountCheck"); + window->FileAmountSpin=yon_gtk_builder_get_widget(builder,"FileAmountSpin"); + window->FileAmountCombo=yon_gtk_builder_get_widget(builder,"FileAmountCombo"); + window->FileAmountEntry=yon_gtk_builder_get_widget(builder,"FileAmountEntry"); + window->FileAmountButton=yon_gtk_builder_get_widget(builder,"FileAmountButton"); + window->RotationAtUserCombo=yon_gtk_builder_get_widget(builder,"RotationAtUserCombo"); + window->RotationAtGroupCombo=yon_gtk_builder_get_widget(builder,"RotationAtGroupCombo"); + window->ErrorProcessingCombo=yon_gtk_builder_get_widget(builder,"ErrorProcessingCombo"); + window->JournalEmptyCombo=yon_gtk_builder_get_widget(builder,"JournalEmptyCombo"); + window->DoNotRotateYoungerCheck=yon_gtk_builder_get_widget(builder,"DoNotRotateYoungerCheck"); + window->DoNotRotateYoungerSpin=yon_gtk_builder_get_widget(builder,"DoNotRotateYoungerSpin"); + window->DeleteOlderCheck=yon_gtk_builder_get_widget(builder,"DeleteOlderCheck"); + window->DeleteOlderSpin=yon_gtk_builder_get_widget(builder,"DeleteOlderSpin"); + window->RotateSizeMaxAfterTimeCheck=yon_gtk_builder_get_widget(builder,"RotateSizeMaxAfterTimeCheck"); + window->RotateSizeMaxAfterTimeSpin=yon_gtk_builder_get_widget(builder,"RotateSizeMaxAfterTimeSpin"); + window->RotateSizeMaxAfterTimeCombo=yon_gtk_builder_get_widget(builder,"RotateSizeMaxAfterTimeCombo"); + window->RotateSizeMaxBeforeTimeCheck=yon_gtk_builder_get_widget(builder,"RotateSizeMaxBeforeTimeCheck"); + window->RotateSizeMaxBeforeTimeSpin=yon_gtk_builder_get_widget(builder,"RotateSizeMaxBeforeTimeSpin"); + window->RotateSizeMaxBeforeTimeCombo=yon_gtk_builder_get_widget(builder,"RotateSizeMaxBeforeTimeCombo"); + window->CreateLogCombo=yon_gtk_builder_get_widget(builder,"CreateLogCombo"); + window->CreateLogUserCombo=yon_gtk_builder_get_widget(builder,"CreateLogUserCombo"); + window->CreateGroupCombo=yon_gtk_builder_get_widget(builder,"CreateGroupCombo"); + window->CreateLogEntry=yon_gtk_builder_get_widget(builder,"CreateLogEntry"); + window->CreateLogButton=yon_gtk_builder_get_widget(builder,"CreateLogButton"); + window->CutCheck=yon_gtk_builder_get_widget(builder,"CutCheck"); + window->CompressionCombo=yon_gtk_builder_get_widget(builder,"CompressionCombo"); + window->QueueCombo=yon_gtk_builder_get_widget(builder,"QueueCombo"); + window->SaveOriginalCombo=yon_gtk_builder_get_widget(builder,"SaveOriginalCombo"); + window->SaveOriginalEntry=yon_gtk_builder_get_widget(builder,"SaveOriginalEntry"); + window->AddDateCombo=yon_gtk_builder_get_widget(builder,"AddDateCombo"); + window->OldNumberCombo=yon_gtk_builder_get_widget(builder,"OldNumberCombo"); + window->OldNumberEntry=yon_gtk_builder_get_widget(builder,"OldNumberEntry"); + window->EmailCombo=yon_gtk_builder_get_widget(builder,"EmailCombo"); + window->EmailEntry=yon_gtk_builder_get_widget(builder,"EmailEntry"); + window->EmailContentsCombo=yon_gtk_builder_get_widget(builder,"EmailContentsCombo"); + window->ManualInputEntry=yon_gtk_builder_get_widget(builder,"ManualInputEntry"); + window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel"); + window->headerTopic=yon_gtk_builder_get_widget(builder,"headerTopic"); + window->LogNameDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogNameDescriptionLabel"); + window->list=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + + return window; } -void on_log_add(GtkWidget *self, main_window *widgets){ - add_log_window *window = yon_log_open(widgets); - gtk_widget_hide(window->editingBox); - dictionary *dict = NULL; - yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); - yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); - g_signal_connect(G_OBJECT(window->LogFindButton),"clicked",G_CALLBACK(on_log_choose),window); - g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_log_save),dict); - gtk_dialog_run(GTK_DIALOG(window->MainWindow)); +void on_logrotate_add(GtkWidget *self, main_window *widgets){ + logrotate_configure_window *window = yon_logrotate_window_new(); + gtk_widget_show(window->MainWindow); + add_log_window *dialog = on_add_open(); + gtk_widget_hide(dialog->StatisticsFrame); + gtk_widget_hide(dialog->JournaldButton); + gtk_label_set_text(GTK_LABEL(window->LogNamelabel),""); + gtk_label_set_text(GTK_LABEL(window->LogNameDescriptionLabel),""); + gtk_label_set_text(GTK_LABEL(window->LogSizeLabel),""); + gtk_window_present(GTK_WINDOW(dialog->MainWindow)); } -void on_edit_save(GtkWidget *self,dictionary *dict){ - main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); - add_log_window *window = yon_dictionary_get_data(dict->first->next,add_log_window*); - long file_amount = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileAmountCheck)) ? gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->FileAmountSpin)) : -1; - int size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileSizeCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->FileSizeCombo)) : -1; - long file_max_size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileSizeCheck)) ? gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->FileSizeSpin)) : -1; - for (int i=0;iMainTree)),&model, &iter)){ + logrotate_configure_window *dialog = yon_logrotate_window_new(); + + gtk_widget_show(dialog->MainWindow); } - int rotation_period = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RotationPeriodCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationPeriodCombo)) : -1; - int journal_size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->JournalSizeCheck)) ? gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->JournalSizeSpin)) : -1; - size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->JournalSizeCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->JournalSizeCombo)) : -1; - for (int i=0;iMainTree)),&model, &iter)){ + gtk_list_store_remove(main_config.logrotate_list,&iter); } - int journal_gathering = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->JournalGatheringPeriodCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->JournalGatheringPeriodCombo)) : -1; +} + +void on_logrotate_apps_configure(){ + +} + +void on_logrotate_tab_open(GtkWidget *self, main_window *widgets){ + logrotate_window *window = malloc(sizeof(logrotate_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_logrotate_table_path); + window->Window=yon_gtk_builder_get_widget(builder,"MainWindow"); + window->AppsMainTree=yon_gtk_builder_get_widget(builder,"AppsMainTree"); + window->MainTree=yon_gtk_builder_get_widget(builder,"MainTree"); + window->AppsConfigureButton=yon_gtk_builder_get_widget(builder,"AppsConfigureButton"); + window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); + window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); + window->ConfigureButton = yon_gtk_builder_get_widget(builder,"ConfigureButton"); + window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton"); + window->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton"); + gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL); + + gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree),GTK_TREE_MODEL(main_config.logrotate_list)); + gtk_tree_view_set_model(GTK_TREE_VIEW(window->AppsMainTree),GTK_TREE_MODEL(main_config.logrotate_apps_list)); + + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_logrotate_add),window); + g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_logrotate_remove),window); + g_signal_connect(G_OBJECT(window->ConfigureButton),"clicked",G_CALLBACK(on_logrotate_edit),window); + g_signal_connect(G_OBJECT(window->AppsConfigureButton),"clicked",G_CALLBACK(on_logrotate_apps_configure),NULL); + gtk_widget_show(window->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); + 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->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameLabel"); + window->LogDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogDescriptionLabel"); + window->LogStorageCombo=yon_gtk_builder_get_widget(builder,"LogStorageCombo"); + window->LogCompressionCombo=yon_gtk_builder_get_widget(builder,"LogCompressionCombo"); + window->LogCompressionEntry=yon_gtk_builder_get_widget(builder,"LogCompressionEntry"); + window->LogCompressionSizeCombo=yon_gtk_builder_get_widget(builder,"LogCompressionSizeCombo"); + window->DivideJournalFilesCombo=yon_gtk_builder_get_widget(builder,"DivideJournalFilesCombo"); + window->LogIntervalCheck=yon_gtk_builder_get_widget(builder,"LogIntervalCheck"); + window->LogIntervalSpin=yon_gtk_builder_get_widget(builder,"LogIntervalSpin"); + window->LogIntervalAmountCheck=yon_gtk_builder_get_widget(builder,"LogIntervalAmountCheck"); + window->LogIntervalAmountSpin=yon_gtk_builder_get_widget(builder,"LogIntervalAmountSpin"); + window->LogSizeMaxCheck=yon_gtk_builder_get_widget(builder,"LogSizeMaxCheck"); + window->LogSizeMaxSpin=yon_gtk_builder_get_widget(builder,"LogSizeMaxSpin"); + window->LogSizeMaxCombo=yon_gtk_builder_get_widget(builder,"LogSizeMaxCombo"); + window->RotationSizeMaxCheck=yon_gtk_builder_get_widget(builder,"RotationSizeMaxCheck"); + window->RotationSizeMaxSpin=yon_gtk_builder_get_widget(builder,"RotationSizeMaxSpin"); + window->RotationSizeMaxCombo=yon_gtk_builder_get_widget(builder,"RotationSizeMaxCombo"); + window->LogFreeSpaceCheck=yon_gtk_builder_get_widget(builder,"LogFreeSpaceCheck"); + window->LogFreeSpaceSpin=yon_gtk_builder_get_widget(builder,"LogFreeSpaceSpin"); + window->LogFreeSpaceCombo=yon_gtk_builder_get_widget(builder,"LogFreeSpaceCombo"); + window->RedirectCombo=yon_gtk_builder_get_widget(builder,"RedirectCombo"); + window->RedirectTTYEntry=yon_gtk_builder_get_widget(builder,"RedirectTTYEntry"); + window->ForwardedTypeCombo=yon_gtk_builder_get_widget(builder,"ForwardedTypeCombo"); + window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel"); + window->LowerSizeEntry=yon_gtk_builder_get_widget(builder,"LowerSizeEntry"); + window->LowerSizeCombo=yon_gtk_builder_get_widget(builder,"LowerSizeCombo"); + window->LowerSizeButton=yon_gtk_builder_get_widget(builder,"LowerSizeButton"); + window->LowerTimeEntry=yon_gtk_builder_get_widget(builder,"LowerTimeEntry"); + window->LowerTimeCombo=yon_gtk_builder_get_widget(builder,"LowerTimeCombo"); + window->LowerTimeButton=yon_gtk_builder_get_widget(builder,"LowerTimeButton"); + window->headerTopic=yon_gtk_builder_get_widget(builder,"headerTopic"); + + gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL); + + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + 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)){ - gtk_list_store_set(widgets->list,&iter,3,file_amount,4,file_max_size,5,rotation_period,6,journal_size,7,journal_gathering,-1); + 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); + } } - gtk_widget_destroy(window->MainWindow); + } -void on_log_edit(GtkWidget *self, main_window *widgets){ - add_log_window *window = yon_log_open(widgets); - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->MainTree)); +void on_log_add(GtkWidget *self, main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->list); + GtkTreeIter iter; + add_log_window *window = on_add_open(); + gtk_widget_show(window->MainWindow); + gtk_widget_hide(window->StatisticsFrame); + gtk_widget_hide(window->JournaldButton); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); +} + +void on_log_edit(GtkWidget *self,main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->list); GtkTreeIter iter; - char *name; - long files; - long maxsize; - int rotation_period; - long journal_max_size; - int journal_gathering_period; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){ - gtk_tree_model_get(model,&iter,0,&name,3,&files,4,&maxsize,5,&rotation_period,6,&journal_max_size,7,&journal_gathering_period,-1); - if (strcmp(name,"journald")){ - gtk_widget_hide(window->JournalSettingsBox); + add_log_window *window = on_add_open(); + gtk_widget_show(window->MainWindow); + gtk_widget_hide(window->StatisticsFrame); + char *name; + gtk_tree_model_get(model,&iter,0,&name,-1); + if (!strcmp(name,"journald")){ + gtk_widget_hide(window->LogrotateButton); + gtk_widget_hide(window->MetalogButton); + gtk_widget_hide(window->SyslogButton); + g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets); } else { - gtk_widget_hide(window->LogSettingsBox); - } - gtk_label_set_text(GTK_LABEL(window->LogNameLabel),name); - dictionary *dict = NULL; - yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); - yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); - - g_signal_connect(G_OBJECT(window->FileAmountCheck),"toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->FileAmountSpin); - g_signal_connect(G_OBJECT(window->FileSizeCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->FileSizeSpin); - g_signal_connect(G_OBJECT(window->FileSizeCheck),"toggled" ,G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->FileSizeCombo); - g_signal_connect(G_OBJECT(window->RotationPeriodCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->RotationPeriodCombo); - g_signal_connect(G_OBJECT(window->JournalSizeCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->JournalSizeSpin); - g_signal_connect(G_OBJECT(window->JournalSizeCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->JournalSizeCombo); - g_signal_connect(G_OBJECT(window->JournalGatheringPeriodCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->JournalGatheringPeriodCombo); - g_signal_connect(G_OBJECT(window->SaveButton), "clicked", G_CALLBACK(on_edit_save),dict); - - if (files!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->FileAmountCheck),1); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->FileAmountSpin),files!=-1 ? files : 0); - int size_mod; - double size_final = (double)maxsize; - for (size_mod=0;(double)size_final>1024;size_mod++){ - size_final=size_final/1024; - } - if (size_final!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->FileSizeCheck),1); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->FileSizeSpin),size_final!=-1 ? size_final : 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->FileSizeCombo),size_mod!=-1 ? size_final : 0); - if (rotation_period!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->RotationPeriodCheck),1); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationPeriodCombo),rotation_period!=-1 ? rotation_period : 0); - size_mod; - size_final = (double)journal_max_size; - for (size_mod=0;(double)size_final>0.1;size_mod++){ - size_final=size_final/1024; + 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); } - if (size_final!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->JournalSizeCheck),1); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->JournalSizeSpin),size_final!=-1 ? size_final : 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->JournalSizeCombo),size_mod!=-1 ? size_final : 0); - if (journal_gathering_period!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->JournalGatheringPeriodCheck),1); - gtk_combo_box_set_active(GTK_COMBO_BOX(window->JournalGatheringPeriodCombo),journal_gathering_period!=-1 ? journal_gathering_period : 0); - gtk_widget_hide(window->LogAddingBox); - gtk_widget_show(window->LogEditingBox); - gtk_widget_show(window->editingBox); - gtk_dialog_run(GTK_DIALOG(window->MainWindow)); - gtk_widget_destroy(window->MainWindow); + gtk_widget_set_sensitive(window->LogAddingBox,0); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL); } - - } void on_log_remove(GtkWidget *self, main_window *widgets){ @@ -355,6 +449,20 @@ void on_log_remove(GtkWidget *self, main_window *widgets){ } } +void on_service_edit(GtkWidget *self,main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(widgets->ServicesList); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ServicesTree)),&model,&iter)){ + char *name; + gtk_tree_model_get(model,&iter,1,&name,-1); + if (!strcmp(name,"journald")){ + on_journald_open(NULL,widgets); + } else { + on_logrotate_tab_open(NULL,widgets); + } + } +} + // standard functions void config_init(){ @@ -371,6 +479,8 @@ void config_init(){ main_config.lock_load_global=0; main_config.lock_save_global=0; main_config.lock_save_local=0; + main_config.logrotate_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING); + main_config.logrotate_apps_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING); } main_window *setup_window(){ @@ -409,7 +519,11 @@ main_window *setup_window(){ widgets->ConfigureButton = yon_gtk_builder_get_widget(builder,"MainConfigureButton"); widgets->AddButton = yon_gtk_builder_get_widget(builder,"MainAddButton"); widgets->RemoveButton = yon_gtk_builder_get_widget(builder,"MainRemoveButton"); + widgets->Notebook = yon_gtk_builder_get_widget(builder,"MainNotebook"); + widgets->ServicesEditButton = yon_gtk_builder_get_widget(builder,"ServicesEditButton"); + widgets->ServicesTree = yon_gtk_builder_get_widget(builder,"ServicesTree"); widgets->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); + widgets->ServicesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"ServicesList")); widgets->MainTree = yon_gtk_builder_get_widget(builder,"MainTree"); @@ -431,6 +545,10 @@ main_window *setup_window(){ gtk_widget_set_sensitive(widgets->SaveMenuItem,0); } int size; + int service_size; + int dirs_size; + char *cname=NULL; + char *cparams=""; GtkTreeIter iter; config_str journals = yon_file_open(journals_list_path,&size); for (int i=0;ilist,&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); } + config_str services = yon_file_open(services_list_path,&service_size); + for (int i=0;iServicesList,&iter); + gtk_list_store_set(widgets->ServicesList,&iter,0,0,1,log[0],2,log[1],-1); + // yon_char_parsed_free(log,log_size); + } + // yon_char_parsed_free(services,service_size); + config_str dirs = yon_config_load(logrotate_config_command,&dirs_size); + for (int i=0;iHeadInfoLabel,"head-text","label",YON_TYPE_STRING); @@ -452,6 +612,7 @@ main_window *setup_window(){ g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_log_add),widgets); g_signal_connect(G_OBJECT(widgets->ConfigureButton),"clicked",G_CALLBACK(on_log_edit),widgets); g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_log_remove),widgets); + g_signal_connect(G_OBJECT(widgets->ServicesEditButton),"clicked",G_CALLBACK(on_service_edit),widgets); gtk_widget_show(widgets->Window); diff --git a/source/ubl-settings-logging.h b/source/ubl-settings-logging.h index ba88968..68bfa6a 100644 --- a/source/ubl-settings-logging.h +++ b/source/ubl-settings-logging.h @@ -21,10 +21,16 @@ #define glade_path "/com/ublinux/ui/ubl-settings-logging.glade" #define glade_add_path "/com/ublinux/ui/ubl-settings-logging-add.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" +#define glade_logrotate_table_path "/com/ublinux/ui/ubl-settings-logging-logrotate-table.glade" #define banner_path "/com/ublinux/images/ubl-settings-logging-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-logging.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define journals_list_path "/usr/share/ubl-settings-logging/csv/journals_list.csv" +#define services_list_path "/usr/share/ubl-settings-logging/csv/logging_services.csv" +#define logrotate_config_command "ls /etc/logrotate.d/ |sed -e 's/ */\\n/g'" +#define logrotate_config_path "/etc/logrotate.d/" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-logging" @@ -55,6 +61,9 @@ typedef struct { int lock_save_local; int lock_save_global; int lock_load_global; + + GtkListStore *logrotate_list; + GtkListStore *logrotate_apps_list; } config; typedef struct { @@ -92,7 +101,12 @@ typedef struct { GtkWidget *ConfigureButton; GtkWidget *AddButton; GtkWidget *RemoveButton; + + GtkWidget *Notebook; + GtkWidget *ServicesTree; + GtkWidget *ServicesEditButton; GtkListStore *list; + GtkListStore *ServicesList; // Custom } main_window; @@ -141,6 +155,12 @@ typedef struct { GtkWidget *LogEditingBox; GtkWidget *LogAddingBox; GtkWidget *LogNameLabel; + GtkWidget *LogrotateButton; + GtkWidget *MetalogButton; + GtkWidget *SyslogButton; + GtkWidget *JournaldButton; + GtkWidget *LogSizeLabel; + GtkWidget *StatisticsFrame; } add_log_window; typedef struct { @@ -158,5 +178,117 @@ int last_mode; } inspector_window; +typedef struct { + GtkWidget *Window; + + GtkWidget *MainTree; + GtkWidget *ConfiguraButton; + GtkWidget *CancelButton; + GtkWidget *SaveButton; + GtkListStore *list; +} logrotate_tab_window; + +typedef struct { + GtkWidget *Window; + GtkWidget *AppsMainTree; + GtkWidget *AppsConfigureButton; + GtkWidget *MainTree; + GtkWidget *AddButton; + GtkWidget *RemoveButton; + GtkWidget *ConfigureButton; + GtkWidget *CancelButton; + GtkWidget *SaveButton; +} logrotate_window; + +typedef struct { + GtkWidget *MainWindow; + GtkWidget *CancelButton; + GtkWidget *SaveButton; + GtkWidget *LogNameLabel; + GtkWidget *LogDescriptionLabel; + GtkWidget *LogStorageCombo; + GtkWidget *LogCompressionCombo; + GtkWidget *LogCompressionEntry; + GtkWidget *LogCompressionSizeCombo; + GtkWidget *DivideJournalFilesCombo; + GtkWidget *LogIntervalCheck; + GtkWidget *LogIntervalSpin; + GtkWidget *LogIntervalAmountCheck; + GtkWidget *LogIntervalAmountSpin; + GtkWidget *LogSizeMaxCheck; + GtkWidget *LogSizeMaxSpin; + GtkWidget *LogSizeMaxCombo; + GtkWidget *RotationSizeMaxCheck; + GtkWidget *RotationSizeMaxSpin; + GtkWidget *RotationSizeMaxCombo; + GtkWidget *LogFreeSpaceCheck; + GtkWidget *LogFreeSpaceSpin; + GtkWidget *LogFreeSpaceCombo; + GtkWidget *RedirectCombo; + GtkWidget *RedirectTTYEntry; + GtkWidget *ForwardedTypeCombo; + GtkWidget *LogSizeLabel; + GtkWidget *LowerSizeEntry; + GtkWidget *LowerSizeCombo; + GtkWidget *LowerSizeButton; + GtkWidget *LowerTimeEntry; + GtkWidget *LowerTimeCombo; + GtkWidget *LowerTimeButton; + GtkWidget *headerTopic; +} journald_window; + +typedef struct { + GtkWidget *MainWindow; + GtkWidget *CancelButton; + GtkWidget *SaveButton; + GtkWidget *LogNamelabel; + GtkWidget *LogNameButton; + GtkWidget *LogNameDescriptionLabel; + GtkWidget *RotationPeriodCheck; + GtkWidget *RotationPeriodMainCombo; + GtkWidget *RotationPeriodAdditionalCombo; + GtkWidget *JournalMaxSizeCheck; + GtkWidget *JournalMaxSizeSpin; + GtkWidget *JournalMaxSizeCombo; + GtkWidget *FileAmountCheck; + GtkWidget *FileAmountSpin; + GtkWidget *FileAmountCombo; + GtkWidget *FileAmountEntry; + GtkWidget *FileAmountButton; + GtkWidget *RotationAtUserCombo; + GtkWidget *RotationAtGroupCombo; + GtkWidget *ErrorProcessingCombo; + GtkWidget *JournalEmptyCombo; + GtkWidget *DoNotRotateYoungerCheck; + GtkWidget *DoNotRotateYoungerSpin; + GtkWidget *DeleteOlderCheck; + GtkWidget *DeleteOlderSpin; + GtkWidget *RotateSizeMaxAfterTimeCheck; + GtkWidget *RotateSizeMaxAfterTimeSpin; + GtkWidget *RotateSizeMaxAfterTimeCombo; + GtkWidget *RotateSizeMaxBeforeTimeCheck; + GtkWidget *RotateSizeMaxBeforeTimeSpin; + GtkWidget *RotateSizeMaxBeforeTimeCombo; + GtkWidget *CreateLogCombo; + GtkWidget *CreateLogUserCombo; + GtkWidget *CreateGroupCombo; + GtkWidget *CreateLogEntry; + GtkWidget *CreateLogButton; + GtkWidget *CutCheck; + GtkWidget *CompressionCombo; + GtkWidget *QueueCombo; + GtkWidget *SaveOriginalCombo; + GtkWidget *SaveOriginalEntry; + GtkWidget *AddDateCombo; + GtkWidget *OldNumberCombo; + GtkWidget *OldNumberEntry; + GtkWidget *EmailCombo; + GtkWidget *EmailEntry; + GtkWidget *EmailContentsCombo; + GtkWidget *ManualInputEntry; + GtkWidget *LogSizeLabel; + GtkWidget *headerTopic; + GtkListStore *list; +} logrotate_configure_window; main_window *setup_window(); \ No newline at end of file diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 4dc8b33..8cc0436 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -751,6 +751,13 @@ config_str yon_char_parsed_new (int *size, ...){ return new_parsed; } +void yon_char_parsed_free(config_str source, int size){ + for (int i=0;id_name); + else dir = yon_char_parsed_new(size,de->d_name,NULL); + } + closedir(directory); + } + return dir; +} + //config functions typedef struct yon_config_parameter diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 6ab711f..db8ade7 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -121,6 +121,8 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo // char functions +#define yon_char_divide_search_self(str,find,delete_divider) {char *temp = str; str = yon_char_divide_search(str,find,delete_divider); free(temp);} + int yon_char_find_last(char *source, char find); char *yon_char_append(char *source, char *append); @@ -151,6 +153,8 @@ int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check config_str yon_char_parsed_new (int *size, ...); +void yon_char_parsed_free(config_str source, int size); + void yon_char_parsed_copy(config_str *source, config_str *to_copy); config_str yon_char_parsed_append(config_str parsed, int *size, char *string); @@ -173,6 +177,8 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size); config_str yon_file_open(char *file_path, int *size); +config_str yon_dir_get_contents(char *dir_path, int *size); + //config functions #define ubconfig_save_command "ubconfig" diff --git a/ubl-settings-logging-add.glade b/ubl-settings-logging-add.glade index 0af9e83..dcba07a 100644 --- a/ubl-settings-logging-add.glade +++ b/ubl-settings-logging-add.glade @@ -29,14 +29,40 @@ emblem-ok-symbolic + True + False + com.ublinux.ubl-settings-logging.increase-symbolic + + True False com.ublinux.ubl-settings-logging.zoom-symbolic + + True + False + document-save-symbolic + + + True + False + document-save-symbolic + + + True + False + document-save-symbolic + + + True + False + document-save-symbolic + 450 - 450 False + True + com.ublinux.ubl-settings-logging dialog @@ -83,7 +109,8 @@ False False - 2 + end + 0 @@ -131,6 +158,31 @@ 1 + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Path (-s): + 0 + + + False + True + 0 + + True @@ -139,6 +191,22 @@ True True + 1 + + + + + True + True + True + image4 + + + + False + True 2 @@ -158,11 +226,27 @@ 3 + + + True + True + True + image9 + + + + False + True + 4 + + False True - 0 + 1 @@ -197,7 +281,7 @@ False True - 1 + 2 @@ -207,470 +291,180 @@ 0 + + + False + True + 0 + + + + + True + False + 5 + 5 + + + False + True + 1 + + + + + True + False + 5 - + + True False - 5 + Control: + + + False + True + 0 + + + + + True + False + 19 - + + Logrotate True - False - Log/Journal: + True + True + image5 - False + True True 0 - + + Metalog True - False + False + True + True + image7 - False + True True 1 + + + Syslog-ng + True + False + True + True + image6 + + + True + True + 2 + + + + + Journald + True + True + True + image8 + + + False + True + 3 + + - False + True True - 1 + 4 + + + False + True + 2 + + + + + True + False + 0 + in - + True False - vertical - 5 + 5 + 12 + 5 + 5 - + True False - 0.019999999552965164 - in + 5 - - True - False - 5 - 5 - 5 - - - True - False - vertical - 5 - - - True - False - vertical - 5 - - - True - False - 5 - - - File amount: - True - True - False - True - - - False - True - 0 - - - - - True - False - True - adjustment2 - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - 5 - - - File maximum size: - True - True - False - True - - - False - True - 0 - - - - - True - False - True - adjustment1 - - - True - True - 1 - - - - - True - False - False - 0 - - Kb - Mb - Gb - Tb - - - - True - True - 2 - - - - - False - True - 1 - - - - - True - False - 5 - - - Rotation period: - True - True - False - True - - - False - True - 0 - - - - - True - False - False - - day - week - month - - - - True - True - 1 - - - - - False - True - 2 - - - - - False - True - 0 - - - - - True - False - vertical - 5 - - - True - False - 5 - - - Journal maximum size: - True - True - False - True - - - False - True - 0 - - - - - True - False - True - 0 - adjustment3 - - - True - True - 1 - - - - - True - False - False - 0 - - Kb - Mb - Gb - Tb - - - - True - True - 2 - - - - - False - True - 0 - - - - - True - False - 5 - - - Information gathering period: - True - True - False - True - - - False - True - 0 - - - - - True - False - False - - day - week - month - - - - True - True - 1 - - - - - False - True - 1 - - - - - False - True - 1 - - - - - - - True False - Rotation configuration + Log size: + + False + True + 0 + - - - False - True - 0 - - - - - True - False - 0.019999999552965164 - in - - True - False - 5 - 5 - 5 - - - True - False - vertical - 5 - - - True - False - 5 - - - True - False - Log size: - - - False - True - 0 - - - - - True - False - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - 5 - - - True - False - Disk size (overall/free): - - - False - True - 0 - - - - - True - False - - - False - True - 1 - - - - - False - True - 1 - - - - - - - - + True False - Statistics + 0.0 Mb + + True + True + 1 + - - False - True - 1 - - - False - True - 2 - + + + + True + False + Statistics + False True - 2 + end + 4 @@ -719,6 +513,13 @@ + + + + True + False + com.ublinux.ubl-settings-logging.decrease-symbolic + diff --git a/ubl-settings-logging-inspector.glade b/ubl-settings-logging-inspector.glade index d6d3a4a..33f25fa 100644 --- a/ubl-settings-logging-inspector.glade +++ b/ubl-settings-logging-inspector.glade @@ -38,6 +38,21 @@ False emblem-synchronizing-symbolic + + True + False + emblem-documents-symbolic + + + True + False + emblem-synchronizing-symbolic + + + True + False + emblem-shared-symbolic + 800 @@ -140,6 +155,57 @@ 3 + + + True + True + True + Show only priority error messages, critical messages and warnings + image7 + + + + False + True + 4 + + + + + True + True + True + Show only priority error messages, critical messages and warnings + image6 + + + + False + True + 5 + + + + + True + True + True + Show only priority error messages, critical messages and warnings + image8 + + + + False + True + 6 + + False diff --git a/ubl-settings-logging-journald.glade b/ubl-settings-logging-journald.glade new file mode 100644 index 0000000..28c9956 --- /dev/null +++ b/ubl-settings-logging-journald.glade @@ -0,0 +1,978 @@ + + + + + + + + 1024 + 1 + 10 + + + 1024 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + True + False + emblem-ok-symbolic + + + True + False + emblem-ok-symbolic + + + 450 + 450 + False + True + com.ublinux.ubl-settings-logging + dialog + + + False + 5 + 5 + 5 + 5 + vertical + 5 + + + False + end + + + Cancel + True + True + True + image1 + + + True + True + 0 + + + + + Save + True + True + True + image2 + + + True + True + 1 + + + + + False + False + 2 + + + + + True + False + vertical + + + True + False + + + True + False + 5 + + + True + False + Log/Journal: + + + False + True + 0 + + + + + True + False + logname + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Description: + + + False + True + 0 + + + + + True + False + logdescription + + + False + True + 1 + + + + + False + True + end + 1 + + + + + False + True + 0 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Journal storage place: + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Use compression: + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + True + True + + + False + True + 2 + + + + + True + False + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 3 + + + + + False + True + 1 + + + + + True + False + 5 + + + True + False + Divide journal files: + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + False + True + 2 + + + + + True + False + 5 + + + Log recording journal interval: + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment4 + + + False + True + 1 + + + + + Records amount: + True + True + False + True + + + False + True + 2 + + + + + True + True + adjustment5 + + + False + True + 3 + + + + + False + True + 3 + + + + + True + False + 5 + + + Maximum size of all logs: + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment6 + + + False + True + 1 + + + + + True + False + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 4 + + + + + True + False + 5 + + + Maximum size of rotation journal: + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment7 + + + False + True + 1 + + + + + True + False + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 5 + + + + + True + False + 5 + + + Leave free space at storage: + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment8 + + + False + True + 1 + + + + + True + False + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 6 + + + + + True + False + 5 + + + True + False + Redirect to console: + + + False + True + 0 + + + + + True + False + + Default + + + + False + True + 1 + + + + + True + False + TTY: + + + False + True + 2 + + + + + True + True + + + False + True + 3 + + + + + False + True + 7 + + + + + True + False + 5 + + + True + False + Type of forwarded messages: + + + False + True + 0 + + + + + True + False + + Default + + + + False + True + 1 + + + + + False + True + 8 + + + + + + + + + True + False + Journal configuration + + + + + False + True + 1 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Total log size: + + + False + True + 0 + + + + + True + False + 0.0 Mb + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Lower size to: + + + False + True + 0 + + + + + True + True + + + False + True + 1 + + + + + True + False + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + Apply + True + True + True + image4 + + + False + True + 3 + + + + + False + True + 1 + + + + + True + False + 5 + + + True + False + Lower size to: + + + False + True + 0 + + + + + True + True + + + False + True + 1 + + + + + True + False + + Minutes + Hours + Days + Weeks + Months + + + + False + True + 2 + + + + + Apply + True + True + True + image3 + + + False + True + 3 + + + + + False + True + 2 + + + + + + + + + True + False + Statistics + + + + + False + True + 2 + + + + + False + True + 1 + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + Logs and events + + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 32 + com.ublinux.ubl-settings-logging + + + + + + + diff --git a/ubl-settings-logging-logrotate-table.glade b/ubl-settings-logging-logrotate-table.glade new file mode 100644 index 0000000..5eeb2c1 --- /dev/null +++ b/ubl-settings-logging-logrotate-table.glade @@ -0,0 +1,386 @@ + + + + + + + + 1024 + 1 + 10 + + + 1024 + 1 + 10 + + + 100 + 1 + 10 + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + True + False + document-edit-symbolic + + + True + False + com.ublinux.ubl-settings-logging.decrease-symbolic + + + True + False + com.ublinux.ubl-settings-logging.increase-symbolic + + + True + False + com.ublinux.ubl-settings-logging.back-symbolic + + + 450 + 450 + False + True + com.ublinux.ubl-settings-logging + dialog + + + False + 5 + 5 + 5 + 5 + vertical + 5 + + + False + end + + + Cancel + True + True + True + image1 + + + True + True + 0 + + + + + Save + True + True + True + image2 + + + True + True + 1 + + + + + False + False + 2 + + + + + True + True + + + True + False + 5 + 5 + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + True + True + image5 + + + + False + True + 0 + + + + + True + True + True + image4 + + + + False + True + 1 + + + + + True + True + True + image3 + + + + False + True + 2 + + + + + False + True + 0 + + + + + True + True + in + + + True + True + + + + + + Log/Journal + + + + + + + + Path + + + + + + + + Description + + + + + + + + + + True + True + 1 + + + + + + + True + False + System configuration + + + False + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + True + True + image8 + + + + False + True + 2 + + + + + False + True + 0 + + + + + True + True + in + + + True + True + + + + + + Log/Journal + + + + 0 + + + + + + + Path + + + + 1 + + + + + + + + + True + True + 1 + + + + + 1 + + + + + True + False + Applications configuration + + + 1 + False + + + + + True + True + 0 + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + Logs and events + + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 32 + com.ublinux.ubl-settings-logging + + + + + + + diff --git a/ubl-settings-logging-logrotate.glade b/ubl-settings-logging-logrotate.glade new file mode 100644 index 0000000..ce37634 --- /dev/null +++ b/ubl-settings-logging-logrotate.glade @@ -0,0 +1,1700 @@ + + + + + + + + 1024 + 1 + 10 + + + 1024 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + True + False + document-edit-symbolic + + + True + False + com.ublinux.ubl-settings-logging.zoom-symbolic + + + True + False + com.ublinux.ubl-settings-logging.profile-symbolic + + + 800 + 600 + False + True + com.ublinux.ubl-settings-logging + dialog + + + False + 5 + 5 + 5 + 5 + vertical + 5 + + + False + end + + + Cancel + True + True + True + image1 + + + True + True + 0 + + + + + Save + True + True + True + image2 + + + True + True + 1 + + + + + False + False + 2 + + + + + True + True + in + + + True + False + 5 + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Log/Journal: + + + False + True + 0 + + + + + True + False + Logname + + + False + True + 1 + + + + + True + True + True + image3 + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Description: + + + False + True + 0 + + + + + True + False + logdescription + + + False + True + 1 + + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + Rotation period: + True + True + False + True + + + False + True + 0 + + + + + True + False + + Week + Month + Year + + + + False + True + 1 + + + + + True + False + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + 5 + + + Maximum size of file: + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment4 + + + False + True + 1 + + + + + True + False + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + + + + + True + False + Checking frequency configuration + + + + + False + True + 0 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + File amount: + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment6 + + + False + True + 1 + + + + + True + False + Store at: + + + False + True + 2 + + + + + True + False + + Default + + + + False + True + 3 + + + + + True + True + + + False + True + 4 + + + + + True + True + True + image4 + + + False + True + 5 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Rotation as user: + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + False + Rotation as group: + + + False + True + 2 + + + + + True + False + + + False + True + 3 + + + + + False + True + 1 + + + + + + + + + True + False + Rotation configuration + + + + + False + True + 1 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Error processing: + + + False + True + 0 + + + + + True + False + + Output errors if log file does not exist + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Rotation of jurnal even when it is empty: + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + + + Do not rotate journal younger than + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment7 + + + False + True + 1 + + + + + True + False + days + + + False + True + 2 + + + + + False + True + 2 + + + + + True + False + 5 + + + Delete rotated journals older than + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment5 + + + False + True + 1 + + + + + True + False + days + + + False + True + 2 + + + + + False + True + 3 + + + + + True + False + 5 + + + Rotate journals if size more than + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment8 + + + False + True + 1 + + + + + True + False + + Kb + Mb + Gb + + + + False + True + 2 + + + + + True + False + but not earlier than the specified time interval + + + False + True + 3 + + + + + False + True + 4 + + + + + True + False + 5 + + + Rotate journals if size more than + True + True + False + True + + + False + True + 0 + + + + + True + True + adjustment9 + + + False + True + 1 + + + + + True + False + + Kb + Mb + Gb + + + + False + True + 2 + + + + + True + False + before specified time interval + + + False + True + 3 + + + + + False + True + 5 + + + + + + + + + True + False + File choosing configuration + + + + + False + True + 2 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Create log + + + False + True + 0 + + + + + True + False + + Default + + + + False + True + 1 + + + + + True + False + as user: + + + False + True + 2 + + + + + True + False + + Default + + + + False + True + 3 + + + + + True + False + as group: + + + False + True + 4 + + + + + True + False + + Default + + + + False + True + 5 + + + + + True + False + rules: + + + False + True + 6 + + + + + True + True + + + False + True + 7 + + + + + True + True + True + image5 + + + False + True + 8 + + + + + False + True + 0 + + + + + True + False + 5 + + + Cut source journal fileafter copy creating instead of moving old journal file and creating new one + True + True + False + True + + + False + True + 0 + + + + + False + True + 1 + + + + + + + + + True + False + Files and directories configuration + + + + + False + True + 3 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Use compression: + + + False + True + 0 + + + + + True + False + 0 + + On + Off + + + + False + True + 1 + + + + + True + False + Delay compressin by one journal in queue: + + + False + True + 2 + + + + + True + False + 0 + + Default + + + + False + True + 3 + + + + + False + True + 0 + + + + + + + + + True + False + Compression configuration + + + + + False + True + 4 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Save original log file after rotation if it has specified extension: + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + True + True + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Add date of rotation before log header + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + + + True + False + Number from which numbering of old logs will begin + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + True + True + + + False + True + 2 + + + + + False + True + 2 + + + + + + + + + True + False + Filename configuration + + + + + False + True + 5 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Email after rotation: + + + False + True + 0 + + + + + True + False + 0 + + Default + + + + False + True + 1 + + + + + True + False + adress: + + + False + True + 2 + + + + + True + True + + + False + True + 3 + + + + + True + False + contents: + + + False + True + 4 + + + + + True + False + 0 + + Default + + + + False + True + 5 + + + + + False + True + 0 + + + + + + + + + True + False + Message configuration + + + + + False + True + 6 + + + + + True + False + 5 + + + True + False + Manual input: + + + False + True + 0 + + + + + True + True + + + True + True + 1 + + + + + False + True + 7 + + + + + + + + + True + False + Rotation configuration + + + + + False + True + 1 + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + + + True + False + 5 + + + True + False + Log size: + + + False + True + 0 + + + + + True + False + loglize + + + True + True + 1 + + + + + + + + + True + False + Statistics + + + + + False + True + 2 + + + + + + + + + True + True + 1 + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + Logs and events + + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 32 + com.ublinux.ubl-settings-logging + + + + + + + + diff --git a/ubl-settings-logging.glade b/ubl-settings-logging.glade index 5b11dd0..2247491 100644 --- a/ubl-settings-logging.glade +++ b/ubl-settings-logging.glade @@ -191,6 +191,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + + + + + + + + + + + + + + + True False @@ -211,6 +227,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False user-trash-symbolic + + True + False + com.ublinux.ubl-settings-logging.stop-symbolic + + + True + False + com.ublinux.ubl-settings-logging.play-symbolic + + + True + False + document-edit-symbolic + True False @@ -627,25 +658,88 @@ translated and supported by community. True vertical - + True - False - 5 + True True False - vertical + 5 + 5 + 5 + 5 5 - + True - True - True - image1 - + False + vertical + 5 + + + True + True + True + image1 + + + + False + True + 0 + + + + + True + True + True + image2 + + + + False + True + 1 + + + + + True + True + True + image3 + + + + False + True + 2 + + + + + True + True + True + image4 + + + + False + True + 3 + + False @@ -654,139 +748,237 @@ translated and supported by community. - + True True - True - image2 - + in + + + True + True + liststore1 + 2 + + + + + + True + fixed + 30 + Log/Journal + + + end + 100 + + + 0 + + + + + + + True + fixed + 30 + Path + + + end + 100 + + + 1 + + + + + + + True + fixed + 30 + Description + + + end + 100 + + + 2 + + + + + + - False + True True 1 + + + + + True + False + Journals + + + False + + + + + True + False + 5 + 5 + 5 + 5 + 5 - - True - True - True - image3 - - - - False - True - 2 - - - - + True - True - True - image4 - + False + vertical + 5 + + + True + True + True + image5 + + + + False + True + 0 + + + + + True + True + True + image6 + + + + False + True + 1 + + + + + True + True + True + image7 + + + + False + True + 2 + + False True - 3 + 0 - - - False - True - 0 - - - - - True - True - in - + True True - liststore1 - 2 - - - + in - - True - fixed - 30 - Log/Journal + + True + True + ServicesList + + + - - end - 100 + + Status + + + + 0 + + - - 0 - - - - - - True - fixed - 30 - Path - - end - 100 + + Service + + + + 1 + + - - 1 - - - - - - True - fixed - 30 - Description - - end - 100 + + Description + + + + 2 + + - - 2 - + + True + True + 1 + - True - True 1 + + + True + False + Services + + + 1 + False + + True True - 0 + 1