Version 1.0

pull/1/head
Ivan Yartsev 2 years ago
parent 762106b4da
commit 76b7ead432

@ -122,11 +122,18 @@ install: check uninstall
@sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.view-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "com.ublinux.${PKGNAME}.zoom-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.view-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.play-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.stop-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.zoom-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.back-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.increase-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.decrease-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.profile-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "journals_list.csv"
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "logging_services.csv"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \

@ -4,6 +4,9 @@
<file>ubl-settings-logging.glade</file>
<file>ubl-settings-logging-add.glade</file>
<file>ubl-settings-logging-inspector.glade</file>
<file>ubl-settings-logging-logrotate.glade</file>
<file>ubl-settings-logging-journald.glade</file>
<file>ubl-settings-logging-logrotate-table.glade</file>
</gresource>
<gresource prefix="/com/ublinux/css">
<file>ubl-settings-logging.css</file>

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16px"
viewBox="0 0 16 16"
width="16px"
version="1.1"
id="svg51"
sodipodi:docname="com.ublinux.ubl-settings-logging.back-symbolic.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="defs55" />
<sodipodi:namedview
id="namedview53"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="51.5"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg51" />
<g
fill="#2e3436"
id="g49"
transform="translate(-1.8375185,-2.8423752)">
<path
d="m 7,8 v 2 h 4 c 1.117188,0 2,0.882812 2,2 v 4 h 2 V 12 C 15,9.800781 13.199219,8 11,8 Z"
fill-rule="evenodd"
id="path45"
sodipodi:nodetypes="ccssccssc" />
<path
d="M 9,5 C 8.722656,5 8.472656,5.113281 8.292969,5.292969 L 4.585938,9 8.292969,12.707031 C 8.472656,12.886719 8.722656,13 9,13 h 1 V 12 C 10,11.722656 9.886719,11.472656 9.707031,11.292969 L 7.414062,9 9.707031,6.707031 C 9.886719,6.527344 10,6.277344 10,6 V 5 Z m 0,0"
id="path47" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16"
height="16"
version="1.1"
id="svg1352"
sodipodi:docname="com.ublinux.ubl-settings-logging.decrease-symbolic.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="defs1356" />
<sodipodi:namedview
id="namedview1354"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="45.4375"
inkscape:cx="7.9889959"
inkscape:cy="7.9889959"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1352" />
<path
d="M3 7h10v2H3z"
style="marker:none"
color="#bebebe"
overflow="visible"
fill="#2e3436"
id="path1350" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16"
height="16"
version="1.1"
id="svg1162"
sodipodi:docname="com.ublinux.ubl-settings-logging.increase-symbolic.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="defs1166" />
<sodipodi:namedview
id="namedview1164"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="45.4375"
inkscape:cx="7.9889959"
inkscape:cy="7.9889959"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1162" />
<path
style="marker:none"
d="M7 3v4H3v2h4v4h2V9h4V7H9V3z"
color="#bebebe"
overflow="visible"
fill="#2e3436"
id="path1160" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.1 r9760"
version="1.0"
sodipodi:docname="media-playback-start.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective18" />
<linearGradient
id="StandardGradient"
gradientTransform="scale(0.9306049,1.0745699)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297"
gradientUnits="userSpaceOnUse">
<stop
style="stop-color:#000000;stop-opacity:0.86274511;"
offset="0"
id="stop3389" />
<stop
style="stop-color:#000000;stop-opacity:0.47058824;"
offset="1"
id="stop3391" />
</linearGradient>
<inkscape:perspective
id="perspective3648"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient3627"
gradientUnits="userSpaceOnUse"
gradientTransform="scale(0.9306049,1.0745699)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3641">
<path
style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
d="m 3.3493431,6.6636072 0,10.7176378 11.3443579,0 0,-10.7176378 -11.3443579,0 z m 2.8360895,1.3397048 6.3812014,3.684188 -6.3812014,3.684188 0,-7.368376 z"
id="path3643" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient4019"
gradientUnits="userSpaceOnUse"
gradientTransform="scale(0.9306049,1.0745699)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient4023"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3125184,0,0,1.6041891,-4.7238894,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#e7e7e7"
borderopacity="1"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="24.711919"
inkscape:cx="-5.3028199"
inkscape:cy="6.3085737"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1">
<sodipodi:guide
orientation="1,0"
position="0,112"
id="guide2383" />
<sodipodi:guide
orientation="0,1"
position="78.156291,0"
id="guide2389" />
<inkscape:grid
type="xygrid"
id="grid3672"
visible="true"
enabled="true" />
<sodipodi:guide
orientation="1,0"
position="22.008699,4.1542523"
id="guide2950" />
<sodipodi:guide
orientation="0,1"
position="11.22532,22.008699"
id="guide2952" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<path
sodipodi:type="star"
style="opacity:1;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="Symbol"
sodipodi:sides="3"
sodipodi:cx="8.3125"
sodipodi:cy="11.6875"
sodipodi:r1="4.2541342"
sodipodi:r2="2.1270671"
sodipodi:arg1="0"
sodipodi:arg2="1.0471976"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 12.566634,11.6875 L 6.1854329,15.371688 L 6.1854329,8.0033117 L 12.566634,11.6875 z"
transform="matrix(1.4103927,0,0,1.4928662,-4.7238894,-9.9478739)"
inkscape:label="#path3175" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48"
height="48"
viewBox="0 0 12.7 12.7"
version="1.1"
id="svg1028"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
sodipodi:docname="com.ublinux.ubl-settings-logging.profile-symbolic.svg"
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">
<sodipodi:namedview
id="namedview1030"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
units="px"
inkscape:zoom="8"
inkscape:cx="55"
inkscape:cy="30.1875"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1025" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1">
<path
inkscape:connector-curvature="0"
d="M 6.442586,0 C 4.9396607,0 3.7212931,1.218368 3.7212931,2.7212931 c 0,1.5029251 1.2183676,2.721293 2.7212929,2.721293 1.502925,0 2.721293,-1.2183679 2.721293,-2.721293 C 9.163879,1.218368 7.945511,0 6.442586,0 Z M 5.0819394,6.3496861 C 2.8205458,6.3496861 1,8.1702286 1,10.431626 v 1.360646 c 0,0.907096 0.9070999,0.907096 0.9070999,0.907096 h 9.0709751 c 0,0 0.907097,0 0.907097,-0.907096 v -1.360646 c 0,-2.2613974 -1.820543,-4.0819399 -4.0819395,-4.0819399 z"
id="path4144"
sodipodi:nodetypes="ssssssccccccss"
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.67464;marker:none;enable-background:accumulate" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.1 r9760"
version="1.0"
sodipodi:docname="media-playback-stop.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective18" />
<linearGradient
id="StandardGradient"
gradientTransform="matrix(1.3125184,0,0,1.6041891,-4.7238894,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297"
gradientUnits="userSpaceOnUse">
<stop
style="stop-color:#000000;stop-opacity:0.86274511;"
offset="0"
id="stop3389" />
<stop
style="stop-color:#000000;stop-opacity:0.47058824;"
offset="1"
id="stop3391" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient2396"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3125184,0,0,1.6041891,7.2761106,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
<inkscape:perspective
id="perspective3648"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient3627"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3125184,0,0,1.6041891,-12.723889,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3634">
<path
style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
d="m -20,0 0,16 16,0 0,-16 -16,0 z m 4,3 3,0 0,10 -3,0 0,-10 z m 5,0 3,0 0,10 -3,0 0,-10 z"
id="path3636" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient2856"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3125184,0,0,1.6041891,-13.723889,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath2863">
<path
style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
d="m -20,0 0,16 16,0 0,-16 -16,0 z m 3,3 10,0 0,10 -4,0 -1,0 -2,0 -1,0 -2,0 0,-10 z"
id="path2865" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient3240"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3125184,0,0,1.6041891,6.2761106,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
<linearGradient
inkscape:collect="always"
xlink:href="#StandardGradient"
id="linearGradient3244"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3125184,0,0,1.6041891,6.2761106,-9.9478739)"
x1="9.2393684"
y1="7.4479208"
x2="9.2393684"
y2="14.326297" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#e7e7e7"
borderopacity="1"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="24.711919"
inkscape:cx="-7.5694545"
inkscape:cy="7.8549216"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1028"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1">
<sodipodi:guide
orientation="1,0"
position="0,112"
id="guide2383" />
<sodipodi:guide
orientation="0,1"
position="78.156291,0"
id="guide2389" />
<inkscape:grid
type="xygrid"
id="grid3672"
visible="true"
enabled="true" />
<sodipodi:guide
orientation="1,0"
position="22.008699,4.1542523"
id="guide2950" />
<sodipodi:guide
orientation="0,1"
position="11.22532,22.008699"
id="guide2952" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3,3 0,10 2,0 1,0 2,0 1,0 4,0 L 13,3 3,3 z"
id="Symbol"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,4 @@
journald;Системный журнал событий;systemctl start;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set config SERVICESSTART+=systemd-journald.service;ubconfig set config SERVICESSTART-=systemd-journald.service;systemctl status systemd-journald.service
logrotate;Служба ротации системных журналов событий;systemctl start logrotate.service;systemctl stop logrotate.service;ubconfig set config SERVICESSTART+=logrotate.service;ubconfig set config SERVICESSTART-=logrotate.service;systemctl status logrotate.service
metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service
syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service
1 journald;Системный журнал событий;systemctl start;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set config SERVICESSTART+=systemd-journald.service;ubconfig set config SERVICESSTART-=systemd-journald.service;systemctl status systemd-journald.service
2 logrotate;Служба ротации системных журналов событий;systemctl start logrotate.service;systemctl stop logrotate.service;ubconfig set config SERVICESSTART+=logrotate.service;ubconfig set config SERVICESSTART-=logrotate.service;systemctl status logrotate.service
3 metalog;Системный журнал событий;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set config SERVICESSTART+=metalog.service;ubconfig set config SERVICESSTART-=metalog.service;systemctl status metalog.service
4 syslog-ng;Сервис сбора сообщений системных событий активных сетевых устройств;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set config SERVICESSTART+=syslog-ng.service;ubconfig set config SERVICESSTART-=syslog-ng.service;systemctl status syslog-ng.service

