Merge pull request 'master' (#62) from YanTheKaller/ubl-settings-logging:master into master

Reviewed-on: #62
pull/139/head
Dmitry Razumov 2 years ago
commit 2c797d7998

@ -139,6 +139,7 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.trash-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.trash-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sort-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sort-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sync-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sync-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.funnel-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.generic1-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.generic1-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.generic2-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.generic2-symbolic.svg"
@ -150,6 +151,7 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "journals_list.csv" @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/${PKGNAME}/csv/" "logging_services.csv"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.auth.policy"
@if [ -z ${DESTDIR} ]; then \ @if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<vendor>UBLinux</vendor>
<vendor_url>https://ublinux.ru</vendor_url>
<action id="com.ublinux.ubl-settings-logging">
<description>Run ubl-settings-logging as root</description>
<description xml:lang="ru">Запуск утилиты ubl-settings-logging с правами root</description>
<message>Authentication is required to run ubl-settings-logging</message>
<message xml:lang="ru">Требуется авторизация для запуска утилиты ubl-settings-logging с правами root</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pkexec</annotate>
</action>
</policyconfig>

@ -10,6 +10,7 @@
<file>ubl-settings-logging-rules.glade</file> <file>ubl-settings-logging-rules.glade</file>
<file>ubl-settings-logging-filechooser.glade</file> <file>ubl-settings-logging-filechooser.glade</file>
<file>ubl-settings-logging-logrotate-table.glade</file> <file>ubl-settings-logging-logrotate-table.glade</file>
<file>ubl-settings-logging-terminal.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>ubl-settings-logging.css</file> <file>ubl-settings-logging.css</file>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.1"
id="svg1359"
width="256"
height="256"
viewBox="0 0 256 256"
sodipodi:docname="funnel.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1363" />
<sodipodi:namedview
id="namedview1361"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.5333252"
inkscape:cx="133.37027"
inkscape:cy="231.84906"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g1365" />
<g
inkscape:groupmode="layer"
inkscape:label="Image"
id="g1365">
<path
style="fill:#313131;stroke-width:0.499256;fill-opacity:1"
d="m 104.65705,237.70905 c -0.62183,-0.24981 -1.35199,-1.03652 -1.62259,-1.74825 -0.31065,-0.81708 -0.49199,-18.8221 -0.49199,-48.8496 V 139.55564 L 63.364841,95.35613 24.187217,51.156622 18.806245,50.863604 C 12.784621,50.535703 10.172614,49.782271 6.8934643,47.427365 -3.1207996,40.235664 -1.3333195,24.490308 10.106237,19.127045 l 2.819779,-1.322011 H 128.00452 243.08303 l 2.81978,1.322011 c 3.59114,1.683651 6.65629,4.748951 8.33921,8.33961 1.8728,3.995783 1.8839,9.615451 0.0268,13.553783 -3.22543,6.840051 -9.19011,9.973686 -19.00052,9.982229 l -3.32143,0.0029 -39.24013,44.276883 -39.24012,44.27689 -0.011,35.72889 c -0.0103,33.46974 -0.0684,35.85515 -0.9194,37.72591 -0.49963,1.09836 -1.22486,2.25007 -1.61161,2.55936 -1.04329,0.83431 -44.14983,22.65836 -44.68151,22.62142 -0.25051,-0.0174 -0.96424,-0.23604 -1.58606,-0.48586 z"
id="path1444" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,5 +1,5 @@
Service_Name;Service_Description;command_start;command_stop;command_enable;command_disable;command_status Service_Name;Service_Description;command_start;command_stop;command_enable;command_disable;command_status
journald;System event log;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 journald;System event log;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;System event log rotation service;systemctl start logrotate.timer;systemctl stop logrotate.timer,systemctl stop logrotate.service;ubconfig set config SERVICESNOSTART-=,logrotate.timer;ubconfig set config SERVICESNOSTART+=,logrotate.timer;systemctl status logrotate.service logrotate;System event log rotation service;systemctl start logrotate.timer;systemctl stop logrotate.timer logrotate.service;ubconfig set config SERVICESNOSTART-=,logrotate.timer;ubconfig set config SERVICESNOSTART+=,logrotate.timer;systemctl status logrotate.service
#metalog;System event log;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service #metalog;System event log;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;Service for collecting messages from system events of active network devices;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 #syslog-ng;Service for collecting messages from system events of active network devices;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
1 Service_Name Service_Description command_start command_stop command_enable command_disable command_status
2 journald System event log 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
3 logrotate System event log rotation service systemctl start logrotate.timer systemctl stop logrotate.timer,systemctl stop logrotate.service systemctl stop logrotate.timer logrotate.service ubconfig set config SERVICESNOSTART-=,logrotate.timer ubconfig set config SERVICESNOSTART+=,logrotate.timer systemctl status logrotate.service
4 #metalog System event log systemctl start metalog.service systemctl stop metalog.service ubconfig set config SERVICESSTART+=metalog.service ubconfig set config SERVICESSTART-=metalog.service systemctl status metalog.service
5 #syslog-ng Service for collecting messages from system events of active network devices 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

@ -13,6 +13,11 @@ include_directories(${VTE291_INCLUDE_DIRS})
link_directories(${VTE291_LIBRARY_DIRS}) link_directories(${VTE291_LIBRARY_DIRS})
add_definitions(${VTE291_CFLAGS_OTHER}) add_definitions(${VTE291_CFLAGS_OTHER})
pkg_check_modules(POLKIT REQUIRED polkit-agent-1)
include_directories(${POLKIT_INCLUDE_DIRS})
link_directories(${POLKIT_LIBRARY_DIRS})
add_definitions(${POLKIT_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
option(WEBKIT_FOUND "No" OFF) option(WEBKIT_FOUND "No" OFF)
@ -44,6 +49,7 @@ set(DEPENDFILES
../ubl-settings-logging-logrotate.glade ../ubl-settings-logging-logrotate.glade
../ubl-settings-logging-logrotate-table.glade ../ubl-settings-logging-logrotate-table.glade
../ubl-settings-logging-filechooser.glade ../ubl-settings-logging-filechooser.glade
../ubl-settings-logging-terminal.glade
../gresource.xml ../gresource.xml
../ubl-settings-logging-banner.png ../ubl-settings-logging-banner.png
../ubl-settings-logging.css ../ubl-settings-logging.css
@ -89,7 +95,8 @@ set(SOURCE_FILES
set(LIBRARIES set(LIBRARIES
${GTK_LIBRARIES} ${GTK_LIBRARIES}
${WEBKIT_LIBRARIES} ${WEBKIT_LIBRARIES}
${VTE291_LIBRARIES} ${VTE291_LIBRARIES}
${POLKIT_LIBRARIES}
pthread) pthread)

File diff suppressed because it is too large Load Diff

@ -10,12 +10,14 @@
#include <libintl.h> #include <libintl.h>
#include <vte/vte.h> #include <vte/vte.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/select.h>
#include <pwd.h> #include <pwd.h>
#include "../compile/ubl-cmake.h" #include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
#include "ubl-strings.h" #include "ubl-strings.h"
#include <polkit/polkit.h>
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-logging" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-logging"
@ -30,6 +32,7 @@
#define glade_logrotate_table_path "/com/ublinux/ui/ubl-settings-logging-logrotate-table.glade" #define glade_logrotate_table_path "/com/ublinux/ui/ubl-settings-logging-logrotate-table.glade"
#define glade_rules_path "/com/ublinux/ui/ubl-settings-logging-rules.glade" #define glade_rules_path "/com/ublinux/ui/ubl-settings-logging-rules.glade"
#define glade_filechooser_path "/com/ublinux/ui/ubl-settings-logging-filechooser.glade" #define glade_filechooser_path "/com/ublinux/ui/ubl-settings-logging-filechooser.glade"
#define glade_terminal_path "/com/ublinux/ui/ubl-settings-logging-terminal.glade"
#define banner_path "/com/ublinux/images/ubl-settings-logging-banner.png" #define banner_path "/com/ublinux/images/ubl-settings-logging-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-logging.css" #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 config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
@ -39,6 +42,7 @@
#define journald_size_command "journalctl --disk-usage | grep -oE \"[0-9]{1,}.[0-9]{1,}[A-Z]\"" #define journald_size_command "journalctl --disk-usage | grep -oE \"[0-9]{1,}.[0-9]{1,}[A-Z]\""
#define logrotate_size_command(paths) yon_char_unite("du ",paths," |grep -oE '^[0-9]{1,}'",NULL) #define logrotate_size_command(paths) yon_char_unite("du ",paths," |grep -oE '^[0-9]{1,}'",NULL)
#define logrotate_config_path "/etc/logrotate.d/" #define logrotate_config_path "/etc/logrotate.d/"
#define custom_logs_saving_file_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/logwatcher.csv",NULL)
#define LocalePath "/usr/share/locale" #define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-logging" #define LocaleName "ubl-settings-logging"
@ -46,14 +50,14 @@
#define JOURNALD(key) yon_char_unite("JOURNALD[",key,"]",NULL) #define JOURNALD(key) yon_char_unite("JOURNALD[",key,"]",NULL)
#define LOGROTATE(key) yon_char_unite("LOGROTATE[",key,"]",NULL) #define LOGROTATE(key) yon_char_unite("LOGROTATE[",key,"]",NULL)
#define get_journal_output_command "clear;journalctl --no-pager" #define get_journal_output_command "clear;SYSTEMD_COLORS=false journalctl --no-pager"
#define get_journal_output_since_boot_command "clear;journalctl --no-pager -b" #define get_journal_output_since_boot_command "clear;SYSTEMD_COLORS=false journalctl --no-pager -b"
#define get_journal_output_followed_command "clear;journalctl --no-pager -f" #define get_journal_output_followed_command "clear;SYSTEMD_COLORS=false journalctl --no-pager -f"
#define get_journal_output_kernel_command "clear;journalctl --no-pager -k" #define get_journal_output_kernel_command "clear;SYSTEMD_COLORS=false journalctl --no-pager -k"
#define get_journal_output_prioritied_command "clear;journalctl --no-pager -p err..alert" #define get_journal_output_prioritied_command "clear;SYSTEMD_COLORS=false journalctl --no-pager -p err..alert"
#define get_journal_all_boots_command "clear;journalctl --list-boots" #define get_journal_all_boots_command "clear;SYSTEMD_COLORS=false journalctl --no-pager --list-boots"
#define get_journal_all_units_command "clear;systemd-analyze blame --no-pager" #define get_journal_all_units_command "clear;SYSTEMD_COLORS=false systemd-analyze blame --no-pager"
#define get_journal_init_tree_command "clear;systemd-analyze critical-chain" #define get_journal_init_tree_command "clear;SYSTEMD_COLORS=false systemd-analyze critical-chain --no-pager"
#define group_list_path "/etc/group" #define group_list_path "/etc/group"
@ -69,6 +73,7 @@ string version_application;
char *local; char *local;
typedef struct { typedef struct {
char **envp;
int always_open_documentation; int always_open_documentation;
int win_pos_x; int win_pos_x;
int win_pos_y; int win_pos_y;
@ -88,8 +93,16 @@ typedef struct {
GtkListStore *logrotate_list; GtkListStore *logrotate_list;
GtkListStore *logrotate_apps_list; GtkListStore *logrotate_apps_list;
config_str groups; config_str groups;
int groups_size; int groups_size;
config_str *saved_logs;
GPermission *permissions;
pthread_t inspector_thread;
int remove_thread;
} config; } config;
typedef struct { typedef struct {
@ -136,6 +149,8 @@ typedef struct {
GtkWidget *ServicesEnableDisableButton; GtkWidget *ServicesEnableDisableButton;
GtkListStore *list; GtkListStore *list;
GtkListStore *ServicesList; GtkListStore *ServicesList;
GtkWidget *UpgradePermissionsMenuItem;
GtkWidget *PermissionsLock;
// Custom // Custom
} main_window; } main_window;
@ -154,6 +169,7 @@ typedef struct {
typedef struct { typedef struct {
GtkWidget *MainWindow; GtkWidget *MainWindow;
GtkWidget *StatusBox;
GtkWidget *adjustment1; GtkWidget *adjustment1;
GtkWidget *adjustment2; GtkWidget *adjustment2;
GtkWidget *CancelButton; GtkWidget *CancelButton;
@ -176,21 +192,25 @@ typedef struct {
} add_log_window; } add_log_window;
typedef struct { typedef struct {
GtkWidget *MainWindow; GtkWidget *MainWindow;
GtkWidget *plugBox; GtkWidget *plugBox;
GtkWidget *ShowSinceBootButton; GtkWidget *ShowSinceBootButton;
GtkWidget *NewMessagesButton; GtkWidget *NewMessagesButton;
GtkWidget *ShowKernelButton; GtkWidget *ShowKernelButton;
GtkWidget *ShowPriorityButton; GtkWidget *ShowPriorityButton;
GtkWidget *UpdateButton; GtkWidget *UpdateButton;
GtkWidget *ShowAllBootsButton; GtkWidget *ShowAllBootsButton;
GtkWidget *ShowAllUnitsButton; GtkWidget *ShowAllUnitsButton;
GtkWidget *ShowInitTreeButton; GtkWidget *ShowInitTreeButton;
GtkWidget *LoggingTerminal; GtkWidget *LoggingNotebook;
GtkWidget *JournalActionsBox; GtkWidget *JournalActionsBox;
int last_mode; GtkListStore *list;
char *journal_name; GtkWidget *JournaldTree;
char *journal_paths; dictionary *terminals;
int last_mode;
char *journal_name;
int journal_size;
config_str journal_paths;
} inspector_window; } inspector_window;
@ -235,6 +255,7 @@ typedef struct {
GtkWidget *MainWindow; GtkWidget *MainWindow;
GtkWidget *CancelButton; GtkWidget *CancelButton;
GtkWidget *SaveButton; GtkWidget *SaveButton;
GtkWidget *ResetButton;
GtkWidget *LogNameLabel; GtkWidget *LogNameLabel;
GtkWidget *LogDescriptionLabel; GtkWidget *LogDescriptionLabel;
GtkWidget *LogStorageCombo; GtkWidget *LogStorageCombo;

@ -101,6 +101,7 @@
#define DAYS_LABEL _("Days") #define DAYS_LABEL _("Days")
#define WEEKS_LABEL _("Weeks") #define WEEKS_LABEL _("Weeks")
#define YEARS_LABEL _("Years") #define YEARS_LABEL _("Years")
#define RESET_LABEL _("Reset")
//ubl-settings-logging-logrotate.glade //ubl-settings-logging-logrotate.glade
#define LOGROTATE_LOG_JOURNAL_TAB_LABEL _("Log/Journal:") #define LOGROTATE_LOG_JOURNAL_TAB_LABEL _("Log/Journal:")
@ -175,6 +176,9 @@
#define SATURDAY_LABEL _("Saturday") #define SATURDAY_LABEL _("Saturday")
#define SUNDAY_LABEL _("Sunday*") #define SUNDAY_LABEL _("Sunday*")
#define REPEATED_PATHS_LABEL _("Same record already exists") #define REPEATED_PATHS_LABEL _("Same record already exists")
#define EMPTY_IMPORTANT_LABEL _("Empty important field")
#define REPEAT_PATHS_LABEL _("Repeating paths")
#define WRITE_IMPORTANT_LABEL _("Write down all important fields")
//ubl-settings-logging-logrotate-table.glade //ubl-settings-logging-logrotate-table.glade
#define SYSTEM_CONFIGURATION_LABEL _("System configuration") #define SYSTEM_CONFIGURATION_LABEL _("System configuration")
@ -184,4 +188,16 @@
#define ADD_PATHS_LABEL _("Path (-s):") #define ADD_PATHS_LABEL _("Path (-s):")
#define CONTROL_LABEL _("Control:") #define CONTROL_LABEL _("Control:")
#define LOG_LABEL _("Log file") #define LOG_LABEL _("Log file")
#define NAME_LABEL _("Name:") #define NAME_LABEL _("Name:")
//ubl-settings-logging-rules.glade
#define OWNER_LABEL _("Owner rules")
#define GROUP_LABEL _("Group rules")
#define PUBLIC_LABEL _("Public rules")
#define READ_LABEL _("Read")
#define WRITE_LABEL _("Write")
#define EXECUTE_LABEL _("Execute")
#define VALUE_LABEL _("Value:")
//ubl-settings-logging-terminal.glade
#define PATH_NOT_FOUND_LABEL _(": no such file(s)")

@ -622,8 +622,8 @@ char *yon_char_from_float(float int_to_convert)
{ {
convert_check = convert_check / 10; convert_check = convert_check / 10;
} }
char *ch = g_malloc0(i * sizeof(char) + 1); char *ch = g_malloc0((i + 9)* sizeof(char));
sprintf(ch, "%f", int_to_convert); sprintf(ch, "%.2f", int_to_convert);
return ch; return ch;
} }
@ -680,24 +680,22 @@ char *yon_char_replace(char *source, char *find, char*replace){
* size of returned array * size of returned array
*/ */
char **yon_char_parse(char *parameters, int *size, char *divider){ char **yon_char_parse(char *parameters, int *size, char *divider){
char **string=NULL; if (parameters){
int i=1; char **string=NULL;
string=malloc(sizeof(char*)); *size=0;
char *paramline=yon_char_new(parameters); char *paramline=yon_char_new(parameters);
char *param; char *param = strstr(paramline,divider);
while ((param=yon_char_divide_search(paramline,divider,1))){ for (;param;param=strstr(paramline,divider)){
string=realloc(string,sizeof(char*)*i); string = yon_remalloc(string,sizeof(char*)*((*size)+1));
string[i-1]=yon_char_new(param); string[(*size)]=yon_char_divide(paramline,strlen(paramline)-strlen(param));
i++; *size=(*size)+1;
if (strcmp(param,paramline)==0) break; }
} string = yon_remalloc(string,sizeof(char*)*((*size)+1));
// string=realloc(string,sizeof(char*)*i); string[(*size)]=paramline;
// string[i-1]=yon_char_new(paramline); (*size)+=1;
// i++; return string;
// printf("%d\n",i); }
*size=i-1; return NULL;
return string;
} }
/**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) /**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete)
@ -746,6 +744,30 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
return -1; return -1;
} }
/**yon_char_parsed_check_repeats(char **parameters, int size)
* [EN]
* Checks if [parameters] string array of length [size]
* has repeated elements;
* [RU]
* Проверяет есть ли в массиве строк [parameters], размера [size]
* повторения
*/
int yon_char_parsed_check_repeats(char **parameters, int size, int *first_overlap, int *second_overlap){
if (parameters){
*first_overlap=0;
*second_overlap=0;
for ((*first_overlap)=0;(*first_overlap)<size;(*first_overlap)++){
for ((*second_overlap)=0;(*second_overlap)<size;(*second_overlap)++){
if (parameters[(*first_overlap)]&&parameters[(*second_overlap)]){
if (!strcmp(parameters[(*first_overlap)],parameters[(*second_overlap)])&&(*first_overlap)!=(*second_overlap))
return 1;
}
}
}
}
return 0;
}
/**yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size) /**yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size)
* [EN] * [EN]
* *
@ -1192,7 +1214,7 @@ void *yon_config_get_by_key(char *key){
check_config{ check_config{
dictionary *dict = NULL; dictionary *dict = NULL;
for_dictionaries(dict, (dictionary*)__yon__config__strings){ for_dictionaries(dict, (dictionary*)__yon__config__strings){
if (strcmp(dict->key,key)==0){ if (strcmp(dict->key,key)==0&&((yon_config_parameter*)dict)->flag1!=-1){
return dict->data; return dict->data;
} }
} }
@ -1205,7 +1227,7 @@ void *yon_config_get_all_by_key(char *key, int *size){
config_str ret_data=NULL; config_str ret_data=NULL;
dictionary *dict = NULL; dictionary *dict = NULL;
for_dictionaries(dict, (dictionary*)__yon__config__strings){ for_dictionaries(dict, (dictionary*)__yon__config__strings){
if (strstr(dict->key,key)) { if (strstr(dict->key,key)&&((yon_config_parameter*)dict)->flag1!=-1) {
char *ret_string = yon_char_unite(dict->key,"=",(char*)dict->data,NULL); char *ret_string = yon_char_unite(dict->key,"=",(char*)dict->data,NULL);
if (ret_data) ret_data = yon_char_parsed_append(ret_data,size,ret_string); if (ret_data) ret_data = yon_char_parsed_append(ret_data,size,ret_string);
else ret_data = yon_char_parsed_new(size,ret_string,NULL); else ret_data = yon_char_parsed_new(size,ret_string,NULL);
@ -1334,12 +1356,17 @@ config_str yon_config_load(char *command, int *str_len){
} }
} }
/**int yon_config_save_registered(char *path, char *section) /**int yon_config_save_registered(char *path)
* [EN] * [EN]
* Saves config with [command] * Saves config at [path] config.
* [path] can be:
* system
* global
* [RU] * [RU]
* Выполняет команду [command], добавляя в конец все записи конфига в таком виде: * Сохраняет конфигурацию в [path] конфиг.
* [ПАРАМЕТР1]="[значения1]" [ПАРАМЕТР2]="[значения2]" * [path] может быть
* system - локальный конфиг
* global - глобальный конфиг
*/ */
int yon_config_save_registered(char *path){ int yon_config_save_registered(char *path){
check_config{ check_config{
@ -1350,7 +1377,7 @@ int yon_config_save_registered(char *path){
if (dct->data&&strcmp(yon_dictionary_get_data(dct,char*),"")!=0){ if (dct->data&&strcmp(yon_dictionary_get_data(dct,char*),"")!=0){
if (((yon_config_parameter*)dct)->flag1==1){ if (((yon_config_parameter*)dct)->flag1==1){
((yon_config_parameter*)dct)->flag1=0; ((yon_config_parameter*)dct)->flag1=0;
if (sections_add&&yon_dictionary_get(&sections_add,((yon_config_parameter*)dct)->section)) sections_add->data=(void*)yon_char_unite(yon_dictionary_get_data(sections_add,char*)," ",dct->key,"=",yon_dictionary_get_data(dct,char*),NULL); if (sections_add&&yon_dictionary_get(&sections_add,((yon_config_parameter*)dct)->section)) sections_add->data=(void*)yon_char_unite(yon_dictionary_get_data(sections_add,char*)," ",dct->key,"=\"",yon_dictionary_get_data(dct,char*),"\"",NULL);
else yon_dictionary_add_or_create_if_exists_with_data(sections_add,((yon_config_parameter*)dct)->section,yon_char_unite (ubconfig_save_command,path ? yon_char_append(" --target ",path):"", " set ", ((yon_config_parameter*)dct)->section, " ",dct->key,"=\"",yon_dictionary_get_data(dct,char*),"\"",NULL)); else yon_dictionary_add_or_create_if_exists_with_data(sections_add,((yon_config_parameter*)dct)->section,yon_char_unite (ubconfig_save_command,path ? yon_char_append(" --target ",path):"", " set ", ((yon_config_parameter*)dct)->section, " ",dct->key,"=\"",yon_dictionary_get_data(dct,char*),"\"",NULL));
} else if (((yon_config_parameter*)dct)->flag1==-1){ } else if (((yon_config_parameter*)dct)->flag1==-1){
((yon_config_parameter*)dct)->flag1=0; ((yon_config_parameter*)dct)->flag1=0;
@ -1376,10 +1403,15 @@ int yon_config_save_registered(char *path){
/**int yon_config_force_save_registered(char *path, char *section) /**int yon_config_force_save_registered(char *path, char *section)
* [EN] * [EN]
* Saves config with [command] * Force config to save at [path] config ignoring parameter save status.
* [path] can be:
* system
* global
* [RU] * [RU]
* Выполняет команду [command], добавляя в конец все записи конфига в таком виде: * Принудительно сохраняет конфигурацию в [path] конфиг игнорируя статус параметра.
* [ПАРАМЕТР1]="[значения1]" [ПАРАМЕТР2]="[значения2]" * [path] может быть
* system - локальный конфиг
* global - глобальный конфиг
*/ */
int yon_config_force_save_registered(char *path){ int yon_config_force_save_registered(char *path){
check_config{ check_config{
@ -1389,7 +1421,7 @@ int yon_config_force_save_registered(char *path){
for_dictionaries(dct,(dictionary*)__yon__config__strings){ for_dictionaries(dct,(dictionary*)__yon__config__strings){
if (dct->data&&strcmp(yon_dictionary_get_data(dct,char*),"")!=0){ if (dct->data&&strcmp(yon_dictionary_get_data(dct,char*),"")!=0){
if (((yon_config_parameter*)dct)->flag1==1||((yon_config_parameter*)dct)->flag1==0){ if (((yon_config_parameter*)dct)->flag1==1||((yon_config_parameter*)dct)->flag1==0){
if (sections_add&&yon_dictionary_get(&sections_add,((yon_config_parameter*)dct)->section)) sections_add->data=(void*)yon_char_unite(yon_dictionary_get_data(sections_add,char*)," ",dct->key,"=",yon_dictionary_get_data(dct,char*),NULL); if (sections_add&&yon_dictionary_get(&sections_add,((yon_config_parameter*)dct)->section)) sections_add->data=(void*)yon_char_unite(yon_dictionary_get_data(sections_add,char*)," ",dct->key,"=\"",yon_dictionary_get_data(dct,char*),"\"",NULL);
else yon_dictionary_add_or_create_if_exists_with_data(sections_add,((yon_config_parameter*)dct)->section,yon_char_unite (ubconfig_save_command,path ? yon_char_append(" --target ",path):"", " set ", ((yon_config_parameter*)dct)->section, " ",dct->key,"=\"",yon_dictionary_get_data(dct,char*),"\"",NULL)); else yon_dictionary_add_or_create_if_exists_with_data(sections_add,((yon_config_parameter*)dct)->section,yon_char_unite (ubconfig_save_command,path ? yon_char_append(" --target ",path):"", " set ", ((yon_config_parameter*)dct)->section, " ",dct->key,"=\"",yon_dictionary_get_data(dct,char*),"\"",NULL));
} else if (((yon_config_parameter*)dct)->flag1==-1){ } else if (((yon_config_parameter*)dct)->flag1==-1){
if (sections_remove&&yon_dictionary_get(&sections_remove,((yon_config_parameter*)dct)->section)) sections_remove->data=(void*)yon_char_unite(yon_dictionary_get_data(sections_remove,char*)," ",dct->key,NULL); if (sections_remove&&yon_dictionary_get(&sections_remove,((yon_config_parameter*)dct)->section)) sections_remove->data=(void*)yon_char_unite(yon_dictionary_get_data(sections_remove,char*)," ",dct->key,NULL);
@ -1481,7 +1513,60 @@ config_str yon_file_open(char *file_path, int *size){
} }
return final_string; return final_string;
} }
} }
/**yon_file_create(char *path, char *name, int rules)
* [EN]
*
* [RU]
* Создать файл с названием [name], находящимся по пути [path]
* С правами доступа [rules] (от 0000 до 0777)
*/
int yon_file_create(char *path, char *name, int rules){
if (path&&name){
char *full_path = yon_char_unite(path,"/",name,NULL);
if (access(full_path,F_OK)){
FILE *fl = fopen(full_path,"w");
if (fl){
chmod(full_path,rules);
fclose(fl);
return 1;
} else {
return 0;
}
} else {
return -1;
}
} else {
return 0;
}
}
/**yon_file_create_full_path(char *path, char *name, int rules)
* [EN]
*
* [RU]
* Создать файл по пути [path]
* С правами доступа [rules] (от 0000 до 0777)
*/
int yon_file_create_full_path(char *path, int rules){
if (path){
if (access(path,F_OK)){
FILE *fl = fopen(path,"w");
if (fl){
chmod(path,rules);
fclose(fl);
return 1;
} else {
return 0;
}
} else {
return -1;
}
} else {
return 0;
}
}
// terminal-using functions // terminal-using functions
@ -1552,8 +1637,7 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
gtk_container_add(GTK_CONTAINER(place_to_show),terminal); gtk_container_add(GTK_CONTAINER(place_to_show),terminal);
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL); char *install_command=yon_char_unite("clear;tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL);
printf("%s\n",install_command);
if(endwork_function) if(endwork_function)
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
vte_terminal_spawn_async(VTE_TERMINAL(terminal), vte_terminal_spawn_async(VTE_TERMINAL(terminal),
@ -1606,7 +1690,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL); char *install_command=yon_char_unite("clear;tput cup 0 0 && tput ed; ",command," ; sleep 5; stty -echo; unset PS1","\n",NULL);
if(endwork_function) if(endwork_function)
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
vte_terminal_spawn_async(VTE_TERMINAL(terminal), vte_terminal_spawn_async(VTE_TERMINAL(terminal),
@ -1679,6 +1763,11 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
g_key_file_set_integer(__yon_window_config_file,"window","WindowHeight",__yon_main_window_config.height); g_key_file_set_integer(__yon_window_config_file,"window","WindowHeight",__yon_main_window_config.height);
g_key_file_set_integer(__yon_window_config_file,"window","fullscreen",__yon_main_window_config.fullscreen); g_key_file_set_integer(__yon_window_config_file,"window","fullscreen",__yon_main_window_config.fullscreen);
dictionary *dict=NULL; dictionary *dict=NULL;
if (__yon_main_window_config.deleted_parameters)
for_dictionaries(dict,__yon_main_window_config.deleted_parameters){
__yon_custom_parameter *param = yon_dictionary_get_data(dict,__yon_custom_parameter*);
g_key_file_remove_key(__yon_window_config_file,param->section,param->parameter_name,NULL);
}
if (__yon_main_window_config.custom_listeners) if (__yon_main_window_config.custom_listeners)
for_dictionaries(dict,__yon_main_window_config.custom_listeners){ for_dictionaries(dict,__yon_main_window_config.custom_listeners){
__yon_listener_parameter *param = yon_dictionary_get_data(dict,__yon_listener_parameter*); __yon_listener_parameter *param = yon_dictionary_get_data(dict,__yon_listener_parameter*);
@ -1714,11 +1803,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
break; break;
} }
} }
if (__yon_main_window_config.deleted_parameters)
for_dictionaries(dict,__yon_main_window_config.deleted_parameters){
__yon_custom_parameter *param = yon_dictionary_get_data(dict,__yon_custom_parameter*);
g_key_file_remove_key(__yon_window_config_file,param->section,param->parameter_name,NULL);
}
g_key_file_save_to_file(__yon_window_config_file,__yon_window_config_path,NULL); g_key_file_save_to_file(__yon_window_config_file,__yon_window_config_path,NULL);
} }
@ -1787,6 +1872,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
} }
FILE *fp; FILE *fp;
fp=fopen(__yon_window_config_path,"w"); fp=fopen(__yon_window_config_path,"w");
chmod(__yon_window_config_path,0777);
fclose(fp); fclose(fp);
g_key_file_load_from_file(__yon_window_config_file,__yon_window_config_path,G_KEY_FILE_NONE,NULL); g_key_file_load_from_file(__yon_window_config_file,__yon_window_config_path,G_KEY_FILE_NONE,NULL);
} }
@ -1868,6 +1954,17 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
} }
} }
void yon_window_config_add_instant_parameter(char *param_name, char *section, void *tracked_value, enum YON_TYPE val_type){
switch (val_type){
case YON_TYPE_BOOLEAN: g_key_file_set_boolean(__yon_window_config_file,section,param_name,*((gboolean*)tracked_value));
break;
case YON_TYPE_INT: g_key_file_set_integer(__yon_window_config_file,section,param_name,*((int*)tracked_value));
break;
case YON_TYPE_STRING: g_key_file_set_string(__yon_window_config_file,section,param_name,(char*)tracked_value);
break;
}
}
void yon_window_config_erase_custom_parameter(char *param_name, char *section){ void yon_window_config_erase_custom_parameter(char *param_name, char *section){
__yon_custom_parameter *param = NULL; __yon_custom_parameter *param = NULL;
param = yon_remalloc(param,sizeof(__yon_custom_parameter)); param = yon_remalloc(param,sizeof(__yon_custom_parameter));
@ -1901,6 +1998,81 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
} }
} }
void yon_on_window_config_custom_window_destroy(GtkWindow *window, char *window_name){
if (!gtk_window_is_maximized(window)){
int height=0;
int width=0;
int X=0;
int Y=0;
gtk_window_get_position(window,&X,&Y);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosX"),"window",&X,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosY"),"window",&Y,YON_TYPE_INT);
}
}
void yon_on_window_config_custom_window_resize(GtkWindow *window, char *window_name){
if (!gtk_window_is_maximized(window)){
int height=0;
int width=0;
int X=0;
int Y=0;
gtk_window_get_size(window,&width,&height);
gtk_window_get_position(window,&X,&Y);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"Width"),"window",&width,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"Height"),"window",&height,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosX"),"window",&X,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosY"),"window",&Y,YON_TYPE_INT);
}
}
void yon_window_config_custom_window_setup(GtkWindow *window, char *window_name){
int height=0;
int width=0;
int X=0;
int Y=0;
yon_window_config_get_parameter("window",yon_char_append(window_name,"Width"),&width,YON_TYPE_INT);
yon_window_config_get_parameter("window",yon_char_append(window_name,"Height"),&height,YON_TYPE_INT);
yon_window_config_get_parameter("window",yon_char_append(window_name,"PosX"),&X,YON_TYPE_INT);
yon_window_config_get_parameter("window",yon_char_append(window_name,"PosY"),&Y,YON_TYPE_INT);
if (width&&height)
gtk_window_resize(window,width,height);
if (X&&Y)
gtk_window_move(window,X,Y);
char *signals_window_name = yon_char_new(window_name);
g_signal_connect(G_OBJECT(window),"check-resize",G_CALLBACK(yon_on_window_config_custom_window_resize),signals_window_name);
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(yon_on_window_config_custom_window_destroy),signals_window_name);
}
void yon_window_config_custom_window_get(GtkWindow *window, char *window_name){
int height=0;
int width=0;
int X=0;
int Y=0;
yon_window_config_get_parameter("window",yon_char_append(window_name,"Width"),&width,YON_TYPE_INT);
yon_window_config_get_parameter("window",yon_char_append(window_name,"Height"),&height,YON_TYPE_INT);
yon_window_config_get_parameter("window",yon_char_append(window_name,"PosX"),&X,YON_TYPE_INT);
yon_window_config_get_parameter("window",yon_char_append(window_name,"PosY"),&Y,YON_TYPE_INT);
if (width&&height)
gtk_window_resize(window,width,height);
if (X&&Y)
gtk_window_move(window,X,Y);
}
void yon_window_config_custom_window_set(GtkWindow *window, char *window_name){
int height=0;
int width=0;
int X=0;
int Y=0;
gtk_window_get_size(window,&width,&height);
gtk_window_get_position(window,&X,&Y);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"Width"),"window",&width,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"Height"),"window",&height,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosX"),"window",&X,YON_TYPE_INT);
yon_window_config_add_instant_parameter(yon_char_append(window_name,"PosY"),"window",&Y,YON_TYPE_INT);
}
GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){ GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){
GtkWidget *menu_item = gtk_menu_item_new(); GtkWidget *menu_item = gtk_menu_item_new();
gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom"); gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom");
@ -2092,6 +2264,30 @@ void yon_ubl_status_highlight_incorrect(GtkWidget *widget){
GThread *thread = g_thread_new(NULL,(GThreadFunc)_yon_ubl_status_highlight_incorrect,widget); GThread *thread = g_thread_new(NULL,(GThreadFunc)_yon_ubl_status_highlight_incorrect,widget);
} }
void _yon_ubl_status_list_store_highlight_incorrect(GtkWidget **widget_pack){
GtkListStore *list = (GtkListStore*)widget_pack[0];
GtkTreeIter *iter = (GtkTreeIter*)widget_pack[1];
GdkRGBA rgba,rgba2;
rgba.alpha=1;
rgba.blue=153.0/255.0;
rgba.green=153.0/255.0;
rgba.red=234.0/255.0;
rgba2.alpha=1;
rgba2.blue=0;
rgba2.green=0;
rgba2.red=0;
gtk_list_store_set(list,iter,1,gdk_rgba_to_string(&rgba2),2,gdk_rgba_to_string(&rgba),-1);
sleep(5);
gtk_list_store_set(list,iter,1,NULL,2,NULL,-1);
}
void yon_ubl_status_list_store_highlight_incorrect(GtkListStore *list, GtkTreeIter *iter){
GtkWidget **pack = malloc(sizeof(GtkWidget *)*2);
pack[0]=(GtkWidget*)list;
pack[1]=(GtkWidget*)iter;
GThread *thread = g_thread_new(NULL,(GThreadFunc)_yon_ubl_status_list_store_highlight_incorrect,pack);
}
struct temp_statusbox { struct temp_statusbox {
int times; int times;
GtkWidget *revealer; GtkWidget *revealer;
@ -2099,7 +2295,7 @@ struct temp_statusbox {
void _yon_ubl_status_box_timed_remove(struct temp_statusbox *statusstruct){ void _yon_ubl_status_box_timed_remove(struct temp_statusbox *statusstruct){
sleep(statusstruct->times); sleep(statusstruct->times);
if (statusstruct->revealer){ if (status_thread_busy){
gtk_revealer_set_reveal_child(GTK_REVEALER(statusstruct->revealer),0); gtk_revealer_set_reveal_child(GTK_REVEALER(statusstruct->revealer),0);
sleep(1); sleep(1);
gtk_widget_destroy(statusstruct->revealer); gtk_widget_destroy(statusstruct->revealer);
@ -2108,6 +2304,10 @@ void _yon_ubl_status_box_timed_remove(struct temp_statusbox *statusstruct){
status_thread_busy=0; status_thread_busy=0;
} }
void __yon_ubl_status_box_destroyed(){
status_thread_busy=0;
}
void yon_ubl_status_box_spawn(GtkContainer *container,char *display_text, int timeout,BACKGROUND_IMAGE_TYPE type){ void yon_ubl_status_box_spawn(GtkContainer *container,char *display_text, int timeout,BACKGROUND_IMAGE_TYPE type){
if (!status_thread_busy){ if (!status_thread_busy){
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
@ -2121,6 +2321,7 @@ void yon_ubl_status_box_spawn(GtkContainer *container,char *display_text, int ti
gtk_widget_show_all(revealer); gtk_widget_show_all(revealer);
gtk_revealer_set_reveal_child(GTK_REVEALER(revealer),1); gtk_revealer_set_reveal_child(GTK_REVEALER(revealer),1);
g_signal_connect(G_OBJECT(revealer),"destroy", G_CALLBACK(__yon_ubl_status_box_destroyed),NULL);
gtk_widget_set_margin_bottom(label,9); gtk_widget_set_margin_bottom(label,9);
gtk_widget_set_margin_top(label,9); gtk_widget_set_margin_top(label,9);

@ -15,6 +15,7 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gtk/gtkx.h> #include <gtk/gtkx.h>
#include <vte/vte.h> #include <vte/vte.h>
#include <time.h>
#include "../compile/ubl-cmake.h" #include "../compile/ubl-cmake.h"
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
@ -154,6 +155,8 @@ char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete);
int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_parsed_check_repeats(char **parameters, int size, int *first_overlap, int *second_overlap);
int yon_char_find_count(char *source, char *find); int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size); int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
@ -188,6 +191,10 @@ 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_file_open(char *file_path, int *size);
int yon_file_create(char *path, char *name, int rules);
int yon_file_create_full_path(char *path, int rules);
config_str yon_dir_get_contents(char *dir_path, int *size); config_str yon_dir_get_contents(char *dir_path, int *size);
//config functions //config functions
@ -288,6 +295,12 @@ void yon_window_config_erase_custom_parameter(char *param_name, char *section);
int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type); int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type);
void yon_window_config_custom_window_setup(GtkWindow *window, char *window_name);
void yon_window_config_custom_window_get(GtkWindow *window, char *window_name);
void yon_window_config_custom_window_set(GtkWindow *window, char *window_name);
int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size); int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size);
int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find); int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);
@ -354,6 +367,8 @@ void yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type);
void yon_ubl_status_highlight_incorrect(GtkWidget *widget); void yon_ubl_status_highlight_incorrect(GtkWidget *widget);
void yon_ubl_status_list_store_highlight_incorrect(GtkListStore *list, GtkTreeIter *iter);
static int status_thread_busy; static int status_thread_busy;
void yon_ubl_status_box_spawn(GtkContainer *container,char *display_text, int timeout,BACKGROUND_IMAGE_TYPE type); void yon_ubl_status_box_spawn(GtkContainer *container,char *display_text, int timeout,BACKGROUND_IMAGE_TYPE type);

@ -3,6 +3,13 @@
<interface domain="ubl-settings-logging"> <interface domain="ubl-settings-logging">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-logging.css --> <!-- interface-css-provider-path ubl-settings-logging.css -->
<object class="GtkSizeGroup">
<widgets>
<widget name="label1"/>
<widget name="label2"/>
<widget name="label3"/>
</widgets>
</object>
<object class="GtkAdjustment" id="adjustment1"> <object class="GtkAdjustment" id="adjustment1">
<property name="upper">1024</property> <property name="upper">1024</property>
<property name="step-increment">1</property> <property name="step-increment">1</property>
@ -28,26 +35,6 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property> <property name="icon-name">emblem-ok-symbolic</property>
</object> </object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object>
<object class="GtkDialog" id="MainWindow"> <object class="GtkDialog" id="MainWindow">
<property name="width-request">450</property> <property name="width-request">450</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -57,9 +44,6 @@
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox"> <object class="GtkBox">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
@ -103,29 +87,161 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkBox" id="LogAddingBox"> <object class="GtkFrame" id="StatisticsFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">12</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Log size:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="LogSizeLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">0.0 Mb</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Statistics</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox" id="LogAddingBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel" id="label1"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Log/Journal:</property> <property name="spacing">5</property>
<property name="xalign">0</property> <child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Log/Journal:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LogTypeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<property name="has-frame">False</property>
<items>
<item translatable="yes">Log file</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Name:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="NameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -134,14 +250,34 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="LogTypeCombo"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="active">0</property> <property name="hscrollbar-policy">never</property>
<property name="has-frame">False</property> <property name="shadow-type">in</property>
<items> <property name="min-content-height">150</property>
<item translatable="yes">Log file</item> <child>
</items> <object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<object class="GtkBox" id="LogPathsBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -150,10 +286,34 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Name:</property> <property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="LogDescriptionEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -161,80 +321,65 @@
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkEntry" id="NameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="ControlSectionBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkLabel" id="label3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="hscrollbar-policy">never</property> <property name="label" translatable="yes">Control:</property>
<property name="shadow-type">in</property> <property name="xalign">0</property>
<property name="min-content-height">150</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<object class="GtkBox" id="LogPathsBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">19</property>
<child> <child>
<object class="GtkLabel" id="label2"> <object class="GtkButton" id="LogrotateButton">
<property name="label" translatable="yes">Logrotate</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="label" translatable="yes">Description:</property> <property name="receives-default">True</property>
<property name="xalign">0</property> <property name="image">image5</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="LogDescriptionEntry"> <object class="GtkButton" id="MetalogButton">
<property name="label" translatable="yes">Metalog</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image7</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -242,196 +387,67 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="ControlSectionBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Control:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">19</property>
<child>
<object class="GtkButton" id="LogrotateButton">
<property name="label" translatable="yes">Logrotate</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MetalogButton">
<property name="label" translatable="yes">Metalog</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image7</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="SyslogButton">
<property name="label" translatable="yes">Syslog-ng</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image6</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="JournaldButton">
<property name="label" translatable="yes">Journald</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image8</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="StatisticsFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">12</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkButton" id="SyslogButton">
<property name="label" translatable="yes">Syslog-ng</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="sensitive">False</property>
<property name="label" translatable="yes">Log size:</property> <property name="can-focus">True</property>
<property name="xalign">0</property> <property name="receives-default">True</property>
<property name="image">image6</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="LogSizeLabel"> <object class="GtkButton" id="JournaldButton">
<property name="label" translatable="yes">Journald</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="label" translatable="yes">0.0 Mb</property> <property name="receives-default">True</property>
<property name="image">image8</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
<child type="label"> <child>
<object class="GtkLabel"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Statistics</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property> <property name="position">1</property>
<property name="position">4</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -476,11 +492,24 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkSizeGroup"> <object class="GtkImage" id="image5">
<widgets> <property name="visible">True</property>
<widget name="label1"/> <property name="can-focus">False</property>
<widget name="label2"/> <property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
<widget name="label3"/> </object>
</widgets> <object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.sort-symbolic</property>
</object> </object>
</interface> </interface>

@ -33,7 +33,6 @@
<child> <child>
<object class="GtkCheckButton" id="FileOrDirCheck"> <object class="GtkCheckButton" id="FileOrDirCheck">
<property name="label" translatable="yes">Choose directory instead of file</property> <property name="label" translatable="yes">Choose directory instead of file</property>
<property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">False</property> <property name="receives-default">False</property>
<property name="draw-indicator">True</property> <property name="draw-indicator">True</property>

@ -2,7 +2,6 @@
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-logging"> <interface domain="ubl-settings-logging">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.68"/>
<!-- interface-css-provider-path ubl-settings-logging.css --> <!-- interface-css-provider-path ubl-settings-logging.css -->
<object class="GtkAdjustment" id="adjustment1"> <object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property> <property name="upper">100</property>
@ -14,11 +13,6 @@
<property name="step-increment">1</property> <property name="step-increment">1</property>
<property name="page-increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkAdjustment" id="adjustment3">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -59,10 +53,19 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.generic7-symbolic</property> <property name="icon-name">com.ublinux.ubl-settings-logging.generic7-symbolic</property>
</object> </object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gchararray2 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="MainWindow"> <object class="GtkWindow" id="MainWindow">
<property name="width-request">800</property> <property name="width-request">800</property>
<property name="height-request">600</property> <property name="height-request">600</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property>
<property name="default-width">800</property> <property name="default-width">800</property>
<property name="default-height">600</property> <property name="default-height">600</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property> <property name="icon-name">com.ublinux.ubl-settings-logging</property>
@ -242,16 +245,10 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="VteTerminal" id="LoggingTerminal"> <object class="GtkNotebook" id="MainNotebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="hscroll-policy">natural</property> <property name="scrollable">True</property>
<property name="vadjustment">adjustment3</property>
<property name="vscroll-policy">natural</property>
<property name="encoding">UTF-8</property>
<property name="scrollback-lines">0</property>
<property name="scroll-on-keystroke">True</property>
<property name="scroll-on-output">False</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -260,14 +257,53 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrollbar"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="can-focus">True</property>
<property name="can-focus">False</property> <property name="shadow-type">in</property>
<property name="orientation">vertical</property> <child>
<property name="adjustment">adjustment3</property> <object class="GtkTreeView" id="JournaldTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore1</property>
<property name="headers-visible">False</property>
<property name="enable-grid-lines">both</property>
<property name="tooltip-column">0</property>
<child>
<object class="GtkTreeViewColumn">
<property name="sizing">fixed</property>
<property name="fixed-width">175</property>
<property name="min-width">75</property>
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
</object>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<property name="expand">True</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">500</property>
</object>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
@ -321,5 +357,4 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkTextBuffer" id="textbuffer1"/>
</interface> </interface>

@ -94,6 +94,7 @@
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -963,6 +964,20 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child>
<object class="GtkButton" id="ResetButton">
<property name="label" translatable="yes">Reset</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkButton" id="CancelButton"> <object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property> <property name="label" translatable="yes">Cancel</property>
@ -974,7 +989,7 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -988,7 +1003,7 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -1047,4 +1062,9 @@
<widget name="label2"/> <widget name="label2"/>
</widgets> </widgets>
</object> </object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.funnel-symbolic</property>
</object>
</interface> </interface>

@ -92,6 +92,10 @@
<columns> <columns>
<!-- column-name gchararray1 --> <!-- column-name gchararray1 -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name gchararray2 -->
<column type="gchararray"/>
<!-- column-name gchararray3 -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkWindow" id="MainWindow"> <object class="GtkWindow" id="MainWindow">
@ -318,12 +322,17 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="model">liststore1</property> <property name="model">liststore1</property>
<property name="headers-visible">False</property> <property name="headers-visible">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Path</property> <property name="title" translatable="yes">Path</property>
<child> <child>
<object class="GtkCellRendererText" id="PathCell"/> <object class="GtkCellRendererText" id="PathCell"/>
<attributes> <attributes>
<attribute name="background">2</attribute>
<attribute name="foreground">1</attribute>
<attribute name="text">0</attribute> <attribute name="text">0</attribute>
</attributes> </attributes>
</child> </child>

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface domain="ubl-settings-logging">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-logging.css -->
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-logging">
<requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.68"/>
<object class="GtkAdjustment" id="adjustment3">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkBox" id="TerminalBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="VteTerminal" id="LoggingTerminal">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hscroll-policy">natural</property>
<property name="vadjustment">adjustment3</property>
<property name="vscroll-policy">natural</property>
<property name="cursor-blink-mode">off</property>
<property name="cursor-shape">underline</property>
<property name="encoding">UTF-8</property>
<property name="pointer-autohide">True</property>
<property name="scrollback-lines">0</property>
<property name="scroll-on-keystroke">True</property>
<property name="scroll-on-output">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="UnfoundLabel">
<property name="can-focus">False</property>
<property name="label" translatable="yes">Label</property>
<property name="xalign">0.019999999552965164</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="foreground" value="#e0e01b1b2424"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrollbar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="adjustment">adjustment3</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>

@ -473,7 +473,7 @@ translated and supported by community.</property>
<col id="0">journald</col> <col id="0">journald</col>
<col id="1">/var/log/journal/</col> <col id="1">/var/log/journal/</col>
<col id="2" translatable="yes">System event log</col> <col id="2" translatable="yes">System event log</col>
<col id="3">False</col> <col id="3">True</col>
<col id="4">0</col> <col id="4">0</col>
</row> </row>
</data> </data>
@ -508,6 +508,12 @@ translated and supported by community.</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="take-focus">False</property> <property name="take-focus">False</property>
<property name="reserve-toggle-size">False</property> <property name="reserve-toggle-size">False</property>
<child>
<object class="GtkCheckMenuItem" id="UpgradePermissionsMenuItem">
<property name="can-focus">False</property>
<property name="label" translatable="yes">Upgrade permissions to root</property>
</object>
</child>
</object> </object>
<object class="GtkMenu" id="menu3"> <object class="GtkMenu" id="menu3">
<property name="visible">True</property> <property name="visible">True</property>
@ -719,7 +725,6 @@ translated and supported by community.</property>
<child> <child>
<object class="GtkButton" id="MainAddButton"> <object class="GtkButton" id="MainAddButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add log</property> <property name="tooltip-text" translatable="yes">Add log</property>
@ -1043,6 +1048,7 @@ translated and supported by community.</property>
<object class="GtkHeaderBar" id="headerBar"> <object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property>
<property name="show-close-button">True</property> <property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="headerTopic"> <object class="GtkLabel" id="headerTopic">

@ -413,304 +413,356 @@ msgstr ""
msgid "Years" msgid "Years"
msgstr "" msgstr ""
#: source/ubl-strings.h:106 #: source/ubl-strings.h:104
msgid "Log/Journal:" msgid "Reset"
msgstr "" msgstr ""
#: source/ubl-strings.h:107 #: source/ubl-strings.h:107
msgid "Paths to log and journals files" msgid "Log/Journal:"
msgstr "" msgstr ""
#: source/ubl-strings.h:108 #: source/ubl-strings.h:108
msgid "On" msgid "Paths to log and journals files"
msgstr "" msgstr ""
#: source/ubl-strings.h:109 #: source/ubl-strings.h:109
msgid "On"
msgstr ""
#: source/ubl-strings.h:110
msgid "Off" msgid "Off"
msgstr "" msgstr ""
#: source/ubl-strings.h:110 source/ubl-strings.h:164 #: source/ubl-strings.h:111 source/ubl-strings.h:165
msgid "Scenarios" msgid "Scenarios"
msgstr "" msgstr ""
#: source/ubl-strings.h:111 source/ubl-strings.h:163 #: source/ubl-strings.h:112 source/ubl-strings.h:164
msgid "Scenarios are running for each rotated journal" msgid "Scenarios are running for each rotated journal"
msgstr "" msgstr ""
#: source/ubl-strings.h:112 #: source/ubl-strings.h:113
msgid "Command before rotation (one time):" msgid "Command before rotation (one time):"
msgstr "" msgstr ""
#: source/ubl-strings.h:113 #: source/ubl-strings.h:114
msgid "Command after rotation (one time):" msgid "Command after rotation (one time):"
msgstr "" msgstr ""
#: source/ubl-strings.h:114 #: source/ubl-strings.h:115
msgid "Command before rotation:" msgid "Command before rotation:"
msgstr "" msgstr ""
#: source/ubl-strings.h:115 #: source/ubl-strings.h:116
msgid "Command after rotation:" msgid "Command after rotation:"
msgstr "" msgstr ""
#: source/ubl-strings.h:116 #: source/ubl-strings.h:117
msgid "Rotation period:" msgid "Rotation period:"
msgstr "" msgstr ""
#: source/ubl-strings.h:117 #: source/ubl-strings.h:118
msgid "Maximum size of file:" msgid "Maximum size of file:"
msgstr "" msgstr ""
#: source/ubl-strings.h:118 #: source/ubl-strings.h:119
msgid "Checking frequency configuration" msgid "Checking frequency configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:119 #: source/ubl-strings.h:120
msgid "File amount:" msgid "File amount:"
msgstr "" msgstr ""
#: source/ubl-strings.h:120 #: source/ubl-strings.h:121
msgid "Store at:" msgid "Store at:"
msgstr "" msgstr ""
#: source/ubl-strings.h:121 #: source/ubl-strings.h:122
msgid "Rotation as user:" msgid "Rotation as user:"
msgstr "" msgstr ""
#: source/ubl-strings.h:122 #: source/ubl-strings.h:123
msgid "Rotation as group:" msgid "Rotation as group:"
msgstr "" msgstr ""
#: source/ubl-strings.h:123 #: source/ubl-strings.h:124
msgid "Rotation configuration" msgid "Rotation configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:124 #: source/ubl-strings.h:125
msgid "Error processing:" msgid "Error processing:"
msgstr "" msgstr ""
#: source/ubl-strings.h:125 #: source/ubl-strings.h:126
msgid "Rotation of jurnal even when it is empty:" msgid "Rotation of jurnal even when it is empty:"
msgstr "" msgstr ""
#: source/ubl-strings.h:126 #: source/ubl-strings.h:127
msgid "Do not rotate journal younger than" msgid "Do not rotate journal younger than"
msgstr "" msgstr ""
#: source/ubl-strings.h:127 #: source/ubl-strings.h:128
msgid "days" msgid "days"
msgstr "" msgstr ""
#: source/ubl-strings.h:128 #: source/ubl-strings.h:129
msgid "Delete rotated journals older than" msgid "Delete rotated journals older than"
msgstr "" msgstr ""
#: source/ubl-strings.h:129 #: source/ubl-strings.h:130
msgid "Rotate journals if size more than" msgid "Rotate journals if size more than"
msgstr "" msgstr ""
#: source/ubl-strings.h:130 #: source/ubl-strings.h:131
msgid "but not earlier than the specified time interval" msgid "but not earlier than the specified time interval"
msgstr "" msgstr ""
#: source/ubl-strings.h:131 #: source/ubl-strings.h:132
msgid "before specified time interval" msgid "before specified time interval"
msgstr "" msgstr ""
#: source/ubl-strings.h:132 #: source/ubl-strings.h:133
msgid "File choosing configuration" msgid "File choosing configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:133 #: source/ubl-strings.h:134
msgid "Create log" msgid "Create log"
msgstr "" msgstr ""
#: source/ubl-strings.h:134 #: source/ubl-strings.h:135
msgid "as user:" msgid "as user:"
msgstr "" msgstr ""
#: source/ubl-strings.h:135 #: source/ubl-strings.h:136
msgid "as group:" msgid "as group:"
msgstr "" msgstr ""
#: source/ubl-strings.h:136 #: source/ubl-strings.h:137
msgid "rules:" msgid "rules:"
msgstr "" msgstr ""
#: source/ubl-strings.h:137 #: source/ubl-strings.h:138
msgid "" msgid ""
"Cut source journal fileafter copy creating instead of moving old journal " "Cut source journal fileafter copy creating instead of moving old journal "
"file and creating new one" "file and creating new one"
msgstr "" msgstr ""
#: source/ubl-strings.h:138 #: source/ubl-strings.h:139
msgid "Files and directories configuration" msgid "Files and directories configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:139 #: source/ubl-strings.h:140
msgid "Delay compression by one journal in queue:" msgid "Delay compression by one journal in queue:"
msgstr "" msgstr ""
#: source/ubl-strings.h:140 #: source/ubl-strings.h:141
msgid "Compression configuration" msgid "Compression configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:141 #: source/ubl-strings.h:142
msgid "Save original log file after rotation if it has specified extension:" msgid "Save original log file after rotation if it has specified extension:"
msgstr "" msgstr ""
#: source/ubl-strings.h:142 #: source/ubl-strings.h:143
msgid "Add date of rotation before log header" msgid "Add date of rotation before log header"
msgstr "" msgstr ""
#: source/ubl-strings.h:143 #: source/ubl-strings.h:144
msgid "Number from which numbering of old logs will begin" msgid "Number from which numbering of old logs will begin"
msgstr "" msgstr ""
#: source/ubl-strings.h:144 #: source/ubl-strings.h:145
msgid "Filename configuration" msgid "Filename configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:145 #: source/ubl-strings.h:146
msgid "Email after rotation:" msgid "Email after rotation:"
msgstr "" msgstr ""
#: source/ubl-strings.h:146 #: source/ubl-strings.h:147
msgid "adress:" msgid "adress:"
msgstr "" msgstr ""
#: source/ubl-strings.h:147 #: source/ubl-strings.h:148
msgid "contents:" msgid "contents:"
msgstr "" msgstr ""
#: source/ubl-strings.h:148 source/ubl-strings.h:161 #: source/ubl-strings.h:149 source/ubl-strings.h:162
msgid "Message configuration" msgid "Message configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:149 #: source/ubl-strings.h:150
msgid "Manual input:" msgid "Manual input:"
msgstr "" msgstr ""
#: source/ubl-strings.h:150 #: source/ubl-strings.h:151
msgid "Log (-s) size:" msgid "Log (-s) size:"
msgstr "" msgstr ""
#: source/ubl-strings.h:151 #: source/ubl-strings.h:152
msgid "Same directory" msgid "Same directory"
msgstr "" msgstr ""
#: source/ubl-strings.h:152 #: source/ubl-strings.h:153
msgid "Separate directory" msgid "Separate directory"
msgstr "" msgstr ""
#: source/ubl-strings.h:153 #: source/ubl-strings.h:154
msgid "Output errors if log file does not exist*" msgid "Output errors if log file does not exist*"
msgstr "" msgstr ""
#: source/ubl-strings.h:154 #: source/ubl-strings.h:155
msgid "Do not output errors if log file does not exist" msgid "Do not output errors if log file does not exist"
msgstr "" msgstr ""
#: source/ubl-strings.h:155 #: source/ubl-strings.h:156
msgid "Do not output" msgid "Do not output"
msgstr "" msgstr ""
#: source/ubl-strings.h:156 #: source/ubl-strings.h:157
msgid "Output errors" msgid "Output errors"
msgstr "" msgstr ""
#: source/ubl-strings.h:157 #: source/ubl-strings.h:158
msgid "Send Email" msgid "Send Email"
msgstr "" msgstr ""
#: source/ubl-strings.h:158 #: source/ubl-strings.h:159
msgid "Don't send Email" msgid "Don't send Email"
msgstr "" msgstr ""
#: source/ubl-strings.h:159 #: source/ubl-strings.h:160
msgid "First rotated copy" msgid "First rotated copy"
msgstr "" msgstr ""
#: source/ubl-strings.h:160 #: source/ubl-strings.h:161
msgid "Last rotated copy" msgid "Last rotated copy"
msgstr "" msgstr ""
#: source/ubl-strings.h:162 #: source/ubl-strings.h:163
msgid "Endwork command:" msgid "Endwork command:"
msgstr "" msgstr ""
#: source/ubl-strings.h:165 #: source/ubl-strings.h:166
msgid "Hourly" msgid "Hourly"
msgstr "" msgstr ""
#: source/ubl-strings.h:166 #: source/ubl-strings.h:167
msgid "Daily" msgid "Daily"
msgstr "" msgstr ""
#: source/ubl-strings.h:167 #: source/ubl-strings.h:168
msgid "Weekly*" msgid "Weekly*"
msgstr "" msgstr ""
#: source/ubl-strings.h:168 #: source/ubl-strings.h:169
msgid "Monthly" msgid "Monthly"
msgstr "" msgstr ""
#: source/ubl-strings.h:169 #: source/ubl-strings.h:170
msgid "Yearly" msgid "Yearly"
msgstr "" msgstr ""
#: source/ubl-strings.h:170 #: source/ubl-strings.h:171
msgid "Monday" msgid "Monday"
msgstr "" msgstr ""
#: source/ubl-strings.h:171 #: source/ubl-strings.h:172
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr ""
#: source/ubl-strings.h:172 #: source/ubl-strings.h:173
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr ""
#: source/ubl-strings.h:173 #: source/ubl-strings.h:174
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr ""
#: source/ubl-strings.h:174 #: source/ubl-strings.h:175
msgid "Friday" msgid "Friday"
msgstr "" msgstr ""
#: source/ubl-strings.h:175 #: source/ubl-strings.h:176
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr ""
#: source/ubl-strings.h:176 #: source/ubl-strings.h:177
msgid "Sunday*" msgid "Sunday*"
msgstr "" msgstr ""
#: source/ubl-strings.h:178
msgid "Same record already exists"
msgstr ""
#: source/ubl-strings.h:179 #: source/ubl-strings.h:179
msgid "System configuration" msgid "Empty important field"
msgstr "" msgstr ""
#: source/ubl-strings.h:180 #: source/ubl-strings.h:180
msgid "Repeating paths"
msgstr ""
#: source/ubl-strings.h:181
msgid "Write down all important fields"
msgstr ""
#: source/ubl-strings.h:184
msgid "System configuration"
msgstr ""
#: source/ubl-strings.h:185
msgid "Applications configuration" msgid "Applications configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:183 #: source/ubl-strings.h:188
msgid "Path (-s):" msgid "Path (-s):"
msgstr "" msgstr ""
#: source/ubl-strings.h:184 #: source/ubl-strings.h:189
msgid "Control:" msgid "Control:"
msgstr "" msgstr ""
#: source/ubl-strings.h:185 #: source/ubl-strings.h:190
msgid "Log file" msgid "Log file"
msgstr "" msgstr ""
#: source/ubl-strings.h:186 #: source/ubl-strings.h:191
msgid "Name:" msgid "Name:"
msgstr "" msgstr ""
#: source/ubl-strings.h:194
msgid "Owner rules"
msgstr ""
#: source/ubl-strings.h:195
msgid "Group rules"
msgstr ""
#: source/ubl-strings.h:196
msgid "Public rules"
msgstr ""
#: source/ubl-strings.h:197
msgid "Read"
msgstr ""
#: source/ubl-strings.h:198
msgid "Write"
msgstr ""
#: source/ubl-strings.h:199
msgid "Execute"
msgstr ""
#: source/ubl-strings.h:200
msgid "Value:"
msgstr ""
#: source/ubl-strings.h:203
msgid ": no such file(s)"
msgstr ""
msgid "System event log rotation service" msgid "System event log rotation service"
msgstr "" msgstr ""

@ -423,131 +423,135 @@ msgstr "Недель"
msgid "Years" msgid "Years"
msgstr "Лет" msgstr "Лет"
#: source/ubl-strings.h:106 #: source/ubl-strings.h:104
msgid "Reset"
msgstr "По умлочанию"
#: source/ubl-strings.h:107
msgid "Log/Journal:" msgid "Log/Journal:"
msgstr "Лог/Журнал:" msgstr "Лог/Журнал:"
#: source/ubl-strings.h:107 #: source/ubl-strings.h:108
msgid "Paths to log and journals files" msgid "Paths to log and journals files"
msgstr "Пути к файлам лога/журнала" msgstr "Пути к файлам лога/журнала"
#: source/ubl-strings.h:108 #: source/ubl-strings.h:109
msgid "On" msgid "On"
msgstr "Включено" msgstr "Включено"
#: source/ubl-strings.h:109 #: source/ubl-strings.h:110
msgid "Off" msgid "Off"
msgstr "Выключено" msgstr "Выключено"
#: source/ubl-strings.h:110 source/ubl-strings.h:164 #: source/ubl-strings.h:111 source/ubl-strings.h:165
msgid "Scenarios" msgid "Scenarios"
msgstr "Сценарии" msgstr "Сценарии"
#: source/ubl-strings.h:111 source/ubl-strings.h:163 #: source/ubl-strings.h:112 source/ubl-strings.h:164
msgid "Scenarios are running for each rotated journal" msgid "Scenarios are running for each rotated journal"
msgstr "Сценарии запускаются для каждого ротируемого журнала" msgstr "Сценарии запускаются для каждого ротируемого журнала"
#: source/ubl-strings.h:112 #: source/ubl-strings.h:113
msgid "Command before rotation (one time):" msgid "Command before rotation (one time):"
msgstr "Команда перед ротацией (один раз):" msgstr "Команда перед ротацией (один раз):"
#: source/ubl-strings.h:113 #: source/ubl-strings.h:114
msgid "Command after rotation (one time):" msgid "Command after rotation (one time):"
msgstr "Команда после ротации (один раз):" msgstr "Команда после ротации (один раз):"
#: source/ubl-strings.h:114 #: source/ubl-strings.h:115
msgid "Command before rotation:" msgid "Command before rotation:"
msgstr "Команда перед ротацией:" msgstr "Команда перед ротацией:"
#: source/ubl-strings.h:115 #: source/ubl-strings.h:116
msgid "Command after rotation:" msgid "Command after rotation:"
msgstr "Команда после ротации:" msgstr "Команда после ротации:"
#: source/ubl-strings.h:116 #: source/ubl-strings.h:117
msgid "Rotation period:" msgid "Rotation period:"
msgstr "Период ротации:" msgstr "Период ротации:"
#: source/ubl-strings.h:117 #: source/ubl-strings.h:118
msgid "Maximum size of file:" msgid "Maximum size of file:"
msgstr "Максимальный размер файла:" msgstr "Максимальный размер файла:"
#: source/ubl-strings.h:118 #: source/ubl-strings.h:119
msgid "Checking frequency configuration" msgid "Checking frequency configuration"
msgstr "Настройки частоты проверки" msgstr "Настройки частоты проверки"
#: source/ubl-strings.h:119 #: source/ubl-strings.h:120
msgid "File amount:" msgid "File amount:"
msgstr "Количество файлов:" msgstr "Количество файлов:"
#: source/ubl-strings.h:120 #: source/ubl-strings.h:121
msgid "Store at:" msgid "Store at:"
msgstr "Хранить в:" msgstr "Хранить в:"
#: source/ubl-strings.h:121 #: source/ubl-strings.h:122
msgid "Rotation as user:" msgid "Rotation as user:"
msgstr "Ротация от пользователя:" msgstr "Ротация от пользователя:"
#: source/ubl-strings.h:122 #: source/ubl-strings.h:123
msgid "Rotation as group:" msgid "Rotation as group:"
msgstr "Ротация от группы:" msgstr "Ротация от группы:"
#: source/ubl-strings.h:123 #: source/ubl-strings.h:124
msgid "Rotation configuration" msgid "Rotation configuration"
msgstr "Настройки ротации" msgstr "Настройки ротации"
#: source/ubl-strings.h:124 #: source/ubl-strings.h:125
msgid "Error processing:" msgid "Error processing:"
msgstr "Обработка ошибок:" msgstr "Обработка ошибок:"
#: source/ubl-strings.h:125 #: source/ubl-strings.h:126
msgid "Rotation of jurnal even when it is empty:" msgid "Rotation of jurnal even when it is empty:"
msgstr "Ротация файла журнала даже если он пуст:" msgstr "Ротация файла журнала даже если он пуст:"
#: source/ubl-strings.h:126 #: source/ubl-strings.h:127
msgid "Do not rotate journal younger than" msgid "Do not rotate journal younger than"
msgstr "Не ротировать журналы, возраст которых меньше" msgstr "Не ротировать журналы, возраст которых меньше"
#: source/ubl-strings.h:127 #: source/ubl-strings.h:128
msgid "days" msgid "days"
msgstr "дней" msgstr "дней"
#: source/ubl-strings.h:128 #: source/ubl-strings.h:129
msgid "Delete rotated journals older than" msgid "Delete rotated journals older than"
msgstr "Удалить ротированные журналы старше" msgstr "Удалить ротированные журналы старше"
#: source/ubl-strings.h:129 #: source/ubl-strings.h:130
msgid "Rotate journals if size more than" msgid "Rotate journals if size more than"
msgstr "Ротация журналов, если размер превышает" msgstr "Ротация журналов, если размер превышает"
#: source/ubl-strings.h:130 #: source/ubl-strings.h:131
msgid "but not earlier than the specified time interval" msgid "but not earlier than the specified time interval"
msgstr "но не раньше указанного интервала времени" msgstr "но не раньше указанного интервала времени"
#: source/ubl-strings.h:131 #: source/ubl-strings.h:132
msgid "before specified time interval" msgid "before specified time interval"
msgstr "до истечения указанного интервала времени" msgstr "до истечения указанного интервала времени"
#: source/ubl-strings.h:132 #: source/ubl-strings.h:133
msgid "File choosing configuration" msgid "File choosing configuration"
msgstr "Настройки выбора файла" msgstr "Настройки выбора файла"
#: source/ubl-strings.h:133 #: source/ubl-strings.h:134
msgid "Create log" msgid "Create log"
msgstr "Создавать лог" msgstr "Создавать лог"
#: source/ubl-strings.h:134 #: source/ubl-strings.h:135
msgid "as user:" msgid "as user:"
msgstr "от пользователя:" msgstr "от пользователя:"
#: source/ubl-strings.h:135 #: source/ubl-strings.h:136
msgid "as group:" msgid "as group:"
msgstr "от группы:" msgstr "от группы:"
#: source/ubl-strings.h:136 #: source/ubl-strings.h:137
msgid "rules:" msgid "rules:"
msgstr "права:" msgstr "права:"
#: source/ubl-strings.h:137 #: source/ubl-strings.h:138
msgid "" msgid ""
"Cut source journal fileafter copy creating instead of moving old journal " "Cut source journal fileafter copy creating instead of moving old journal "
"file and creating new one" "file and creating new one"
@ -555,176 +559,225 @@ msgstr ""
"После создания копии, обрезать исходный файл журнала взамен перемещения " "После создания копии, обрезать исходный файл журнала взамен перемещения "
"старого файла журнала и создания нового" "старого файла журнала и создания нового"
#: source/ubl-strings.h:138 #: source/ubl-strings.h:139
msgid "Files and directories configuration" msgid "Files and directories configuration"
msgstr "Настройки файлов и папок" msgstr "Настройки файлов и папок"
#: source/ubl-strings.h:139 #: source/ubl-strings.h:140
msgid "Delay compression by one journal in queue:" msgid "Delay compression by one journal in queue:"
msgstr "Отложить сжание на один журнал в очереди:" msgstr "Отложить сжание на один журнал в очереди:"
#: source/ubl-strings.h:140 #: source/ubl-strings.h:141
msgid "Compression configuration" msgid "Compression configuration"
msgstr "Настройка сжатия" msgstr "Настройка сжатия"
#: source/ubl-strings.h:141 #: source/ubl-strings.h:142
msgid "Save original log file after rotation if it has specified extension:" msgid "Save original log file after rotation if it has specified extension:"
msgstr "" msgstr ""
"Сохранять оригинальный лог после ротации, если у него указано расширение:" "Сохранять оригинальный лог после ротации, если у него указано расширение:"
#: source/ubl-strings.h:142 #: source/ubl-strings.h:143
msgid "Add date of rotation before log header" msgid "Add date of rotation before log header"
msgstr "Добавлять дату ротации перед заголовком старого лога:" msgstr "Добавлять дату ротации перед заголовком старого лога:"
#: source/ubl-strings.h:143 #: source/ubl-strings.h:144
msgid "Number from which numbering of old logs will begin" msgid "Number from which numbering of old logs will begin"
msgstr "Номер, с которого будет начата нумерация старых логов:" msgstr "Номер, с которого будет начата нумерация старых логов:"
#: source/ubl-strings.h:144 #: source/ubl-strings.h:145
msgid "Filename configuration" msgid "Filename configuration"
msgstr "Настройка имени файлов" msgstr "Настройка имени файлов"
#: source/ubl-strings.h:145 #: source/ubl-strings.h:146
msgid "Email after rotation:" msgid "Email after rotation:"
msgstr "Отправка Email после ротации:" msgstr "Отправка Email после ротации:"
#: source/ubl-strings.h:146 #: source/ubl-strings.h:147
msgid "adress:" msgid "adress:"
msgstr "на адрес:" msgstr "на адрес:"
#: source/ubl-strings.h:147 #: source/ubl-strings.h:148
msgid "contents:" msgid "contents:"
msgstr "содержимое:" msgstr "содержимое:"
#: source/ubl-strings.h:148 source/ubl-strings.h:161 #: source/ubl-strings.h:149 source/ubl-strings.h:162
msgid "Message configuration" msgid "Message configuration"
msgstr "Настройка сообщения" msgstr "Настройка сообщения"
#: source/ubl-strings.h:149 #: source/ubl-strings.h:150
msgid "Manual input:" msgid "Manual input:"
msgstr "Команды настройки" msgstr "Команды настройки"
#: source/ubl-strings.h:150 #: source/ubl-strings.h:151
msgid "Log (-s) size:" msgid "Log (-s) size:"
msgstr "Общий размер лога (-ов):" msgstr "Общий размер лога (-ов):"
#: source/ubl-strings.h:151 #: source/ubl-strings.h:152
msgid "Same directory" msgid "Same directory"
msgstr "Той же папке" msgstr "Той же папке"
#: source/ubl-strings.h:152 #: source/ubl-strings.h:153
msgid "Separate directory" msgid "Separate directory"
msgstr "Другой папке" msgstr "Другой папке"
#: source/ubl-strings.h:153 #: source/ubl-strings.h:154
msgid "Output errors if log file does not exist*" msgid "Output errors if log file does not exist*"
msgstr "Выводить ошибки, если лог файла не существует*" msgstr "Выводить ошибки, если лог файла не существует*"
#: source/ubl-strings.h:154 #: source/ubl-strings.h:155
msgid "Do not output errors if log file does not exist" msgid "Do not output errors if log file does not exist"
msgstr "Не выводить ошибки, если лог файла не существует" msgstr "Не выводить ошибки, если лог файла не существует"
#: source/ubl-strings.h:155 #: source/ubl-strings.h:156
msgid "Do not output" msgid "Do not output"
msgstr "Не выводить" msgstr "Не выводить"
#: source/ubl-strings.h:156 #: source/ubl-strings.h:157
msgid "Output errors" msgid "Output errors"
msgstr "Выводить ошибки" msgstr "Выводить ошибки"
#: source/ubl-strings.h:157 #: source/ubl-strings.h:158
msgid "Send Email" msgid "Send Email"
msgstr "Отправлять Email" msgstr "Отправлять Email"
#: source/ubl-strings.h:158 #: source/ubl-strings.h:159
msgid "Don't send Email" msgid "Don't send Email"
msgstr "Не отправлять Email" msgstr "Не отправлять Email"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:160
msgid "First rotated copy" msgid "First rotated copy"
msgstr "Первая ротированная копия" msgstr "Первая ротированная копия"
#: source/ubl-strings.h:160 #: source/ubl-strings.h:161
msgid "Last rotated copy" msgid "Last rotated copy"
msgstr "Последняя ротированная копия" msgstr "Последняя ротированная копия"
#: source/ubl-strings.h:162 #: source/ubl-strings.h:163
msgid "Endwork command:" msgid "Endwork command:"
msgstr "Команда перед удалением файла журнала:" msgstr "Команда перед удалением файла журнала:"
#: source/ubl-strings.h:165 #: source/ubl-strings.h:166
#, fuzzy #, fuzzy
msgid "Hourly" msgid "Hourly"
msgstr "Час" msgstr "Час"
#: source/ubl-strings.h:166 #: source/ubl-strings.h:167
msgid "Daily" msgid "Daily"
msgstr "День" msgstr "День"
#: source/ubl-strings.h:167 #: source/ubl-strings.h:168
msgid "Weekly*" msgid "Weekly*"
msgstr "Неделя*" msgstr "Неделя*"
#: source/ubl-strings.h:168 #: source/ubl-strings.h:169
msgid "Monthly" msgid "Monthly"
msgstr "Месяц" msgstr "Месяц"
#: source/ubl-strings.h:169 #: source/ubl-strings.h:170
msgid "Yearly" msgid "Yearly"
msgstr "Год" msgstr "Год"
#: source/ubl-strings.h:170 #: source/ubl-strings.h:171
msgid "Monday" msgid "Monday"
msgstr "Понедельник" msgstr "Понедельник"
#: source/ubl-strings.h:171 #: source/ubl-strings.h:172
msgid "Tuesday" msgid "Tuesday"
msgstr "Вторник" msgstr "Вторник"
#: source/ubl-strings.h:172 #: source/ubl-strings.h:173
msgid "Wednesday" msgid "Wednesday"
msgstr "Среда" msgstr "Среда"
#: source/ubl-strings.h:173 #: source/ubl-strings.h:174
msgid "Thursday" msgid "Thursday"
msgstr "Четверг" msgstr "Четверг"
#: source/ubl-strings.h:174 #: source/ubl-strings.h:175
msgid "Friday" msgid "Friday"
msgstr "Пятница" msgstr "Пятница"
#: source/ubl-strings.h:175 #: source/ubl-strings.h:176
msgid "Saturday" msgid "Saturday"
msgstr "Суббота" msgstr "Суббота"
#: source/ubl-strings.h:176 #: source/ubl-strings.h:177
msgid "Sunday*" msgid "Sunday*"
msgstr "Воскресенье*" msgstr "Воскресенье*"
#: source/ubl-strings.h:178
msgid "Same record already exists"
msgstr "Такая запись уже существует"
#: source/ubl-strings.h:179 #: source/ubl-strings.h:179
msgid "Empty important field"
msgstr "Важное поле не заполнено"
#: source/ubl-strings.h:180
msgid "Repeating paths"
msgstr "Повторяющиеся пути"
#: source/ubl-strings.h:181
#, fuzzy
msgid "Write down all important fields"
msgstr "Введите все необходимые поля"
#: source/ubl-strings.h:184
msgid "System configuration" msgid "System configuration"
msgstr "Настройки системы" msgstr "Настройки системы"
#: source/ubl-strings.h:180 #: source/ubl-strings.h:185
msgid "Applications configuration" msgid "Applications configuration"
msgstr "Настройки приложений" msgstr "Настройки приложений"
#: source/ubl-strings.h:183 #: source/ubl-strings.h:188
msgid "Path (-s):" msgid "Path (-s):"
msgstr "Путь (-и):" msgstr "Путь (-и):"
#: source/ubl-strings.h:184 #: source/ubl-strings.h:189
msgid "Control:" msgid "Control:"
msgstr "Управление:" msgstr "Управление:"
#: source/ubl-strings.h:185 #: source/ubl-strings.h:190
msgid "Log file" msgid "Log file"
msgstr "Файл лога" msgstr "Файл лога"
#: source/ubl-strings.h:186 #: source/ubl-strings.h:191
msgid "Name:" msgid "Name:"
msgstr "Имя:" msgstr "Имя:"
#: source/ubl-strings.h:194
msgid "Owner rules"
msgstr "Правила владельца"
#: source/ubl-strings.h:195
msgid "Group rules"
msgstr "Правила группы"
#: source/ubl-strings.h:196
msgid "Public rules"
msgstr "Правила остальных"
#: source/ubl-strings.h:197
msgid "Read"
msgstr "Чтение"
#: source/ubl-strings.h:198
msgid "Write"
msgstr "Запись"
#: source/ubl-strings.h:199
msgid "Execute"
msgstr "Исполнение"
#: source/ubl-strings.h:200
msgid "Value:"
msgstr "Значение:"
#: source/ubl-strings.h:203
msgid ": no such file(s)"
msgstr ": файл(ы) не найден(ы)"
msgid "System event log rotation service" msgid "System event log rotation service"
msgstr "Служба ротации системных журналов событий" msgstr "Служба ротации системных журналов событий"

Loading…
Cancel
Save