@ -38,6 +38,9 @@ set(DEPENDFILES
../ubl-settings-logging.glade
../ubl-settings-logging-add.glade
../ubl-settings-logging-inspector.glade
../ubl-settings-logging-journald.glade
../ubl-settings-logging-logrotate.glade
../ubl-settings-logging-logrotate-table.glade
../gresource.xml
../ubl-settings-logging-banner.png
../ubl-settings-logging.css

@ -107,6 +107,28 @@ void yon_load_proceed(char *command){
}
add_log_window *on_add_open(){
add_log_window *window = malloc(sizeof(add_log_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_add_path);
window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
window->LogAddingBox=yon_gtk_builder_get_widget(builder,"LogAddingBox");
window->LogTypeCombo=yon_gtk_builder_get_widget(builder,"LogTypeCombo");
window->LogPathEntry=yon_gtk_builder_get_widget(builder,"LogPathEntry");
window->LogFindButton=yon_gtk_builder_get_widget(builder,"LogFindButton");
window->LogDescriptionEntry=yon_gtk_builder_get_widget(builder,"LogDescriptionEntry");
window->LogrotateButton=yon_gtk_builder_get_widget(builder,"LogrotateButton");
window->MetalogButton=yon_gtk_builder_get_widget(builder,"MetalogButton");
window->SyslogButton=yon_gtk_builder_get_widget(builder,"SyslogButton");
window->JournaldButton=yon_gtk_builder_get_widget(builder,"JournaldButton");
window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel");
window->StatisticsFrame=yon_gtk_builder_get_widget(builder,"StatisticsFrame");
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked", G_CALLBACK(on_close_subwindow),NULL);
return window;
}
void on_inspector_update(GtkWidget *self, inspector_window *window){
int size;
GtkTextIter titer,titerend;
@ -143,13 +165,14 @@ void on_inspector_update(GtkWidget *self, inspector_window *window){
window->last_mode=4;
output = yon_config_load(get_journal_output_prioritied_command, &size);
}
for (int i=0;i<size;i++){
if (output){
for (int i=0;i<size;i++){
gtk_text_buffer_get_end_iter(window->textbuffer1,&titer);
gtk_text_buffer_insert(window->textbuffer1,&titer,output[i],-1);
}
gtk_text_buffer_get_end_iter(window->textbuffer1,&titer);
gtk_text_buffer_insert(window->textbuffer1,&titer,output[i],-1);
gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(window->LoggingTextView),&titer,0.25,0,1,0);
}
gtk_text_buffer_get_end_iter(window->textbuffer1,&titer);
gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(window->LoggingTextView),&titer,0.25,0,1,0);
}
void on_inspector_open(GtkWidget *self, main_window *widgets){
@ -185,41 +208,6 @@ void on_inspector_open(GtkWidget *self, main_window *widgets){
}
}
add_log_window *yon_log_open(main_window *widgets){
add_log_window *window = malloc(sizeof(add_log_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_add_path);
window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
window->LogTypeCombo=yon_gtk_builder_get_widget(builder,"LogTypeCombo");
window->LogPathEntry=yon_gtk_builder_get_widget(builder,"LogPathEntry");
window->LogFindButton=yon_gtk_builder_get_widget(builder,"LogFindButton");
window->LogDescriptionEntry=yon_gtk_builder_get_widget(builder,"LogDescriptionEntry");
window->editingBox=yon_gtk_builder_get_widget(builder,"editingBox");
window->FileAmountCheck=yon_gtk_builder_get_widget(builder,"FileAmountCheck");
window->FileAmountSpin=yon_gtk_builder_get_widget(builder,"FileAmountSpin");
window->FileSizeCheck=yon_gtk_builder_get_widget(builder,"FileSizeCheck");
window->FileSizeSpin=yon_gtk_builder_get_widget(builder,"FileSizeSpin");
window->FileSizeCombo=yon_gtk_builder_get_widget(builder,"FileSizeCombo");
window->RotationPeriodCheck=yon_gtk_builder_get_widget(builder,"RotationPeriodCheck");
window->RotationPeriodCombo=yon_gtk_builder_get_widget(builder,"RotationPeriodCombo");
window->JournalSizeCheck=yon_gtk_builder_get_widget(builder,"JournalSizeCheck");
window->JournalSizeSpin=yon_gtk_builder_get_widget(builder,"JournalSizeSpin");
window->JournalSizeCombo=yon_gtk_builder_get_widget(builder,"JournalSizeCombo");
window->JournalGatheringPeriodCheck=yon_gtk_builder_get_widget(builder,"JournalGatheringPeriodCheck");
window->JournalGatheringPeriodCombo=yon_gtk_builder_get_widget(builder,"JournalGatheringPeriodCombo");
window->logSizeLabel=yon_gtk_builder_get_widget(builder,"logSizeLabel");
window->diskSizeLabel=yon_gtk_builder_get_widget(builder,"diskSizeLabel");
window->LogSettingsBox=yon_gtk_builder_get_widget(builder,"LogSettingsBox");
window->JournalSettingsBox=yon_gtk_builder_get_widget(builder,"JournalSettingsBox");
window->LogEditingBox=yon_gtk_builder_get_widget(builder,"LogEditingBox");
window->LogAddingBox=yon_gtk_builder_get_widget(builder,"LogAddingBox");
window->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameLabel");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
return window;
}
void on_log_choose(GtkWidget *self,add_log_window *window){
GtkWidget *dialog = gtk_file_chooser_dialog_new(TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL);
gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog),yon_ubl_user_get_home_directory(),NULL);
@ -237,114 +225,220 @@ void on_log_choose(GtkWidget *self,add_log_window *window){
gtk_widget_destroy(dialog);
}
void on_log_save(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
add_log_window *window = yon_dictionary_get_data(dict->first->next,add_log_window*);
char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->LogPathEntry));
const char *description = gtk_entry_get_text(GTK_ENTRY(window->LogDescriptionEntry));
char *path = yon_char_divide(name,yon_char_find_last(name,'/'));
GtkTreeIter iter;
gtk_list_store_append(widgets->list,&iter);
gtk_list_store_set(widgets->list,&iter,0,name,1,path,2,description,-1);
gtk_widget_destroy(window->MainWindow);
logrotate_configure_window *yon_logrotate_window_new(){
logrotate_configure_window *window = malloc(sizeof(logrotate_configure_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_logrotate_path);
window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
window->LogNamelabel=yon_gtk_builder_get_widget(builder,"LogNamelabel");
window->LogNameButton=yon_gtk_builder_get_widget(builder,"LogNameButton");
window->RotationPeriodCheck=yon_gtk_builder_get_widget(builder,"RotationPeriodCheck");
window->RotationPeriodMainCombo=yon_gtk_builder_get_widget(builder,"RotationPeriodMainCombo");
window->RotationPeriodAdditionalCombo=yon_gtk_builder_get_widget(builder,"RotationPeriodAdditionalCombo");
window->JournalMaxSizeCheck=yon_gtk_builder_get_widget(builder,"JournalMaxSizeCheck");
window->JournalMaxSizeSpin=yon_gtk_builder_get_widget(builder,"JournalMaxSizeSpin");
window->JournalMaxSizeCombo=yon_gtk_builder_get_widget(builder,"JournalMaxSizeCombo");
window->FileAmountCheck=yon_gtk_builder_get_widget(builder,"FileAmountCheck");
window->FileAmountSpin=yon_gtk_builder_get_widget(builder,"FileAmountSpin");
window->FileAmountCombo=yon_gtk_builder_get_widget(builder,"FileAmountCombo");
window->FileAmountEntry=yon_gtk_builder_get_widget(builder,"FileAmountEntry");
window->FileAmountButton=yon_gtk_builder_get_widget(builder,"FileAmountButton");
window->RotationAtUserCombo=yon_gtk_builder_get_widget(builder,"RotationAtUserCombo");
window->RotationAtGroupCombo=yon_gtk_builder_get_widget(builder,"RotationAtGroupCombo");
window->ErrorProcessingCombo=yon_gtk_builder_get_widget(builder,"ErrorProcessingCombo");
window->JournalEmptyCombo=yon_gtk_builder_get_widget(builder,"JournalEmptyCombo");
window->DoNotRotateYoungerCheck=yon_gtk_builder_get_widget(builder,"DoNotRotateYoungerCheck");
window->DoNotRotateYoungerSpin=yon_gtk_builder_get_widget(builder,"DoNotRotateYoungerSpin");
window->DeleteOlderCheck=yon_gtk_builder_get_widget(builder,"DeleteOlderCheck");
window->DeleteOlderSpin=yon_gtk_builder_get_widget(builder,"DeleteOlderSpin");
window->RotateSizeMaxAfterTimeCheck=yon_gtk_builder_get_widget(builder,"RotateSizeMaxAfterTimeCheck");
window->RotateSizeMaxAfterTimeSpin=yon_gtk_builder_get_widget(builder,"RotateSizeMaxAfterTimeSpin");
window->RotateSizeMaxAfterTimeCombo=yon_gtk_builder_get_widget(builder,"RotateSizeMaxAfterTimeCombo");
window->RotateSizeMaxBeforeTimeCheck=yon_gtk_builder_get_widget(builder,"RotateSizeMaxBeforeTimeCheck");
window->RotateSizeMaxBeforeTimeSpin=yon_gtk_builder_get_widget(builder,"RotateSizeMaxBeforeTimeSpin");
window->RotateSizeMaxBeforeTimeCombo=yon_gtk_builder_get_widget(builder,"RotateSizeMaxBeforeTimeCombo");
window->CreateLogCombo=yon_gtk_builder_get_widget(builder,"CreateLogCombo");
window->CreateLogUserCombo=yon_gtk_builder_get_widget(builder,"CreateLogUserCombo");
window->CreateGroupCombo=yon_gtk_builder_get_widget(builder,"CreateGroupCombo");
window->CreateLogEntry=yon_gtk_builder_get_widget(builder,"CreateLogEntry");
window->CreateLogButton=yon_gtk_builder_get_widget(builder,"CreateLogButton");
window->CutCheck=yon_gtk_builder_get_widget(builder,"CutCheck");
window->CompressionCombo=yon_gtk_builder_get_widget(builder,"CompressionCombo");
window->QueueCombo=yon_gtk_builder_get_widget(builder,"QueueCombo");
window->SaveOriginalCombo=yon_gtk_builder_get_widget(builder,"SaveOriginalCombo");
window->SaveOriginalEntry=yon_gtk_builder_get_widget(builder,"SaveOriginalEntry");
window->AddDateCombo=yon_gtk_builder_get_widget(builder,"AddDateCombo");
window->OldNumberCombo=yon_gtk_builder_get_widget(builder,"OldNumberCombo");
window->OldNumberEntry=yon_gtk_builder_get_widget(builder,"OldNumberEntry");
window->EmailCombo=yon_gtk_builder_get_widget(builder,"EmailCombo");
window->EmailEntry=yon_gtk_builder_get_widget(builder,"EmailEntry");
window->EmailContentsCombo=yon_gtk_builder_get_widget(builder,"EmailContentsCombo");
window->ManualInputEntry=yon_gtk_builder_get_widget(builder,"ManualInputEntry");
window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel");
window->headerTopic=yon_gtk_builder_get_widget(builder,"headerTopic");
window->LogNameDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogNameDescriptionLabel");
window->list=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
return window;
}
void on_log_add(GtkWidget *self, main_window *widgets){
add_log_window *window = yon_log_open(widgets);
gtk_widget_hide(window->editingBox);
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->LogFindButton),"clicked",G_CALLBACK(on_log_choose),window);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_log_save),dict);
gtk_dialog_run(GTK_DIALOG(window->MainWindow));
void on_logrotate_add(GtkWidget *self, main_window *widgets){
logrotate_configure_window *window = yon_logrotate_window_new();
gtk_widget_show(window->MainWindow);
add_log_window *dialog = on_add_open();
gtk_widget_hide(dialog->StatisticsFrame);
gtk_widget_hide(dialog->JournaldButton);
gtk_label_set_text(GTK_LABEL(window->LogNamelabel),"");
gtk_label_set_text(GTK_LABEL(window->LogNameDescriptionLabel),"");
gtk_label_set_text(GTK_LABEL(window->LogSizeLabel),"");
gtk_window_present(GTK_WINDOW(dialog->MainWindow));
}
void on_edit_save(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
add_log_window *window = yon_dictionary_get_data(dict->first->next,add_log_window*);
long file_amount = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileAmountCheck)) ? gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->FileAmountSpin)) : -1;
int size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileSizeCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->FileSizeCombo)) : -1;
long file_max_size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->FileSizeCheck)) ? gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->FileSizeSpin)) : -1;
for (int i=0;i<size;i++){
file_max_size=file_max_size*1024;
void on_logrotate_edit(GtkWidget *self, logrotate_tab_window *window){
GtkTreeModel *model = GTK_TREE_MODEL(main_config.logrotate_list);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model, &iter)){
logrotate_configure_window *dialog = yon_logrotate_window_new();
gtk_widget_show(dialog->MainWindow);
}
int rotation_period = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RotationPeriodCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationPeriodCombo)) : -1;
int journal_size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->JournalSizeCheck)) ? gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->JournalSizeSpin)) : -1;
size = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->JournalSizeCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->JournalSizeCombo)) : -1;
for (int i=0;i<size;i++){
journal_size=journal_size*1024;
}
void on_logrotate_remove(GtkWidget *self, logrotate_tab_window *window){
GtkTreeModel *model = GTK_TREE_MODEL(main_config.logrotate_list);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model, &iter)){
gtk_list_store_remove(main_config.logrotate_list,&iter);
}
int journal_gathering = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->JournalGatheringPeriodCheck)) ? gtk_combo_box_get_active(GTK_COMBO_BOX(window->JournalGatheringPeriodCombo)) : -1;
}
void on_logrotate_apps_configure(){
}
void on_logrotate_tab_open(GtkWidget *self, main_window *widgets){
logrotate_window *window = malloc(sizeof(logrotate_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_logrotate_table_path);
window->Window=yon_gtk_builder_get_widget(builder,"MainWindow");
window->AppsMainTree=yon_gtk_builder_get_widget(builder,"AppsMainTree");
window->MainTree=yon_gtk_builder_get_widget(builder,"MainTree");
window->AppsConfigureButton=yon_gtk_builder_get_widget(builder,"AppsConfigureButton");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
window->ConfigureButton = yon_gtk_builder_get_widget(builder,"ConfigureButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL);
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree),GTK_TREE_MODEL(main_config.logrotate_list));
gtk_tree_view_set_model(GTK_TREE_VIEW(window->AppsMainTree),GTK_TREE_MODEL(main_config.logrotate_apps_list));
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_logrotate_add),window);
g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_logrotate_remove),window);
g_signal_connect(G_OBJECT(window->ConfigureButton),"clicked",G_CALLBACK(on_logrotate_edit),window);
g_signal_connect(G_OBJECT(window->AppsConfigureButton),"clicked",G_CALLBACK(on_logrotate_apps_configure),NULL);
gtk_widget_show(window->Window);
}
void on_journald_open(GtkWidget *self, main_window *widgets){
journald_window *window = malloc(sizeof(journald_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_journald_path);
window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton");
window->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameLabel");
window->LogDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogDescriptionLabel");
window->LogStorageCombo=yon_gtk_builder_get_widget(builder,"LogStorageCombo");
window->LogCompressionCombo=yon_gtk_builder_get_widget(builder,"LogCompressionCombo");
window->LogCompressionEntry=yon_gtk_builder_get_widget(builder,"LogCompressionEntry");
window->LogCompressionSizeCombo=yon_gtk_builder_get_widget(builder,"LogCompressionSizeCombo");
window->DivideJournalFilesCombo=yon_gtk_builder_get_widget(builder,"DivideJournalFilesCombo");
window->LogIntervalCheck=yon_gtk_builder_get_widget(builder,"LogIntervalCheck");
window->LogIntervalSpin=yon_gtk_builder_get_widget(builder,"LogIntervalSpin");
window->LogIntervalAmountCheck=yon_gtk_builder_get_widget(builder,"LogIntervalAmountCheck");
window->LogIntervalAmountSpin=yon_gtk_builder_get_widget(builder,"LogIntervalAmountSpin");
window->LogSizeMaxCheck=yon_gtk_builder_get_widget(builder,"LogSizeMaxCheck");
window->LogSizeMaxSpin=yon_gtk_builder_get_widget(builder,"LogSizeMaxSpin");
window->LogSizeMaxCombo=yon_gtk_builder_get_widget(builder,"LogSizeMaxCombo");
window->RotationSizeMaxCheck=yon_gtk_builder_get_widget(builder,"RotationSizeMaxCheck");
window->RotationSizeMaxSpin=yon_gtk_builder_get_widget(builder,"RotationSizeMaxSpin");
window->RotationSizeMaxCombo=yon_gtk_builder_get_widget(builder,"RotationSizeMaxCombo");
window->LogFreeSpaceCheck=yon_gtk_builder_get_widget(builder,"LogFreeSpaceCheck");
window->LogFreeSpaceSpin=yon_gtk_builder_get_widget(builder,"LogFreeSpaceSpin");
window->LogFreeSpaceCombo=yon_gtk_builder_get_widget(builder,"LogFreeSpaceCombo");
window->RedirectCombo=yon_gtk_builder_get_widget(builder,"RedirectCombo");
window->RedirectTTYEntry=yon_gtk_builder_get_widget(builder,"RedirectTTYEntry");
window->ForwardedTypeCombo=yon_gtk_builder_get_widget(builder,"ForwardedTypeCombo");
window->LogSizeLabel=yon_gtk_builder_get_widget(builder,"LogSizeLabel");
window->LowerSizeEntry=yon_gtk_builder_get_widget(builder,"LowerSizeEntry");
window->LowerSizeCombo=yon_gtk_builder_get_widget(builder,"LowerSizeCombo");
window->LowerSizeButton=yon_gtk_builder_get_widget(builder,"LowerSizeButton");
window->LowerTimeEntry=yon_gtk_builder_get_widget(builder,"LowerTimeEntry");
window->LowerTimeCombo=yon_gtk_builder_get_widget(builder,"LowerTimeCombo");
window->LowerTimeButton=yon_gtk_builder_get_widget(builder,"LowerTimeButton");
window->headerTopic=yon_gtk_builder_get_widget(builder,"headerTopic");
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
gtk_widget_show(window->MainWindow);
}
void on_serivces_open(GtkWidget *self,main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->list);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
gtk_list_store_set(widgets->list,&iter,3,file_amount,4,file_max_size,5,rotation_period,6,journal_size,7,journal_gathering,-1);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model, &iter)){
char *service_name;
gtk_tree_model_get(model,&iter,1,&service_name,-1);
if (!strcmp(service_name,"journald")){
on_journald_open(NULL,widgets);
} else {
on_logrotate_tab_open(NULL,widgets);
}
}
gtk_widget_destroy(window->MainWindow);
}
void on_log_edit(GtkWidget *self, main_window *widgets){
add_log_window *window = yon_log_open(widgets);
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->MainTree));
void on_log_add(GtkWidget *self, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->list);
GtkTreeIter iter;
add_log_window *window = on_add_open();
gtk_widget_show(window->MainWindow);
gtk_widget_hide(window->StatisticsFrame);
gtk_widget_hide(window->JournaldButton);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL);
}
void on_log_edit(GtkWidget *self,main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->list);
GtkTreeIter iter;
char *name;
long files;
long maxsize;
int rotation_period;
long journal_max_size;
int journal_gathering_period;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MainTree)),&model,&iter)){
gtk_tree_model_get(model,&iter,0,&name,3,&files,4,&maxsize,5,&rotation_period,6,&journal_max_size,7,&journal_gathering_period,-1);
if (strcmp(name,"journald")){
gtk_widget_hide(window->JournalSettingsBox);
add_log_window *window = on_add_open();
gtk_widget_show(window->MainWindow);
gtk_widget_hide(window->StatisticsFrame);
char *name;
gtk_tree_model_get(model,&iter,0,&name,-1);
if (!strcmp(name,"journald")){
gtk_widget_hide(window->LogrotateButton);
gtk_widget_hide(window->MetalogButton);
gtk_widget_hide(window->SyslogButton);
g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets);
} else {
gtk_widget_hide(window->LogSettingsBox);
}
gtk_label_set_text(GTK_LABEL(window->LogNameLabel),name);
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->FileAmountCheck),"toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->FileAmountSpin);
g_signal_connect(G_OBJECT(window->FileSizeCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->FileSizeSpin);
g_signal_connect(G_OBJECT(window->FileSizeCheck),"toggled" ,G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->FileSizeCombo);
g_signal_connect(G_OBJECT(window->RotationPeriodCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->RotationPeriodCombo);
g_signal_connect(G_OBJECT(window->JournalSizeCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->JournalSizeSpin);
g_signal_connect(G_OBJECT(window->JournalSizeCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->JournalSizeCombo);
g_signal_connect(G_OBJECT(window->JournalGatheringPeriodCheck), "toggled", G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->JournalGatheringPeriodCombo);
g_signal_connect(G_OBJECT(window->SaveButton), "clicked", G_CALLBACK(on_edit_save),dict);
if (files!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->FileAmountCheck),1);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->FileAmountSpin),files!=-1 ? files : 0);
int size_mod;
double size_final = (double)maxsize;
for (size_mod=0;(double)size_final>1024;size_mod++){
size_final=size_final/1024;
}
if (size_final!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->FileSizeCheck),1);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->FileSizeSpin),size_final!=-1 ? size_final : 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->FileSizeCombo),size_mod!=-1 ? size_final : 0);
if (rotation_period!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->RotationPeriodCheck),1);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationPeriodCombo),rotation_period!=-1 ? rotation_period : 0);
size_mod;
size_final = (double)journal_max_size;
for (size_mod=0;(double)size_final>0.1;size_mod++){
size_final=size_final/1024;
gtk_widget_hide(window->JournaldButton);
// g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets);
// g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_log),widgets);
// g_signal_connect(G_OBJECT(window->JournaldButton),"clicked", G_CALLBACK(on_journald_open),widgets);
}
if (size_final!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->JournalSizeCheck),1);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->JournalSizeSpin),size_final!=-1 ? size_final : 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->JournalSizeCombo),size_mod!=-1 ? size_final : 0);
if (journal_gathering_period!=-1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->JournalGatheringPeriodCheck),1);
gtk_combo_box_set_active(GTK_COMBO_BOX(window->JournalGatheringPeriodCombo),journal_gathering_period!=-1 ? journal_gathering_period : 0);
gtk_widget_hide(window->LogAddingBox);
gtk_widget_show(window->LogEditingBox);
gtk_widget_show(window->editingBox);
gtk_dialog_run(GTK_DIALOG(window->MainWindow));
gtk_widget_destroy(window->MainWindow);
gtk_widget_set_sensitive(window->LogAddingBox,0);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked", G_CALLBACK(on_close_subwindow),NULL);
}
}
void on_log_remove(GtkWidget *self, main_window *widgets){
@ -355,6 +449,20 @@ void on_log_remove(GtkWidget *self, main_window *widgets){
}
}
void on_service_edit(GtkWidget *self,main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->ServicesList);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ServicesTree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,1,&name,-1);
if (!strcmp(name,"journald")){
on_journald_open(NULL,widgets);
} else {
on_logrotate_tab_open(NULL,widgets);
}
}
}
// standard functions
void config_init(){
@ -371,6 +479,8 @@ void config_init(){
main_config.lock_load_global=0;
main_config.lock_save_global=0;
main_config.lock_save_local=0;
main_config.logrotate_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
main_config.logrotate_apps_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING);
}
main_window *setup_window(){
@ -409,7 +519,11 @@ main_window *setup_window(){
widgets->ConfigureButton = yon_gtk_builder_get_widget(builder,"MainConfigureButton");
widgets->AddButton = yon_gtk_builder_get_widget(builder,"MainAddButton");
widgets->RemoveButton = yon_gtk_builder_get_widget(builder,"MainRemoveButton");
widgets->Notebook = yon_gtk_builder_get_widget(builder,"MainNotebook");
widgets->ServicesEditButton = yon_gtk_builder_get_widget(builder,"ServicesEditButton");
widgets->ServicesTree = yon_gtk_builder_get_widget(builder,"ServicesTree");
widgets->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
widgets->ServicesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"ServicesList"));
widgets->MainTree = yon_gtk_builder_get_widget(builder,"MainTree");
@ -431,6 +545,10 @@ main_window *setup_window(){
gtk_widget_set_sensitive(widgets->SaveMenuItem,0);
}
int size;
int service_size;
int dirs_size;
char *cname=NULL;
char *cparams="";
GtkTreeIter iter;
config_str journals = yon_file_open(journals_list_path,&size);
for (int i=0;i<size;i++){
@ -440,6 +558,48 @@ main_window *setup_window(){
gtk_list_store_append(widgets->list,&iter);
gtk_list_store_set(widgets->list,&iter,0,log[0],1,log[1],2,log[2],3,-1,4,-1,5,-1,6,-1,7,-1,-1);
}
config_str services = yon_file_open(services_list_path,&service_size);
for (int i=0;i<service_size;i++){
int log_size;
services[i]=yon_char_divide_search(services[i],"\n",-1);
config_str log = yon_char_parse(services[i],&log_size,";");
gtk_list_store_append(widgets->ServicesList,&iter);
gtk_list_store_set(widgets->ServicesList,&iter,0,0,1,log[0],2,log[1],-1);
// yon_char_parsed_free(log,log_size);
}
// yon_char_parsed_free(services,service_size);
config_str dirs = yon_config_load(logrotate_config_command,&dirs_size);
for (int i=0;i<dirs_size;i++){
int filesize;
gboolean bracket_found=0;
yon_char_divide_search_self(dirs[i],"\n",-1);
config_str file = yon_file_open(yon_char_append(logrotate_config_path,dirs[i]),&filesize);
for (int j=0;j<filesize;j++){
file[i]=yon_char_divide_search(file[j],"\n",-1);
if (file[i][0]!='#'&&bracket_found==0&&strcmp(file[i],"")){
if (strstr(file[i],"{")) {
bracket_found = 1;
yon_char_divide_search_self(file[i],"{",-1);
if (!cname) cname = file[i];
continue;
}
if (!cname)
cname = file[i];
} else if (file[i][0]!='#'&&bracket_found==1&&strcmp(file[i],"")) {
if (!strstr(file[i],"}"))
cparams = yon_char_unite(cparams,",",file[i],NULL);
else if (strstr(file[i],"}")) break;
}
}
cname = yon_char_replace(cname, " ", "\n");
if (cname[strlen(cname)-1]=='\n') cname[strlen(cname)-1]='\0';
gtk_list_store_append(main_config.logrotate_apps_list,&iter);
gtk_list_store_set(main_config.logrotate_apps_list,&iter,0,dirs[i],1,cname,2,cparams,-1);
free(cname);
cname=NULL;
cparams="";
}
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
// yon_window_config_add_custom_parameter(widgets->HeadInfoLabel,"head-text","label",YON_TYPE_STRING);
@ -452,6 +612,7 @@ main_window *setup_window(){
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_log_add),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigureButton),"clicked",G_CALLBACK(on_log_edit),widgets);
g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_log_remove),widgets);
g_signal_connect(G_OBJECT(widgets->ServicesEditButton),"clicked",G_CALLBACK(on_service_edit),widgets);
gtk_widget_show(widgets->Window);

@ -21,10 +21,16 @@
#define glade_path "/com/ublinux/ui/ubl-settings-logging.glade"
#define glade_add_path "/com/ublinux/ui/ubl-settings-logging-add.glade"
#define glade_inspector_path "/com/ublinux/ui/ubl-settings-logging-inspector.glade"
#define glade_journald_path "/com/ublinux/ui/ubl-settings-logging-journald.glade"
#define glade_logrotate_path "/com/ublinux/ui/ubl-settings-logging-logrotate.glade"
#define glade_logrotate_table_path "/com/ublinux/ui/ubl-settings-logging-logrotate-table.glade"
#define banner_path "/com/ublinux/images/ubl-settings-logging-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-logging.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define journals_list_path "/usr/share/ubl-settings-logging/csv/journals_list.csv"
#define services_list_path "/usr/share/ubl-settings-logging/csv/logging_services.csv"
#define logrotate_config_command "ls /etc/logrotate.d/ |sed -e 's/ */\\n/g'"
#define logrotate_config_path "/etc/logrotate.d/"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-logging"
@ -55,6 +61,9 @@ typedef struct {
int lock_save_local;
int lock_save_global;
int lock_load_global;
GtkListStore *logrotate_list;
GtkListStore *logrotate_apps_list;
} config;
typedef struct {
@ -92,7 +101,12 @@ typedef struct {
GtkWidget *ConfigureButton;
GtkWidget *AddButton;
GtkWidget *RemoveButton;
GtkWidget *Notebook;
GtkWidget *ServicesTree;
GtkWidget *ServicesEditButton;
GtkListStore *list;
GtkListStore *ServicesList;
// Custom
} main_window;
@ -141,6 +155,12 @@ typedef struct {
GtkWidget *LogEditingBox;
GtkWidget *LogAddingBox;
GtkWidget *LogNameLabel;
GtkWidget *LogrotateButton;
GtkWidget *MetalogButton;
GtkWidget *SyslogButton;
GtkWidget *JournaldButton;
GtkWidget *LogSizeLabel;
GtkWidget *StatisticsFrame;
} add_log_window;
typedef struct {
@ -158,5 +178,117 @@ int last_mode;
} inspector_window;
typedef struct {
GtkWidget *Window;
GtkWidget *MainTree;
GtkWidget *ConfiguraButton;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
GtkListStore *list;
} logrotate_tab_window;
typedef struct {
GtkWidget *Window;
GtkWidget *AppsMainTree;
GtkWidget *AppsConfigureButton;
GtkWidget *MainTree;
GtkWidget *AddButton;
GtkWidget *RemoveButton;
GtkWidget *ConfigureButton;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
} logrotate_window;
typedef struct {
GtkWidget *MainWindow;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
GtkWidget *LogNameLabel;
GtkWidget *LogDescriptionLabel;
GtkWidget *LogStorageCombo;
GtkWidget *LogCompressionCombo;
GtkWidget *LogCompressionEntry;
GtkWidget *LogCompressionSizeCombo;
GtkWidget *DivideJournalFilesCombo;
GtkWidget *LogIntervalCheck;
GtkWidget *LogIntervalSpin;
GtkWidget *LogIntervalAmountCheck;
GtkWidget *LogIntervalAmountSpin;
GtkWidget *LogSizeMaxCheck;
GtkWidget *LogSizeMaxSpin;
GtkWidget *LogSizeMaxCombo;
GtkWidget *RotationSizeMaxCheck;
GtkWidget *RotationSizeMaxSpin;
GtkWidget *RotationSizeMaxCombo;
GtkWidget *LogFreeSpaceCheck;
GtkWidget *LogFreeSpaceSpin;
GtkWidget *LogFreeSpaceCombo;
GtkWidget *RedirectCombo;
GtkWidget *RedirectTTYEntry;
GtkWidget *ForwardedTypeCombo;
GtkWidget *LogSizeLabel;
GtkWidget *LowerSizeEntry;
GtkWidget *LowerSizeCombo;
GtkWidget *LowerSizeButton;
GtkWidget *LowerTimeEntry;
GtkWidget *LowerTimeCombo;
GtkWidget *LowerTimeButton;
GtkWidget *headerTopic;
} journald_window;
typedef struct {
GtkWidget *MainWindow;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
GtkWidget *LogNamelabel;
GtkWidget *LogNameButton;
GtkWidget *LogNameDescriptionLabel;
GtkWidget *RotationPeriodCheck;
GtkWidget *RotationPeriodMainCombo;
GtkWidget *RotationPeriodAdditionalCombo;
GtkWidget *JournalMaxSizeCheck;
GtkWidget *JournalMaxSizeSpin;
GtkWidget *JournalMaxSizeCombo;
GtkWidget *FileAmountCheck;
GtkWidget *FileAmountSpin;
GtkWidget *FileAmountCombo;
GtkWidget *FileAmountEntry;
GtkWidget *FileAmountButton;
GtkWidget *RotationAtUserCombo;
GtkWidget *RotationAtGroupCombo;
GtkWidget *ErrorProcessingCombo;
GtkWidget *JournalEmptyCombo;
GtkWidget *DoNotRotateYoungerCheck;
GtkWidget *DoNotRotateYoungerSpin;
GtkWidget *DeleteOlderCheck;
GtkWidget *DeleteOlderSpin;
GtkWidget *RotateSizeMaxAfterTimeCheck;
GtkWidget *RotateSizeMaxAfterTimeSpin;
GtkWidget *RotateSizeMaxAfterTimeCombo;
GtkWidget *RotateSizeMaxBeforeTimeCheck;
GtkWidget *RotateSizeMaxBeforeTimeSpin;
GtkWidget *RotateSizeMaxBeforeTimeCombo;
GtkWidget *CreateLogCombo;
GtkWidget *CreateLogUserCombo;
GtkWidget *CreateGroupCombo;
GtkWidget *CreateLogEntry;
GtkWidget *CreateLogButton;
GtkWidget *CutCheck;
GtkWidget *CompressionCombo;
GtkWidget *QueueCombo;
GtkWidget *SaveOriginalCombo;
GtkWidget *SaveOriginalEntry;
GtkWidget *AddDateCombo;
GtkWidget *OldNumberCombo;
GtkWidget *OldNumberEntry;
GtkWidget *EmailCombo;
GtkWidget *EmailEntry;
GtkWidget *EmailContentsCombo;
GtkWidget *ManualInputEntry;
GtkWidget *LogSizeLabel;
GtkWidget *headerTopic;
GtkListStore *list;
} logrotate_configure_window;
main_window *setup_window();

@ -751,6 +751,13 @@ config_str yon_char_parsed_new (int *size, ...){
return new_parsed;
}
void yon_char_parsed_free(config_str source, int size){
for (int i=0;i<size;i++){
free(source[i]);
}
free(source);
}
/**yon_char_parsed_copy(config_str *source, config_str *to_copy)
* [EN]
*
@ -943,6 +950,7 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size)
};
config_str yon_file_open(char *file_path, int *size){
*size=0;
FILE *file = fopen(file_path,"r");
if (file){
char str_loaded[4098];
@ -954,6 +962,30 @@ config_str yon_file_open(char *file_path, int *size){
}
}
/**
* yon_dir_get_contents(char *dir_path, int *size)
* [EN]
*
* [RU]
* Проверяет существует ли папка [dir_path] и
* возвращает список всех вложенных файлов и папок,
* передавая в [size] длину списка.
*/
config_str yon_dir_get_contents(char *dir_path, int *size){
config_str dir = NULL;
*size=0;
if (!access(dir_path,F_OK)){
DIR *directory = opendir(dir_path);
struct dirent *de;
while ((de = readdir(directory))){
if (dir) yon_char_parsed_append(dir,size,de->d_name);
else dir = yon_char_parsed_new(size,de->d_name,NULL);
}
closedir(directory);
}
return dir;
}
//config functions
typedef struct yon_config_parameter

@ -121,6 +121,8 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo
// char functions
#define yon_char_divide_search_self(str,find,delete_divider) {char *temp = str; str = yon_char_divide_search(str,find,delete_divider); free(temp);}
int yon_char_find_last(char *source, char find);
char *yon_char_append(char *source, char *append);
@ -151,6 +153,8 @@ int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check
config_str yon_char_parsed_new (int *size, ...);
void yon_char_parsed_free(config_str source, int size);
void yon_char_parsed_copy(config_str *source, config_str *to_copy);
config_str yon_char_parsed_append(config_str parsed, int *size, char *string);
@ -173,6 +177,8 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size);
config_str yon_file_open(char *file_path, int *size);
config_str yon_dir_get_contents(char *dir_path, int *size);
//config functions
#define ubconfig_save_command "ubconfig"

@ -29,14 +29,40 @@
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.increase-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.zoom-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-save-symbolic</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-save-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-save-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-save-symbolic</property>
</object>
<object class="GtkDialog" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">450</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
@ -83,7 +109,8 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
@ -131,6 +158,31 @@
<property name="position">1</property>
</packing>
</child>
</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">5</property>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Path (-s):</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="LogPathEntry">
<property name="visible">True</property>
@ -139,6 +191,22 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LogSearchButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
@ -158,11 +226,27 @@
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LogRemoveButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image9</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</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">0</property>
<property name="position">1</property>
</packing>
</child>
<child>
@ -197,7 +281,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
@ -207,470 +291,180 @@
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</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">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="LogEditingBox">
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<property name="label" translatable="yes">Control:</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="GtkLabel" id="label3">
<object class="GtkButton" id="LogrotateButton">
<property name="label" translatable="yes">Logrotate</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Log/Journal:</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="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="LogNameLabel">
<object class="GtkButton" id="MetalogButton">
<property name="label" translatable="yes">Metalog</property>
<property name="visible">True</property>
<property name="can-focus">False</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">False</property>
<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">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</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</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkBox" id="editingBox">
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</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="GtkFrame">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<property name="spacing">5</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</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="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="LogSettingsBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">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="GtkCheckButton" id="FileAmountCheck">
<property name="label" translatable="yes">File amount:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="FileAmountSpin">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment2</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</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">5</property>
<child>
<object class="GtkCheckButton" id="FileSizeCheck">
<property name="label" translatable="yes">File maximum size:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="FileSizeSpin">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment1</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="FileSizeCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="RotationPeriodCheck">
<property name="label" translatable="yes">Rotation period:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</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="RotationPeriodCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">day</item>
<item translatable="yes">week</item>
<item translatable="yes">month</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</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">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="JournalSettingsBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">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="GtkCheckButton" id="JournalSizeCheck">
<property name="label" translatable="yes">Journal maximum size:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="JournalSizeSpin">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjustment3</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="JournalSizeCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</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">5</property>
<child>
<object class="GtkCheckButton" id="JournalGatheringPeriodCheck">
<property name="label" translatable="yes">Information gathering period:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</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="JournalGatheringPeriodCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">day</item>
<item translatable="yes">week</item>
<item translatable="yes">month</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</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">Rotation configuration</property>
<property name="label" translatable="yes">Log size:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<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="bottom-padding">5</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="orientation">vertical</property>
<property name="spacing">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>
</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>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</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">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Disk size (overall/free):</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="diskSizeLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<object class="GtkLabel" id="LogSizeLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Statistics</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>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</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="position">2</property>
<property name="pack-type">end</property>
<property name="position">4</property>
</packing>
</child>
</object>
@ -719,6 +513,13 @@
<widgets>
<widget name="label1"/>
<widget name="label2"/>
<widget name="label4"/>
<widget name="label3"/>
</widgets>
</object>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.decrease-symbolic</property>
</object>
</interface>

@ -38,6 +38,21 @@
<property name="can-focus">False</property>
<property name="icon-name">emblem-synchronizing-symbolic</property>
</object>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-documents-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-synchronizing-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-shared-symbolic</property>
</object>
<object class="GtkTextBuffer" id="textbuffer1"/>
<object class="GtkWindow" id="MainWindow">
<property name="width-request">800</property>
@ -140,6 +155,57 @@
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ShowPriorityButton2">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show only priority error messages, critical messages and warnings</property>
<property name="image">image7</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ShowPriorityButton1">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show only priority error messages, critical messages and warnings</property>
<property name="image">image6</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ShowPriorityButton3">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show only priority error messages, critical messages and warnings</property>
<property name="image">image8</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>

@ -0,0 +1,978 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-logging">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-logging.css -->
<object class="GtkSizeGroup"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">1024</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment2">
<property name="upper">1024</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</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="GtkAdjustment" id="adjustment4">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment5">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment6">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment7">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment8">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkDialog" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">450</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
<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="orientation">vertical</property>
<property name="spacing">5</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</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="SaveButton">
<property name="label" translatable="yes">Save</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<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="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Log/Journal:</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="LogNameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">logname</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</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">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</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="LogDescriptionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">logdescription</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</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="orientation">vertical</property>
<property name="spacing">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">Journal storage place:</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="LogStorageCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</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">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Use compression:</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="LogCompressionCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="LogCompressionEntry">
<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">2</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LogCompressionSizeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<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">Divide journal files:</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="DivideJournalFilesCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</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="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="LogIntervalCheck">
<property name="label" translatable="yes">Log recording journal interval:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="LogIntervalSpin">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment4</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="LogIntervalAmountCheck">
<property name="label" translatable="yes">Records amount:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="LogIntervalAmountSpin">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment5</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">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="LogSizeMaxCheck">
<property name="label" translatable="yes">Maximum size of all logs:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="LogSizeMaxSpin">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LogSizeMaxCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="RotationSizeMaxCheck">
<property name="label" translatable="yes">Maximum size of rotation journal:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="RotationSizeMaxSpin">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment7</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="RotationSizeMaxCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="LogFreeSpaceCheck">
<property name="label" translatable="yes">Leave free space at storage: </property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="LogFreeSpaceSpin">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment8</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LogFreeSpaceCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<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">Redirect to console:</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="RedirectCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Default</item>
</items>
</object>
<packing>
<property name="expand">False</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">TTY:</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="RedirectTTYEntry">
<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>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<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">Type of forwarded messages:</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="ForwardedTypeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Default</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</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">Journal configuration</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="bottom-padding">5</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="orientation">vertical</property>
<property name="spacing">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">Total log size:</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>
<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">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Lower size to:</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="LowerSizeEntry">
<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">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LowerSizeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Kb</item>
<item translatable="yes">Mb</item>
<item translatable="yes">Gb</item>
<item translatable="yes">Tb</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LowerSizeButton">
<property name="label" translatable="yes">Apply</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</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">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<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">Lower size to:</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="LowerTimeEntry">
<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">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LowerTimeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Minutes</item>
<item translatable="yes">Hours</item>
<item translatable="yes">Days</item>
<item translatable="yes">Weeks</item>
<item translatable="yes">Months</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="LowerTimeButton">
<property name="label" translatable="yes">Apply</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image3</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">False</property>
<property name="fill">True</property>
<property name="position">2</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="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="headerTopic">
<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-bottom">2</property>
<property name="label" translatable="yes">Logs and events</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<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">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property>
</object>
</child>
<style>
<class name="toolbar"/>
</style>
</object>
</child>
</object>
</interface>

@ -0,0 +1,386 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-logging">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-logging.css -->
<object class="GtkSizeGroup"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">1024</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment2">
<property name="upper">1024</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</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">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-edit-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-logging.decrease-symbolic</property>
</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.increase-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.back-symbolic</property>
</object>
<object class="GtkDialog" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">450</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
<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="orientation">vertical</property>
<property name="spacing">5</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</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="SaveButton">
<property name="label" translatable="yes">Save</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkNotebook">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<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>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="AddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RemoveButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ConfigureButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image3</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="MainTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Log/Journal</property>
<child>
<object class="GtkCellRendererText"/>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Path</property>
<child>
<object class="GtkCellRendererText"/>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText"/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">System configuration</property>
</object>
<packing>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox">
<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>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="AppsConfigureButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image8</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="AppsMainTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Log/Journal</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Path</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Applications configuration</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab-fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="headerTopic">
<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-bottom">2</property>
<property name="label" translatable="yes">Logs and events</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<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">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-logging</property>
</object>
</child>
<style>
<class name="toolbar"/>
</style>
</object>
</child>
</object>
</interface>

File diff suppressed because it is too large Load Diff

@ -191,6 +191,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</packing>
</child>
</object>
<object class="GtkListStore" id="LogrotateList">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="ServicesList">
<columns>
<!-- column-name gboolean1 -->
<column type="gboolean"/>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gchararray2 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -211,6 +227,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="can-focus">False</property>
<property name="icon-name">user-trash-symbolic</property>
</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.stop-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.play-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-edit-symbolic</property>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -627,25 +658,88 @@ translated and supported by community.</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<object class="GtkNotebook" id="MainNotebook">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</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="spacing">5</property>
<child>
<object class="GtkButton" id="MainInspectButton">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
</style>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="MainInspectButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MainConfigureButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MainAddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image3</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MainRemoveButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@ -654,139 +748,237 @@ translated and supported by community.</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MainConfigureButton">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="MainTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore1</property>
<property name="tooltip-column">2</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">30</property>
<property name="title" translatable="yes">Log/Journal</property>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
<property name="wrap-width">100</property>
</object>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">30</property>
<property name="title" translatable="yes">Path</property>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
<property name="wrap-width">100</property>
</object>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">30</property>
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
<property name="wrap-width">100</property>
</object>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Journals</property>
</object>
<packing>
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkBox">
<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>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="MainAddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image3</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MainRemoveButton">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="ServicesStopButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ServicesPlayButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image6</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ServicesEditButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image7</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="MainTree">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore1</property>
<property name="tooltip-column">2</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">30</property>
<property name="title" translatable="yes">Log/Journal</property>
<object class="GtkTreeView" id="ServicesTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">ServicesList</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
<property name="wrap-width">100</property>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Status</property>
<child>
<object class="GtkCellRendererToggle"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">30</property>
<property name="title" translatable="yes">Path</property>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
<property name="wrap-width">100</property>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Service</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">1</attribute>
</attributes>
</child>
</object>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">30</property>
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText">
<property name="ellipsize">end</property>
<property name="wrap-width">100</property>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">2</attribute>
</attributes>
</child>
</object>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</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">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Services</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab-fill">False</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">1</property>
</packing>
</child>
</object>

Loading…
Cancel
Save