Merge pull request 'master' (#43) from YanTheKaller/libublsettingsui-gtk3:master into master

Reviewed-on: #43
master v1.40
Dmitry Razumov 6 months ago
commit d01be74dd8

@ -8,6 +8,8 @@
<file>libublsettingsui-gtk3-debugger.glade</file> <file>libublsettingsui-gtk3-debugger.glade</file>
<file>libublsettingsui-gtk3-filechooser.glade</file> <file>libublsettingsui-gtk3-filechooser.glade</file>
<file>libublsettingsui-gtk3-config-window.glade</file> <file>libublsettingsui-gtk3-config-window.glade</file>
<file>libublsettingsui-gtk3-service-control.glade</file>
<file>libublsettingsui-gtk3-app-chooser.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>libublsettingsui-gtk3.css</file> <file>libublsettingsui-gtk3.css</file>

@ -0,0 +1,122 @@
<?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: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.91 r13725"
version="1.0"
sodipodi:docname="changes-allow-symbolic.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#e7e7e7"
borderopacity="1"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16.869941"
inkscape:cx="-47.120799"
inkscape:cy="0.42781352"
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="1022"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:snap-global="true">
<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" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect2965"
width="2"
height="11"
x="11"
y="-18" />
<rect
y="-15"
x="8"
height="8"
width="2"
id="rect2973"
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect2975"
width="2"
height="6"
x="5"
y="-13" />
<rect
y="-11"
x="2"
height="4"
width="2"
id="rect2977"
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 6 1 C 5.446 1 5 1.446 5 2 L 5 4 L 7 4 L 7 3 L 9 3 L 9 6 L 8 6 L 7 6 L 5 6 L 4 6 C 3.446 6 3 6.446 3 7 L 3 13 C 3 13.554 3.446 14 4 14 L 12 14 C 12.554 14 13 13.554 13 13 L 13 7 C 13 6.446 12.554 6 12 6 L 11 6 L 11 2 C 11 1.446 10.554 1 10 1 L 6 1 z "
id="rect2957" />
<rect
style="opacity:0;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:8.6;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3783"
width="2.0653608"
height="3.0110312"
x="6.9346395"
y="2.9889688" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -0,0 +1,123 @@
<?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: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.91 r13725"
version="1.0"
sodipodi:docname="changes-prevent-symbolic.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#e7e7e7"
borderopacity="1"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16.869941"
inkscape:cx="-36.806596"
inkscape:cy="0.42781352"
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="1022"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:snap-global="true">
<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" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect2965"
width="2"
height="11"
x="11"
y="-18" />
<rect
y="-15"
x="8"
height="8"
width="2"
id="rect2973"
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect2975"
width="2"
height="6"
x="5"
y="-13" />
<rect
y="-11"
x="2"
height="4"
width="2"
id="rect2977"
style="opacity:0.3;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 5.9999997,1 c -0.554,0 -1,0.446 -1,1 l 0,4 -1,0 c -0.554,0 -1,0.446 -1,1 l 0,6 c 0,0.554 0.446,1 1,1 L 12,14 c 0.554,0 1,-0.446 1,-1 L 13,7 C 13,6.446 12.554,6 12,6 L 11,6 11,2 C 11,1.446 10.554,1 9.9999997,1 l -4,0 z m 1,2 2,0 0,3 -2,0 0,-3 z"
id="rect2957" />
<rect
style="opacity:0;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:8.6;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3783"
width="2.0653608"
height="3.0110312"
x="6.9346395"
y="2.9889688" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16.014"
height="16"
version="1.1"
id="svg100"
sodipodi:docname="com.ublinux.ubl-settings-multiseat.move-away.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="defs104" />
<style
id="current-color-scheme"
type="text/css">.ColorScheme-Text {
color:@theme_text_color;
} </style>
<sodipodi:namedview
id="namedview102"
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="4.5447043"
inkscape:cy="8"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg100" />
<g
color="#000000"
fill="#2e3436"
id="g98"
transform="matrix(0.9591284,0,0,0.9591284,-1.8329748,0.34898108)">
<path
d="M 4,1 C 4,1 3.541,0.986 3.053,1.23 2.564,1.475 2,2.167 2,3 v 10 c 0,0.833 0.564,1.525 1.053,1.77 C 3.541,15.014 4,15 4,15 h 8 c 0.833,0 1.525,-0.564 1.77,-1.053 C 14.014,13.459 14,13 14,13 v -2 a 1,1 0 1 0 -2,0 v 2 H 4 V 3 h 8 v 2 a 1,1 0 1 0 2,0 V 3 C 14,2.167 13.436,1.475 12.947,1.23 12.46,0.986 12,1 12,1 Z"
style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal"
font-weight="400"
font-family="sans-serif"
overflow="visible"
fill-rule="evenodd"
id="path88" />
<path
d="m 15.788186,5.293 2.707,2.707 -2.707,2.707 -1.414,-1.414 1.293,-1.293 -1.293,-1.293 z"
style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none"
font-weight="400"
font-family="sans-serif"
overflow="visible"
id="path90"
sodipodi:nodetypes="ccccccc" />
<path
d="m 15.081186,10 h -1 v 1 h 1 z m 0,-5 h -1 v 1 h 1 z"
style="marker:none"
overflow="visible"
id="path92"
sodipodi:nodetypes="cccccccccc" />
<path
d="m 15.081186,5 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 z m 0,4 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 z"
style="marker:none"
overflow="visible"
id="path94"
sodipodi:nodetypes="ssssssssss" />
<path
d="m 8,7 a 1,1 0 1 0 0,2 h 7 a 1,1 0 1 0 0,-2 z"
style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal"
font-weight="400"
font-family="sans-serif"
overflow="visible"
fill-rule="evenodd"
id="path96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16.014"
height="16"
version="1.1"
id="svg100"
sodipodi:docname="com.ublinux.libublsettingsui-gtk3.move-in-symbolic.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, 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="defs104" />
<style
id="current-color-scheme"
type="text/css">.ColorScheme-Text {
color:@theme_text_color;
} </style>
<sodipodi:namedview
id="namedview102"
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="4.5447043"
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="svg100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<path
d="m 13.776427,14.735907 c 0,0 0.440239,0.01343 0.908294,-0.220599 0.469014,-0.234987 1.009962,-0.898704 1.009962,-1.697658 V 3.2263665 c 0,-0.798954 -0.540948,-1.462671 -1.009962,-1.697658 -0.468055,-0.234027 -0.908294,-0.220599 -0.908294,-0.220599 H 6.1033993 c -0.798954,0 -1.462671,0.540948 -1.697657,1.009962 -0.234028,0.468055 -0.2206,0.908295 -0.2206,0.908295 v 1.918257 a 0.9591285,0.9591285 0 1 0 1.918257,0 V 3.2263665 H 13.776427 V 12.81765 H 6.1033993 v -1.918257 a 0.9591285,0.9591285 0 1 0 -1.918257,0 v 1.918257 c 0,0.798954 0.540949,1.462671 1.009962,1.697658 0.467096,0.234027 0.908295,0.220599 0.908295,0.220599 z"
style="color:#000000;line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;fill:#2e3436;stroke-width:0.959128"
font-weight="400"
font-family="sans-serif"
overflow="visible"
fill-rule="evenodd"
id="path88" />
<g
id="g1"
transform="translate(-4.499924)">
<path
d="m 13.309923,5.4256477 2.59636,2.5963606 -2.59636,2.5963607 -1.356208,-1.3562077 1.240153,-1.240153 -1.240153,-1.240153 z"
style="color:#000000;line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;fill:#2e3436;stroke-width:0.959128;marker:none"
font-weight="400"
font-family="sans-serif"
overflow="visible"
id="path90"
sodipodi:nodetypes="ccccccc" />
<path
d="m 12.631819,9.9402651 h -0.959128 v 0.9591279 h 0.959128 z m 0,-4.795642 h -0.959128 v 0.9591284 h 0.959128 z"
style="color:#000000;fill:#2e3436;stroke-width:0.959128;marker:none"
overflow="visible"
id="path92"
sodipodi:nodetypes="cccccccccc" />
<path
d="m 12.631819,5.1446231 c -0.531357,0 -0.959128,0.4277712 -0.959128,0.9591284 0,0.5313571 0.427771,0.9591284 0.959128,0.9591284 0.531357,0 0.959128,-0.4277713 0.959128,-0.9591284 0,-0.5313572 -0.427771,-0.9591284 -0.959128,-0.9591284 z m 0,3.8365136 c -0.531357,0 -0.959128,0.4277712 -0.959128,0.9591284 0,0.5313569 0.427771,0.9591279 0.959128,0.9591279 0.531357,0 0.959128,-0.427771 0.959128,-0.9591279 0,-0.5313572 -0.427771,-0.9591284 -0.959128,-0.9591284 z"
style="color:#000000;fill:#2e3436;stroke-width:0.959128;marker:none"
overflow="visible"
id="path94"
sodipodi:nodetypes="ssssssssss" />
<path
d="m 5.8400524,7.0628799 a 0.9591284,0.9591284 0 1 0 0,1.9182568 h 6.7138986 a 0.9591284,0.9591284 0 1 0 0,-1.9182568 z"
style="color:#000000;line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;fill:#2e3436;stroke-width:0.959128"
font-weight="400"
font-family="sans-serif"
overflow="visible"
fill-rule="evenodd"
id="path96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 210 KiB

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 576 512"
version="1.1"
id="svg1"
sodipodi:docname="com.ublinux.ubl-settings-audit.active-symbolic.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, 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="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.80566406"
inkscape:cx="229.00364"
inkscape:cy="346.91879"
inkscape:window-width="1620"
inkscape:window-height="1047"
inkscape:window-x="2111"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
<path
id="path1"
style="fill:#4d4d4d;stroke-width:1.11292"
class="success"
d="m 285.83203,115.43164 c -20.97985,0.35248 -41.93032,5.214 -60.72818,14.59185 -22.98709,11.36021 -42.82569,29.07196 -56.51703,50.76807 -12.28111,19.31972 -19.75265,41.66899 -21.51509,64.49638 -2.04974,25.84772 3.23711,52.22358 15.0887,75.28541 10.31179,20.19834 25.62178,37.80256 44.16423,50.85494 17.28412,12.23765 37.39729,20.39965 58.2855,23.83616 21.90088,3.63332 44.65829,1.99 65.79402,-4.81381 19.92474,-6.36683 38.42919,-17.19327 53.62669,-31.57962 17.2128,-16.1913 30.28417,-36.76675 37.49332,-59.27981 7.34132,-22.66762 8.83746,-47.2132 4.16152,-70.58505 -4.35546,-22.05096 -14.03182,-43.04678 -28.08992,-60.59595 -16.78453,-21.08384 -39.76627,-37.16122 -65.33558,-45.67887 -14.92376,-5.00856 -30.69165,-7.44432 -46.42818,-7.2997 z" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 576 512"
version="1.1"
id="svg1"
sodipodi:docname="com.ublinux.ubl-settings-audit.inactive-symbolic.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, 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="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.80566406"
inkscape:cx="229.00364"
inkscape:cy="346.91879"
inkscape:window-width="1620"
inkscape:window-height="1047"
inkscape:window-x="2111"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" />
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
<path
id="path1"
style="fill:#4d4d4d;stroke-width:1.11289"
class="error"
d="m 285.78454,115.4333 c -20.50616,0.34863 -40.98349,4.99432 -59.44428,13.9827 -21.81718,10.5102 -40.87692,26.71625 -54.63122,46.65995 -12.77951,18.43398 -21.07713,39.95388 -23.90864,62.20924 -2.58359,19.80943 -0.83119,40.15536 5.02765,59.25072 7.10354,23.41244 20.49307,44.86688 38.36733,61.56887 15.11489,14.192 33.41083,24.97597 53.16938,31.26751 17.8805,5.75756 36.91348,7.89167 55.6246,6.22224 28.9618,-2.53102 57.05348,-14.30934 79.09446,-33.27919 17.35307,-14.86841 31.05534,-33.98856 39.40911,-55.26823 6.98779,-17.76501 10.40686,-36.94435 9.79867,-56.03331 -0.84718,-28.93013 -10.87202,-57.53143 -28.36881,-80.59726 -16.1544,-21.4654 -38.60123,-38.12318 -63.83798,-47.33977 -16.05862,-5.91434 -33.19271,-8.81647 -50.30027,-8.64347 z" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -12,7 +12,7 @@
<property name="urgency-hint">True</property> <property name="urgency-hint">True</property>
<property name="program-name">libublsettingsui-gtk3</property> <property name="program-name">libublsettingsui-gtk3</property>
<property name="version">1.1</property> <property name="version">1.1</property>
<property name="copyright" translatable="yes">Copyright © 2022 - 2023, UBSoft LLC</property> <property name="copyright" translatable="yes">Copyright © 2022 - 2025, UBSoft LLC</property>
<property name="comments" translatable="yes">TEMPLATE Manager</property> <property name="comments" translatable="yes">TEMPLATE Manager</property>
<property name="website">https://ublinux.ru/</property> <property name="website">https://ublinux.ru/</property>
<property name="website-label" translatable="yes">Project Home Page</property> <property name="website-label" translatable="yes">Project Home Page</property>

@ -0,0 +1,221 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="libublsettingsui-gtk3">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path libublsettingsui-gtk3.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkListStore" id="liststore1"/>
<object class="GtkTreeStore" id="treestore1">
<columns>
<!-- column-name Selected -->
<column type="gboolean"/>
<!-- column-name RenderText -->
<column type="gchararray"/>
<!-- column-name Description -->
<column type="gchararray"/>
<!-- column-name SectionTags -->
<column type="gchararray"/>
<!-- column-name IsSection -->
<column type="gboolean"/>
<!-- column-name Icon -->
<column type="gchararray"/>
<!-- column-name Exec -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="MainWindow">
<property name="width-request">225</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-video</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="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<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-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="RenderModeCheck">
<property name="label" translatable="yes">checkbutton</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="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<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>
<property name="model">treestore1</property>
<property name="headers-visible">False</property>
<property name="search-column">1</property>
<property name="tooltip-column">2</property>
<property name="activate-on-single-click">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<child>
<object class="GtkCellRendererToggle" id="SelectionCell"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererPixbuf">
<property name="stock_size">4</property>
</object>
<attributes>
<attribute name="icon-name">5</attribute>
</attributes>
</child>
<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">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkIconView">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin">6</property>
<property name="model">liststore1</property>
</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>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar">
<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="HeadLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Choose application</property>
</object>
</child>
<child>
<object class="GtkImage" id="WindowIcon">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3</property>
</object>
</child>
<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">image2</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</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="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

@ -63,6 +63,7 @@
<object class="GtkBox" id="StatusBox"> <object class="GtkBox" id="StatusBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<placeholder/> <placeholder/>

@ -0,0 +1,416 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="libublsettingsui-gtk3">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path libublsettingsui-gtk3.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.play-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.stop-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.libublsettingsui-gtk3.reset-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.libublsettingsui-gtk3.important-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.libublsettingsui-gtk3.flag-empy-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.libublsettingsui-gtk3.flag-symbolic</property>
</object>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property>
</object>
<object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">225</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-video</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<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-bottom">5</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">25</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">20</property>
<property name="margin-right">20</property>
<property name="margin-start">20</property>
<property name="margin-end">20</property>
<property name="margin-top">20</property>
<property name="margin-bottom">20</property>
<property name="pixel-size">75</property>
<property name="icon-name">dialog-information-symbolic</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="valign">center</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" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">".service" service:</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="GtkButton" id="UpdateButton">
<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="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="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="ActiveImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-audit.inactive-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Active:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ActiveLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Inactive</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="StatusButton">
<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="pack-type">end</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="GtkImage" id="EnableImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-audit.active-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Enabled:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="EnableLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Disabled</property>
</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">2</property>
</packing>
</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">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="GtkButton" id="DisableButton">
<property name="label" translatable="yes">Disable</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="EnableButton">
<property name="label" translatable="yes">Enable</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image6</property>
</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>
<child>
<object class="GtkSeparator">
<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="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RestartButton">
<property name="label" translatable="yes">Restart</property>
<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="pack-type">end</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="StopButton">
<property name="label" translatable="yes">Stop</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">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkButton" id="StartButton">
<property name="label" translatable="yes">Start</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">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">6</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">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar">
<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="HeadLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">".service" service configuration</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage" id="WindowIcon">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3</property>
</object>
</child>
</object>
</child>
</object>
</interface>

@ -17,296 +17,362 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/libublsettingsui-gtk3.h:301 #: source/libublsettingsui-gtk3.h:376
msgid "Version:" msgid "Version:"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:302 #: source/libublsettingsui-gtk3.h:377
msgid " version:" msgid " version:"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:303 #: source/libublsettingsui-gtk3.h:378
msgid "Usage:" msgid "Usage:"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:303 #: source/libublsettingsui-gtk3.h:378
msgid "[OPTIONS]" msgid "[OPTIONS]"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:304 #: source/libublsettingsui-gtk3.h:379
msgid "Options:" msgid "Options:"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:305 #: source/libublsettingsui-gtk3.h:380
msgid "Show this help" msgid "Show this help"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:306 #: source/libublsettingsui-gtk3.h:381
msgid "Show package version" msgid "Show package version"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:307 #: source/libublsettingsui-gtk3.h:382
msgid "Lock this help menu" msgid "Lock this help menu"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:308 #: source/libublsettingsui-gtk3.h:383
msgid "Lock configuration saving" msgid "Lock configuration saving"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:309 #: source/libublsettingsui-gtk3.h:384
msgid "Lock local configration saving" msgid "Lock local configration saving"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:310 #: source/libublsettingsui-gtk3.h:385
msgid "Lock global configration saving" msgid "Lock global configration saving"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:311 #: source/libublsettingsui-gtk3.h:386
msgid "Lock global configration loading" msgid "Lock global configration loading"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:312 #: source/libublsettingsui-gtk3.h:387
msgid "Reset application settings" msgid "Reset application settings"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:318 source/libublsettingsui-gtk3.h:326 #: source/libublsettingsui-gtk3.h:393 source/libublsettingsui-gtk3.h:401
msgid "About" msgid "About"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:320 #: source/libublsettingsui-gtk3.h:395
msgid "Operation succeeded" msgid "Operation succeeded"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:321 #: source/libublsettingsui-gtk3.h:396
msgid "Operation failed" msgid "Operation failed"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:322 #: source/libublsettingsui-gtk3.h:397
msgid "" msgid ""
"Warning! Application was launched without root - root-dependent actions are " "Warning! Application was launched without root - root-dependent actions are "
"locked" "locked"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:324 source/libublsettingsui-gtk3.h:325 #: source/libublsettingsui-gtk3.h:399 source/libublsettingsui-gtk3.h:400
msgid "Default" msgid "Default"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:327 #: source/libublsettingsui-gtk3.h:402
msgid "Documentation" msgid "Documentation"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:329 #: source/libublsettingsui-gtk3.h:404
msgid "Save to specific file" msgid "Save to specific file"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:330 #: source/libublsettingsui-gtk3.h:405
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:331 #: source/libublsettingsui-gtk3.h:406
msgid "Save to global configuration" msgid "Save to global configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:332 #: source/libublsettingsui-gtk3.h:407
msgid "Save configuration" msgid "Save configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:333 #: source/libublsettingsui-gtk3.h:408
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:334 #: source/libublsettingsui-gtk3.h:409
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:336 #: source/libublsettingsui-gtk3.h:411
msgid "Load from specific file" msgid "Load from specific file"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:337 #: source/libublsettingsui-gtk3.h:412
msgid "Load local configuration" msgid "Load local configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:338 #: source/libublsettingsui-gtk3.h:413
msgid "Load global configuration" msgid "Load global configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:339 #: source/libublsettingsui-gtk3.h:414
msgid "Load" msgid "Load"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:340 #: source/libublsettingsui-gtk3.h:415
msgid "Load file" msgid "Load file"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:342 #: source/libublsettingsui-gtk3.h:417
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:343 #: source/libublsettingsui-gtk3.h:418
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:344 #: source/libublsettingsui-gtk3.h:419
msgid "Open" msgid "Open"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:345 #: source/libublsettingsui-gtk3.h:420
msgid "Create directory" msgid "Create directory"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:346 #: source/libublsettingsui-gtk3.h:421
msgid "Select directory" msgid "Select directory"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:348 #: source/libublsettingsui-gtk3.h:423
msgid "Would you like to read documentation in the Web?" msgid "Would you like to read documentation in the Web?"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:349 #: source/libublsettingsui-gtk3.h:424
msgid "" msgid ""
"You will be redirected to documentation website where documentation is\n" "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:350 #: source/libublsettingsui-gtk3.h:425
msgid "Always redirect to online documentation" msgid "Always redirect to online documentation"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:351 #: source/libublsettingsui-gtk3.h:426
msgid "Open documentation" msgid "Open documentation"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:352 #: source/libublsettingsui-gtk3.h:427
msgid "Project Home Page" msgid "Project Home Page"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:353 #: source/libublsettingsui-gtk3.h:428
msgid "Nothing were chosen" msgid "Nothing were chosen"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:354 #: source/libublsettingsui-gtk3.h:429
msgid "Copyright © 2022 - 2023, UBSoft LLC" msgid "Copyright © 2022 - 2025, UBSoft LLC"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:357 #: source/libublsettingsui-gtk3.h:432
msgid "Global configuration loading succeeded." msgid "Global configuration loading succeeded."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:358 #: source/libublsettingsui-gtk3.h:433
msgid "Local configuration loading succeeded." msgid "Local configuration loading succeeded."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:359 #: source/libublsettingsui-gtk3.h:434
msgid "Config loading failed" msgid "Config loading failed"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:361 #: source/libublsettingsui-gtk3.h:436
msgid "Local and global configuration saving succeeded." msgid "Local and global configuration saving succeeded."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:362 #: source/libublsettingsui-gtk3.h:437
msgid "Global configuration saving succeeded." msgid "Global configuration saving succeeded."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:363 #: source/libublsettingsui-gtk3.h:438
msgid "Local configuration saving succeeded." msgid "Local configuration saving succeeded."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:364 #: source/libublsettingsui-gtk3.h:439
msgid "Configuration saving succeeded." msgid "Configuration saving succeeded."
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:366 #: source/libublsettingsui-gtk3.h:441
msgid "Parameter" msgid "Parameter"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:367 #: source/libublsettingsui-gtk3.h:442
msgid "Old value" msgid "Old value"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:368 #: source/libublsettingsui-gtk3.h:443
msgid "New value" msgid "New value"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:369 #: source/libublsettingsui-gtk3.h:444
msgid "" msgid ""
"Value\n" "Value\n"
"(Old/New)" "(Old/New)"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:371 #: source/libublsettingsui-gtk3.h:446
msgid "Nothing to save" msgid "Nothing to save"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:372 #: source/libublsettingsui-gtk3.h:447
msgid "Saving into local configuration" msgid "Saving into local configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:373 #: source/libublsettingsui-gtk3.h:448
msgid "Saving into global configuration" msgid "Saving into global configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:374 #: source/libublsettingsui-gtk3.h:449
msgid "Saving into global and local configuration" msgid "Saving into global and local configuration"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:375 #: source/libublsettingsui-gtk3.h:450
msgid "Saving into custom configuration at" msgid "Saving into custom configuration at"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:380 #: source/libublsettingsui-gtk3.h:455
msgid "Full saving mode" msgid "Full saving mode"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:381 #: source/libublsettingsui-gtk3.h:456
msgid "Saving into module" msgid "Saving into module"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:382 #: source/libublsettingsui-gtk3.h:457
msgid "Sandbox mode" msgid "Sandbox mode"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:383 #: source/libublsettingsui-gtk3.h:458
msgid "Sandbox with profile saving" msgid "Sandbox with profile saving"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:384 #: source/libublsettingsui-gtk3.h:459
msgid "HDD sandbox" msgid "HDD sandbox"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:385 #: source/libublsettingsui-gtk3.h:460
msgid "HDD sandbox with profile saving" msgid "HDD sandbox with profile saving"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:386 #: source/libublsettingsui-gtk3.h:461
msgid "New configuration file creation failed" msgid "New configuration file creation failed"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:387 #: source/libublsettingsui-gtk3.h:462
msgid "Upgrade to root" msgid "Upgrade to root"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:388 #: source/libublsettingsui-gtk3.h:463
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:390 #: source/libublsettingsui-gtk3.h:465
msgid "Application settigs" msgid "Application settigs"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:392 #: source/libublsettingsui-gtk3.h:467
msgid "Invalid email adress" msgid "Invalid email adress"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:393 #: source/libublsettingsui-gtk3.h:468
msgid "Invalid path" msgid "Invalid path"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:395 #: source/libublsettingsui-gtk3.h:470
msgid "Choose path" msgid "Choose path"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:398 #: source/libublsettingsui-gtk3.h:471
msgid "Choose application"
msgstr ""
#: source/libublsettingsui-gtk3.h:474
msgid "Choose directory instead of file" msgid "Choose directory instead of file"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:476
msgid "Enabled"
msgstr ""
#: source/libublsettingsui-gtk3.h:477
msgid "Disabled"
msgstr ""
#: source/libublsettingsui-gtk3.h:478
msgid "Active"
msgstr ""
#: source/libublsettingsui-gtk3.h:479
msgid "Inactive"
msgstr ""
#: source/libublsettingsui-gtk3.h:481
msgid "Active:"
msgstr ""
#: source/libublsettingsui-gtk3.h:482
msgid "Enabled:"
msgstr ""
#: source/libublsettingsui-gtk3.h:483
msgid "Start"
msgstr ""
#: source/libublsettingsui-gtk3.h:484
msgid "Stop"
msgstr ""
#: source/libublsettingsui-gtk3.h:485
msgid "Restart"
msgstr ""
#: source/libublsettingsui-gtk3.h:486
msgid "Enable"
msgstr ""
#: source/libublsettingsui-gtk3.h:487
msgid "Disable"
msgstr ""
#: source/libublsettingsui-gtk3.h:489
#, c-format
msgid "\"%s\" service configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:490
#, c-format
msgid "\"%s\" service:"
msgstr ""
#: source/libublsettingsui-gtk3.h:491
msgid "service is active"
msgstr ""
#: source/libublsettingsui-gtk3.h:492
msgid "service is inactive"
msgstr ""

@ -17,71 +17,71 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: source/libublsettingsui-gtk3.h:301 #: source/libublsettingsui-gtk3.h:376
msgid "Version:" msgid "Version:"
msgstr "Версия:" msgstr "Версия:"
#: source/libublsettingsui-gtk3.h:302 #: source/libublsettingsui-gtk3.h:377
msgid " version:" msgid " version:"
msgstr " версия:" msgstr " версия:"
#: source/libublsettingsui-gtk3.h:303 #: source/libublsettingsui-gtk3.h:378
msgid "Usage:" msgid "Usage:"
msgstr "Использование:" msgstr "Использование:"
#: source/libublsettingsui-gtk3.h:303 #: source/libublsettingsui-gtk3.h:378
msgid "[OPTIONS]" msgid "[OPTIONS]"
msgstr "[АРГУМЕНТЫ]" msgstr "[АРГУМЕНТЫ]"
#: source/libublsettingsui-gtk3.h:304 #: source/libublsettingsui-gtk3.h:379
msgid "Options:" msgid "Options:"
msgstr "Аргументы:" msgstr "Аргументы:"
#: source/libublsettingsui-gtk3.h:305 #: source/libublsettingsui-gtk3.h:380
msgid "Show this help" msgid "Show this help"
msgstr "Показать эту подсказку" msgstr "Показать эту подсказку"
#: source/libublsettingsui-gtk3.h:306 #: source/libublsettingsui-gtk3.h:381
msgid "Show package version" msgid "Show package version"
msgstr "Показать версию пакета" msgstr "Показать версию пакета"
#: source/libublsettingsui-gtk3.h:307 #: source/libublsettingsui-gtk3.h:382
msgid "Lock this help menu" msgid "Lock this help menu"
msgstr "Заблокировать это меню помощи" msgstr "Заблокировать это меню помощи"
#: source/libublsettingsui-gtk3.h:308 #: source/libublsettingsui-gtk3.h:383
msgid "Lock configuration saving" msgid "Lock configuration saving"
msgstr "Успешно записана локальная конфигурация" msgstr "Успешно записана локальная конфигурация"
#: source/libublsettingsui-gtk3.h:309 #: source/libublsettingsui-gtk3.h:384
msgid "Lock local configration saving" msgid "Lock local configration saving"
msgstr "Заблокировать сохранение локальной конфигурации" msgstr "Заблокировать сохранение локальной конфигурации"
#: source/libublsettingsui-gtk3.h:310 #: source/libublsettingsui-gtk3.h:385
msgid "Lock global configration saving" msgid "Lock global configration saving"
msgstr "Заблокировать сохранение глобальной конфигурации" msgstr "Заблокировать сохранение глобальной конфигурации"
#: source/libublsettingsui-gtk3.h:311 #: source/libublsettingsui-gtk3.h:386
msgid "Lock global configration loading" msgid "Lock global configration loading"
msgstr "Заблокировать загрузку глобальную конфигурацию" msgstr "Заблокировать загрузку глобальную конфигурацию"
#: source/libublsettingsui-gtk3.h:312 #: source/libublsettingsui-gtk3.h:387
msgid "Reset application settings" msgid "Reset application settings"
msgstr "Сбросить настройки программы" msgstr "Сбросить настройки программы"
#: source/libublsettingsui-gtk3.h:318 source/libublsettingsui-gtk3.h:326 #: source/libublsettingsui-gtk3.h:393 source/libublsettingsui-gtk3.h:401
msgid "About" msgid "About"
msgstr "О программе" msgstr "О программе"
#: source/libublsettingsui-gtk3.h:320 #: source/libublsettingsui-gtk3.h:395
msgid "Operation succeeded" msgid "Operation succeeded"
msgstr "Операция завершена" msgstr "Операция завершена"
#: source/libublsettingsui-gtk3.h:321 #: source/libublsettingsui-gtk3.h:396
msgid "Operation failed" msgid "Operation failed"
msgstr "Операция завершена с ошибкой" msgstr "Операция завершена с ошибкой"
#: source/libublsettingsui-gtk3.h:322 #: source/libublsettingsui-gtk3.h:397
msgid "" msgid ""
"Warning! Application was launched without root - root-dependent actions are " "Warning! Application was launched without root - root-dependent actions are "
"locked" "locked"
@ -89,83 +89,83 @@ msgstr ""
"Внимание! Приложение было запущено без прав суперпользователя - действия, " "Внимание! Приложение было запущено без прав суперпользователя - действия, "
"требующие их наличия заблокированы" "требующие их наличия заблокированы"
#: source/libublsettingsui-gtk3.h:324 source/libublsettingsui-gtk3.h:325 #: source/libublsettingsui-gtk3.h:399 source/libublsettingsui-gtk3.h:400
msgid "Default" msgid "Default"
msgstr "По умолчанию" msgstr "По умолчанию"
#: source/libublsettingsui-gtk3.h:327 #: source/libublsettingsui-gtk3.h:402
msgid "Documentation" msgid "Documentation"
msgstr "Справка" msgstr "Справка"
#: source/libublsettingsui-gtk3.h:329 #: source/libublsettingsui-gtk3.h:404
msgid "Save to specific file" msgid "Save to specific file"
msgstr "Сохранить в файл" msgstr "Сохранить в файл"
#: source/libublsettingsui-gtk3.h:330 #: source/libublsettingsui-gtk3.h:405
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "Сохранить в локальную конфигурацию" msgstr "Сохранить в локальную конфигурацию"
#: source/libublsettingsui-gtk3.h:331 #: source/libublsettingsui-gtk3.h:406
msgid "Save to global configuration" msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию" msgstr "Сохранить в глобальную конфигурацию"
#: source/libublsettingsui-gtk3.h:332 #: source/libublsettingsui-gtk3.h:407
msgid "Save configuration" msgid "Save configuration"
msgstr "Сохранить конфигурацию" msgstr "Сохранить конфигурацию"
#: source/libublsettingsui-gtk3.h:333 #: source/libublsettingsui-gtk3.h:408
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: source/libublsettingsui-gtk3.h:334 #: source/libublsettingsui-gtk3.h:409
msgid "Saving..." msgid "Saving..."
msgstr "Сохранение..." msgstr "Сохранение..."
#: source/libublsettingsui-gtk3.h:336 #: source/libublsettingsui-gtk3.h:411
msgid "Load from specific file" msgid "Load from specific file"
msgstr "Загрузить из файла" msgstr "Загрузить из файла"
#: source/libublsettingsui-gtk3.h:337 #: source/libublsettingsui-gtk3.h:412
msgid "Load local configuration" msgid "Load local configuration"
msgstr "Загрузить локальную конфигурацию" msgstr "Загрузить локальную конфигурацию"
#: source/libublsettingsui-gtk3.h:338 #: source/libublsettingsui-gtk3.h:413
msgid "Load global configuration" msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию" msgstr "Загрузить глобальную конфигурацию"
#: source/libublsettingsui-gtk3.h:339 #: source/libublsettingsui-gtk3.h:414
msgid "Load" msgid "Load"
msgstr "Загрузить" msgstr "Загрузить"
#: source/libublsettingsui-gtk3.h:340 #: source/libublsettingsui-gtk3.h:415
msgid "Load file" msgid "Load file"
msgstr "Загрузить файл" msgstr "Загрузить файл"
#: source/libublsettingsui-gtk3.h:342 #: source/libublsettingsui-gtk3.h:417
msgid "Cancel" msgid "Cancel"
msgstr "Отмена" msgstr "Отмена"
#: source/libublsettingsui-gtk3.h:343 #: source/libublsettingsui-gtk3.h:418
msgid "Accept" msgid "Accept"
msgstr "Принять" msgstr "Принять"
#: source/libublsettingsui-gtk3.h:344 #: source/libublsettingsui-gtk3.h:419
msgid "Open" msgid "Open"
msgstr "Открыть" msgstr "Открыть"
#: source/libublsettingsui-gtk3.h:345 #: source/libublsettingsui-gtk3.h:420
msgid "Create directory" msgid "Create directory"
msgstr "Создать файл" msgstr "Создать файл"
#: source/libublsettingsui-gtk3.h:346 #: source/libublsettingsui-gtk3.h:421
msgid "Select directory" msgid "Select directory"
msgstr "Выбрать папку" msgstr "Выбрать папку"
#: source/libublsettingsui-gtk3.h:348 #: source/libublsettingsui-gtk3.h:423
msgid "Would you like to read documentation in the Web?" msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?" msgstr "Вы хотите прочитать справку в Сети?"
#: source/libublsettingsui-gtk3.h:349 #: source/libublsettingsui-gtk3.h:424
msgid "" msgid ""
"You will be redirected to documentation website where documentation is\n" "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
@ -173,67 +173,68 @@ msgstr ""
"Вы будете перенаправлены на сайт с документацией, где страницы помощи\n" "Вы будете перенаправлены на сайт с документацией, где страницы помощи\n"
"переводятся и поддерживаются сообществом." "переводятся и поддерживаются сообществом."
#: source/libublsettingsui-gtk3.h:350 #: source/libublsettingsui-gtk3.h:425
msgid "Always redirect to online documentation" msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять" msgstr "Всегда перенаправлять"
#: source/libublsettingsui-gtk3.h:351 #: source/libublsettingsui-gtk3.h:426
msgid "Open documentation" msgid "Open documentation"
msgstr "Прочитать справку" msgstr "Прочитать справку"
#: source/libublsettingsui-gtk3.h:352 #: source/libublsettingsui-gtk3.h:427
msgid "Project Home Page" msgid "Project Home Page"
msgstr "Домашняя страница проекта" msgstr "Домашняя страница проекта"
#: source/libublsettingsui-gtk3.h:353 #: source/libublsettingsui-gtk3.h:428
msgid "Nothing were chosen" msgid "Nothing were chosen"
msgstr "Ничего не было выбрано" msgstr "Ничего не было выбрано"
#: source/libublsettingsui-gtk3.h:354 #: source/libublsettingsui-gtk3.h:429
msgid "Copyright © 2022 - 2023, UBSoft LLC" #, fuzzy
msgstr "Copyright © 2022 - 2023, ООО «Юбисофт»" msgid "Copyright © 2022 - 2025, UBSoft LLC"
msgstr "Copyright © 2022 - 2025, ООО «Юбисофт»"
#: source/libublsettingsui-gtk3.h:357 #: source/libublsettingsui-gtk3.h:432
msgid "Global configuration loading succeeded." msgid "Global configuration loading succeeded."
msgstr "Успешно загружена глобальная конфигурация" msgstr "Успешно загружена глобальная конфигурация"
#: source/libublsettingsui-gtk3.h:358 #: source/libublsettingsui-gtk3.h:433
msgid "Local configuration loading succeeded." msgid "Local configuration loading succeeded."
msgstr "Успешно загружена локальная конфигурация" msgstr "Успешно загружена локальная конфигурация"
#: source/libublsettingsui-gtk3.h:359 #: source/libublsettingsui-gtk3.h:434
msgid "Config loading failed" msgid "Config loading failed"
msgstr "Ошибка загрузки конфига" msgstr "Ошибка загрузки конфига"
#: source/libublsettingsui-gtk3.h:361 #: source/libublsettingsui-gtk3.h:436
msgid "Local and global configuration saving succeeded." msgid "Local and global configuration saving succeeded."
msgstr "Успешно записаны локальная и глобальная конфигурация" msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/libublsettingsui-gtk3.h:362 #: source/libublsettingsui-gtk3.h:437
msgid "Global configuration saving succeeded." msgid "Global configuration saving succeeded."
msgstr "Успешно записана глобальная конфигурация" msgstr "Успешно записана глобальная конфигурация"
#: source/libublsettingsui-gtk3.h:363 #: source/libublsettingsui-gtk3.h:438
msgid "Local configuration saving succeeded." msgid "Local configuration saving succeeded."
msgstr "Успешно записана локальная конфигурация" msgstr "Успешно записана локальная конфигурация"
#: source/libublsettingsui-gtk3.h:364 #: source/libublsettingsui-gtk3.h:439
msgid "Configuration saving succeeded." msgid "Configuration saving succeeded."
msgstr "Успешно записана конфигурация" msgstr "Успешно записана конфигурация"
#: source/libublsettingsui-gtk3.h:366 #: source/libublsettingsui-gtk3.h:441
msgid "Parameter" msgid "Parameter"
msgstr "Параметр" msgstr "Параметр"
#: source/libublsettingsui-gtk3.h:367 #: source/libublsettingsui-gtk3.h:442
msgid "Old value" msgid "Old value"
msgstr "Старое значение" msgstr "Старое значение"
#: source/libublsettingsui-gtk3.h:368 #: source/libublsettingsui-gtk3.h:443
msgid "New value" msgid "New value"
msgstr "Новое значение" msgstr "Новое значение"
#: source/libublsettingsui-gtk3.h:369 #: source/libublsettingsui-gtk3.h:444
msgid "" msgid ""
"Value\n" "Value\n"
"(Old/New)" "(Old/New)"
@ -241,78 +242,144 @@ msgstr ""
"Значение\n" "Значение\n"
"(Старое/Новое)" "(Старое/Новое)"
#: source/libublsettingsui-gtk3.h:371 #: source/libublsettingsui-gtk3.h:446
msgid "Nothing to save" msgid "Nothing to save"
msgstr "Нечего сохранять" msgstr "Нечего сохранять"
#: source/libublsettingsui-gtk3.h:372 #: source/libublsettingsui-gtk3.h:447
msgid "Saving into local configuration" msgid "Saving into local configuration"
msgstr "Сохранение в локальный конфигурационный файл" msgstr "Сохранение в локальный конфигурационный файл"
#: source/libublsettingsui-gtk3.h:373 #: source/libublsettingsui-gtk3.h:448
msgid "Saving into global configuration" msgid "Saving into global configuration"
msgstr "Сохранение в глобальный конфигурационный файл" msgstr "Сохранение в глобальный конфигурационный файл"
#: source/libublsettingsui-gtk3.h:374 #: source/libublsettingsui-gtk3.h:449
msgid "Saving into global and local configuration" msgid "Saving into global and local configuration"
msgstr "Сохранение в глобальный и локальный конфигурационный файл" msgstr "Сохранение в глобальный и локальный конфигурационный файл"
#: source/libublsettingsui-gtk3.h:375 #: source/libublsettingsui-gtk3.h:450
msgid "Saving into custom configuration at" msgid "Saving into custom configuration at"
msgstr "Сохранение в конфигурационный файл по пути" msgstr "Сохранение в конфигурационный файл по пути"
#: source/libublsettingsui-gtk3.h:380 #: source/libublsettingsui-gtk3.h:455
msgid "Full saving mode" msgid "Full saving mode"
msgstr "Полное сохранение" msgstr "Полное сохранение"
#: source/libublsettingsui-gtk3.h:381 #: source/libublsettingsui-gtk3.h:456
msgid "Saving into module" msgid "Saving into module"
msgstr "Сохранение в модуль" msgstr "Сохранение в модуль"
#: source/libublsettingsui-gtk3.h:382 #: source/libublsettingsui-gtk3.h:457
msgid "Sandbox mode" msgid "Sandbox mode"
msgstr "Полная песочница в ОЗУ" msgstr "Полная песочница в ОЗУ"
#: source/libublsettingsui-gtk3.h:383 #: source/libublsettingsui-gtk3.h:458
msgid "Sandbox with profile saving" msgid "Sandbox with profile saving"
msgstr "Песочница с сохранением профиля пользователя" msgstr "Песочница с сохранением профиля пользователя"
#: source/libublsettingsui-gtk3.h:384 #: source/libublsettingsui-gtk3.h:459
msgid "HDD sandbox" msgid "HDD sandbox"
msgstr "Полная песочница на HDD" msgstr "Полная песочница на HDD"
#: source/libublsettingsui-gtk3.h:385 #: source/libublsettingsui-gtk3.h:460
msgid "HDD sandbox with profile saving" msgid "HDD sandbox with profile saving"
msgstr "Полная песочница на HDD с сохранением профиля пользователя" msgstr "Полная песочница на HDD с сохранением профиля пользователя"
#: source/libublsettingsui-gtk3.h:386 #: source/libublsettingsui-gtk3.h:461
msgid "New configuration file creation failed" msgid "New configuration file creation failed"
msgstr "Ошибка создания нового файла конфигурации" msgstr "Ошибка создания нового файла конфигурации"
#: source/libublsettingsui-gtk3.h:387 #: source/libublsettingsui-gtk3.h:462
msgid "Upgrade to root" msgid "Upgrade to root"
msgstr "Повысить права до root" msgstr "Повысить права до root"
#: source/libublsettingsui-gtk3.h:388 #: source/libublsettingsui-gtk3.h:463
msgid "Settings" msgid "Settings"
msgstr "" msgstr "Настройки"
#: source/libublsettingsui-gtk3.h:390 #: source/libublsettingsui-gtk3.h:465
msgid "Application settigs" msgid "Application settigs"
msgstr "Настройки" msgstr "Настройки приложеия"
#: source/libublsettingsui-gtk3.h:392 #: source/libublsettingsui-gtk3.h:467
msgid "Invalid email adress" msgid "Invalid email adress"
msgstr "Неверный email-адрес" msgstr "Неверный email-адрес"
#: source/libublsettingsui-gtk3.h:393 #: source/libublsettingsui-gtk3.h:468
msgid "Invalid path" msgid "Invalid path"
msgstr "Неправильный путь" msgstr "Неправильный путь"
#: source/libublsettingsui-gtk3.h:395 #: source/libublsettingsui-gtk3.h:470
msgid "Choose path" msgid "Choose path"
msgstr "Выбор пути" msgstr "Выбор пути"
#: source/libublsettingsui-gtk3.h:398 #: source/libublsettingsui-gtk3.h:471
msgid "Choose application"
msgstr "Выбор приложений"
#: source/libublsettingsui-gtk3.h:474
msgid "Choose directory instead of file" msgid "Choose directory instead of file"
msgstr "Выбрать папку вместо вайла" msgstr "Выбрать папку вместо вайла"
#: source/libublsettingsui-gtk3.h:476
msgid "Enabled"
msgstr "Включен"
#: source/libublsettingsui-gtk3.h:477
msgid "Disabled"
msgstr "Выключен"
#: source/libublsettingsui-gtk3.h:478
msgid "Active"
msgstr "Запущен"
#: source/libublsettingsui-gtk3.h:479
msgid "Inactive"
msgstr "Не запущен"
#: source/libublsettingsui-gtk3.h:481
msgid "Active:"
msgstr "Статус:"
#: source/libublsettingsui-gtk3.h:482
msgid "Enabled:"
msgstr "Автозапуск:"
#: source/libublsettingsui-gtk3.h:483
msgid "Start"
msgstr "Запустить"
#: source/libublsettingsui-gtk3.h:484
msgid "Stop"
msgstr "Остановить"
#: source/libublsettingsui-gtk3.h:485
msgid "Restart"
msgstr "Перезапустить"
#: source/libublsettingsui-gtk3.h:486
msgid "Enable"
msgstr "Включить автозапуск"
#: source/libublsettingsui-gtk3.h:487
msgid "Disable"
msgstr "Отключить"
#: source/libublsettingsui-gtk3.h:489
#, c-format
msgid "\"%s\" service configuration"
msgstr "Управление сервисом \"%s\""
#: source/libublsettingsui-gtk3.h:490
#, c-format
msgid "\"%s\" service:"
msgstr "Cлужба \"%s\":"
#: source/libublsettingsui-gtk3.h:491
msgid "service is active"
msgstr "служба активна"
#: source/libublsettingsui-gtk3.h:492
msgid "service is inactive"
msgstr "служба неактивна"

@ -44,6 +44,8 @@ set(DEPENDFILES
../libublsettingsui-gtk3-filechooser.glade ../libublsettingsui-gtk3-filechooser.glade
../libublsettingsui-gtk3-debugger.glade ../libublsettingsui-gtk3-debugger.glade
../libublsettingsui-gtk3-config-window.glade ../libublsettingsui-gtk3-config-window.glade
../libublsettingsui-gtk3-service-control.glade
../libublsettingsui-gtk3-app-chooser.glade
../gresource.xml ../gresource.xml
../libublsettingsui-gtk3-banner.png ../libublsettingsui-gtk3-banner.png
../libublsettingsui-gtk3.css ../libublsettingsui-gtk3.css
@ -81,6 +83,9 @@ add_library(${PROJECT_NAME} SHARED
libublsettingsui-gtk3-save.c libublsettingsui-gtk3-save.c
libublsettingsui-gtk3-config-window.c libublsettingsui-gtk3-config-window.c
libublsettingsui-gtk3-filechooser.c libublsettingsui-gtk3-filechooser.c
libublsettingsui-gtk3-service.c
libublsettingsui-gtk3-app-chooser.c
libublsettingsui-gtk3-standard-callbacks.c
libublsettingsui-gtk3.h libublsettingsui-gtk3.h
${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})

@ -0,0 +1,196 @@
#include "libublsettingsui-gtk3.h"
struct return_struct {
config_str chosen_apps;
int size;
};
struct application {
char *name;
char *path;
char *description;
char *tags;
char *execute;
char *icon;
config_str other;
int other_size;
};
config_str yon_apps_get_from_file(char *file,int *final_size){
(*final_size)=0;
config_str final = NULL;
int size;
config_str parsed = yon_dir_get_contents(file,&size);
for (int i=0;i<size;i++){
if (strstr(parsed[i],".desktop")){
char *path = yon_char_unite(file,"/",parsed[i],NULL);
yon_char_parsed_add_or_create_if_exists(final,final_size,path);
}
}
yon_char_parsed_free(parsed,size);
return final;
}
int yon_apps_get(yon_app_chooser_window *window){
window->apps = NULL;
window->apps_size=0;
int merged_size;
config_str merged = NULL;
// int temp_size;
// config_str temp = yon_apps_get_from_file("/usr/shared/applications",&temp_size);
// int local_size;
// config_str local = yon_apps_get_from_file("/usr/local/shared/applications",&temp_size);
window->apps = yon_apps_get_from_file("/usr/share/applications",&window->apps_size);
return window->apps_size;
}
void yon_block_visibility_if_unallowed(GtkWidget *self, GParamSpec* pspec,yon_app_chooser_window *window){
if (gtk_widget_get_visible(window->MainWindow)){
if (!window->visible_allowed)
gtk_widget_set_visible(window->MainWindow,0);
else g_signal_handlers_block_by_func(G_OBJECT(window->MainWindow),yon_block_visibility_if_unallowed,window);
}
}
int yon_app_chooser_convert_apps(yon_app_chooser_window *window){
GKeyFile *file = g_key_file_new();
window->apps_convert = NULL;
for (int i=0;i<window->apps_size;i++){
if (g_key_file_load_from_file(file,window->apps[i],G_KEY_FILE_KEEP_TRANSLATIONS,NULL)){
struct application *app = new(struct application);
memset(app,0,sizeof(struct application));
app->name = g_key_file_get_locale_string(file,"Desktop Entry","Name",setlocale(LC_ALL,NULL),NULL);
app->description = g_key_file_get_locale_string(file,"[Desktop Entry","Comment",setlocale(LC_ALL,NULL),NULL);
app->tags = g_key_file_get_string(file,"Desktop Entry","Categories",NULL);
app->execute = g_key_file_get_string(file,"Desktop Entry","Exec",NULL);
app->icon = g_key_file_get_string(file,"Desktop Entry","Icon",NULL);
app->path = yon_char_new(window->apps[i]);
yon_dictionary_add_or_create_if_exists_with_data(window->apps_convert,app->name,app);
}
}
if (window->apps_convert) return 1; else return 0;
}
// int yon_tree_store_setup_apps(yon_app_chooser_window *window){
// GtkTreeIter iter,itar;
// GtkTreeModel *model = GTK_TREE_MODEL(window->treestore);
// for_iter (model,&iter){
// char *tags;
// gtk_tree_model_get(model,&iter,3,&tags,-1);
// int required_size;
// config_str required_tags = yon_char_parse(tags,&required_size,";");
// dictionary *dict;
// for_dictionaries(dict,window->apps_convert){
// int parsed_size;
// struct application *cur_app = (struct application*)dict->data;
// config_str parsed_tags = yon_char_parse(cur_app->tags,&parsed_size,";");
// if (yon_char_parsed_includes_char_parsed(required_tags,parsed_tags,required_size,parsed_size)){
// gtk_tree_store_append(window->treestore,&itar,&iter);
// gtk_tree_store_set(window->treestore,&itar,0,0,1,cur_app->name,2,cur_app->description,3,cur_app->tags,4,0,5,cur_app->icon,6,cur_app->execute,-1);
// }
// }
// }
// }
int yon_tree_store_setup_apps(yon_app_chooser_window *window){
GtkTreeIter iter;
dictionary *dict;
for_dictionaries(dict,window->apps_convert){
int parsed_size;
struct application *cur_app = (struct application*)dict->data;
gtk_tree_store_append(window->treestore,&iter,NULL);
gtk_tree_store_set(window->treestore,&iter,0,0,1,cur_app->name,2,cur_app->description,3,cur_app->tags,4,0,5,cur_app->icon,6,cur_app->execute,-1);
}
}
config_str yon_app_chooser_window_run(yon_app_chooser_window *window, int *size){
gtk_widget_show(window->MainWindow);
gtk_main();
config_str final = window->final->chosen_apps;
(*size)=window->final->size;
free(window);
return final;
}
void on_app_selection_toggled(GtkWidget *, char *path, yon_app_chooser_window *window){
GtkTreeIter iter;
int status;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->treestore),&iter,path);
gtk_tree_model_get(GTK_TREE_MODEL(window->treestore),&iter,0,&status,-1);
gtk_tree_store_set(window->treestore,&iter,0,!status,-1);
}
void on_app_chooser_window_closed(GtkWidget *, yon_app_chooser_window *window){
gtk_main_quit();
}
void on_app_chooser_accept(GtkWidget *, yon_app_chooser_window *window){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(window->treestore);
if (window->multiple){
for_iter(model,&iter){
int status;
char *name;
gtk_tree_model_get(GTK_TREE_MODEL(window->treestore),&iter,0,&status,1,&name,-1);
if (status){
yon_char_parsed_add_or_create_if_exists(window->final->chosen_apps,&window->final->size,name);
}
}
} else {
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model,&iter)){
char *name;
gtk_tree_model_get(GTK_TREE_MODEL(window->treestore),&iter,1,&name,-1);
yon_char_parsed_add_or_create_if_exists(window->final->chosen_apps,&window->final->size,name);
}
}
gtk_widget_destroy(window->MainWindow);
}
yon_app_chooser_window *yon_app_chooser_window_new(int multiple_choise){
yon_app_chooser_window *window = new(yon_app_chooser_window);
GtkBuilder *builder = gtk_builder_new_from_resource(ui_glade_path_app_chooser);
window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->WindowImage = yon_gtk_builder_get_widget(builder,"WindowImage");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->MainTree = yon_gtk_builder_get_widget(builder,"MainTree");
window->SelectionCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCell"));
window->treestore = GTK_TREE_STORE(gtk_builder_get_object(builder,"treestore1"));
window->MainIconView = yon_gtk_builder_get_widget(builder,"MainIconView");
window->liststore = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
window->visible_allowed=0;
window->final = new(struct return_struct);
memset(window->final,0,sizeof(struct return_struct));
g_signal_connect(G_OBJECT(window->MainWindow),"notify::visibile",G_CALLBACK(yon_block_visibility_if_unallowed),window);
g_signal_connect(G_OBJECT(window->MainWindow),"destroy",G_CALLBACK(on_app_chooser_window_closed),window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_app_chooser_accept),window);
g_signal_connect(G_OBJECT(window->SelectionCell),"toggled",G_CALLBACK(on_app_selection_toggled),window);
window->multiple = multiple_choise;
if (!window->multiple){
gtk_cell_renderer_set_visible(GTK_CELL_RENDERER(window->SelectionCell),0);
}
if (!yon_apps_get(window)) return NULL;
if (!yon_app_chooser_convert_apps(window)) return NULL;
yon_tree_store_setup_apps(window);
return window;
}

@ -0,0 +1,182 @@
#include "libublsettingsui-gtk3.h"
#define service_start_icon_name "com.ublinux.libublsettingsui-gtk3.play-symbolic"
#define service_stop_icon_name "com.ublinux.libublsettingsui-gtk3.stop-symbolic"
#define service_start_status_icon_name "com.ublinux.libublsettingsui-gtk3.active-symbolic"
#define service_stop_status_icon_name "com.ublinux.libublsettingsui-gtk3.inactive-symbolic"
void __on_closed(GtkWidget *, service_window *window){
free(window->name);
free(window->start_command);
free(window->stop_command);
free(window->enable_command);
free(window->disable_command);
free(window->info_command);
free(window->check_active_command);
free(window->check_enable_command);
free(window);
gtk_main_quit();
}
void __on_service_update_clicked(GtkWidget *, service_window *window);
void __on_service_start_clicked(GtkWidget *, service_window *window){
if (system(yon_debug_output("%s\n",window->start_command))){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
return;
};
__on_service_update_clicked(NULL,window);
}
void __on_service_stop_clicked(GtkWidget *, service_window *window){
if (system(window->stop_command)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
return;
};
__on_service_update_clicked(NULL,window);
}
void __on_service_enable_clicked(GtkWidget *, service_window *window){
if (system(window->enable_command)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
return;
};
__on_service_update_clicked(NULL,window);
}
void __on_service_disable_clicked(GtkWidget *, service_window *window){
if (system(window->disable_command)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
return;
};
__on_service_update_clicked(NULL,window);
}
void __on_service_restart_clicked(GtkWidget *, service_window *window){
if (system(window->stop_command)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
return;
};
if (system(window->start_command)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
return;
};
__on_service_update_clicked(NULL,window);
}
void __on_service_status_clicked(GtkWidget *, service_window *window){
char *success_string = _SERVICE_ACTIVE_STATUS_LABEL(window->name);
char *fail_string = _SERVICE_INACTIVE_STATUS_LABEL(window->name);
yon_terminal_window_update_button_launch(GTK_WINDOW(window->MainWindow),window->info_command,success_string,fail_string);
}
void __on_service_update_clicked(GtkWidget *, service_window *window){
if (!system(window->check_enable_command)){
gtk_label_set_text(GTK_LABEL(window->EnableLabel),yon_char_get_localised_from_lib(_SERVICE_ENABLE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->EnableImage),service_start_status_icon_name,GTK_ICON_SIZE_BUTTON);
} else {
gtk_label_set_text(GTK_LABEL(window->EnableLabel),yon_char_get_localised_from_lib(_SERVICE_DISABLE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->EnableImage),service_stop_status_icon_name,GTK_ICON_SIZE_BUTTON);
}
if (!system(window->check_active_command)){
gtk_label_set_text(GTK_LABEL(window->ActiveLabel),yon_char_get_localised_from_lib(_SERVICE_ACTIVE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->ActiveImage),service_start_status_icon_name,GTK_ICON_SIZE_BUTTON);
} else {
gtk_label_set_text(GTK_LABEL(window->ActiveLabel),yon_char_get_localised_from_lib(_SERVICE_INACTIVE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->ActiveImage),service_stop_status_icon_name,GTK_ICON_SIZE_BUTTON);
}
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(SUCCESS_LABEL),5,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
service_window *yon_service_window_new(char *name, char *start_command,
char *stop_command, char *enable_command,
char *disable_command, char *info_command,
char *check_active_command, char *check_enable_command){
service_window *window = new(service_window);
GtkBuilder *builder = gtk_builder_new_from_resource(ui_glade_path_service);
window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
window->UpdateButton = yon_gtk_builder_get_widget(builder,"UpdateButton");
window->StatusButton = yon_gtk_builder_get_widget(builder,"StatusButton");
window->ActiveLabel = yon_gtk_builder_get_widget(builder,"ActiveLabel");
window->ActiveImage = yon_gtk_builder_get_widget(builder,"ActiveImage");
window->EnableLabel = yon_gtk_builder_get_widget(builder,"EnableLabel");
window->EnableImage = yon_gtk_builder_get_widget(builder,"EnableImage");
window->RestartButton = yon_gtk_builder_get_widget(builder,"RestartButton");
window->StartButton = yon_gtk_builder_get_widget(builder,"StartButton");
window->StopButton = yon_gtk_builder_get_widget(builder,"StopButton");
window->EnableButton = yon_gtk_builder_get_widget(builder,"EnableButton");
window->DisableButton = yon_gtk_builder_get_widget(builder,"DisableButton");
window->name = yon_char_new(name);
window->start_command = yon_char_new(start_command);
window->stop_command = yon_char_new(stop_command);
window->enable_command = yon_char_new(enable_command);
window->disable_command = yon_char_new(disable_command);
window->info_command = yon_char_new(info_command);
window->check_active_command = yon_char_new(check_active_command);
window->check_enable_command = yon_char_new(check_enable_command);
char *head_label = (_SERVICE_HEAD_LABEL(window->name));
char *title_label = (_SERVICE_TITLE_LABEL(window->name));
gtk_label_set_text(GTK_LABEL(window->HeadLabel),head_label);
gtk_label_set_text(GTK_LABEL(window->TitleLabel),title_label);
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),NULL,_SERVICE_HEAD_LABEL(window->name),yon_dull_icon_path,NULL);
g_signal_connect(G_OBJECT(window->MainWindow),"destroy",G_CALLBACK(__on_closed),window);
g_signal_connect(G_OBJECT(window->StartButton),"clicked",G_CALLBACK(__on_service_start_clicked),window);
g_signal_connect(G_OBJECT(window->StopButton),"clicked",G_CALLBACK(__on_service_stop_clicked),window);
g_signal_connect(G_OBJECT(window->RestartButton),"clicked",G_CALLBACK(__on_service_restart_clicked),window);
g_signal_connect(G_OBJECT(window->StatusButton),"clicked",G_CALLBACK(__on_service_status_clicked),window);
g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(__on_service_update_clicked),window);
g_signal_connect(G_OBJECT(window->EnableButton),"clicked",G_CALLBACK(__on_service_enable_clicked),window);
g_signal_connect(G_OBJECT(window->DisableButton),"clicked",G_CALLBACK(__on_service_disable_clicked),window);
if (!system(window->check_enable_command)){
gtk_label_set_text(GTK_LABEL(window->EnableLabel),yon_char_get_localised_from_lib(_SERVICE_ENABLE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->EnableImage),service_start_status_icon_name,GTK_ICON_SIZE_BUTTON);
} else {
gtk_label_set_text(GTK_LABEL(window->EnableLabel),yon_char_get_localised_from_lib(_SERVICE_DISABLE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->EnableImage),service_stop_status_icon_name,GTK_ICON_SIZE_BUTTON);
}
if (!system(window->check_active_command)){
gtk_label_set_text(GTK_LABEL(window->ActiveLabel),yon_char_get_localised_from_lib(_SERVICE_ACTIVE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->ActiveImage),service_start_status_icon_name,GTK_ICON_SIZE_BUTTON);
} else {
gtk_label_set_text(GTK_LABEL(window->ActiveLabel),yon_char_get_localised_from_lib(_SERVICE_INACTIVE_LABEL));
gtk_image_set_from_icon_name(GTK_IMAGE(window->ActiveImage),service_stop_status_icon_name,GTK_ICON_SIZE_BUTTON);
}
return window;
}
void yon_service_window_run(service_window *window){
if (window){
gtk_widget_show(window->MainWindow);
gtk_main();
}
}

@ -0,0 +1,119 @@
#include "libublsettingsui-gtk3.h"
char *config_get_default_command = NULL;
char *config_get_global_command = NULL;
char *config_get_local_command = NULL;
char *config_get_custom_command = NULL;
char *config_get_global_only_command = NULL;
char *config_get_local_only_command = NULL;
char *config_set_global_local_command = NULL;
char *config_set_global_command = NULL;
char *config_set_local_command = NULL;
char *config_set_custom_command = NULL;
int __yon_load_proceed(YON_CONFIG_TYPE type){
if (type!=YON_CONFIG_CUSTOM){
yon_config_clean();
}
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
if (yon_config_load_config(type,config_get_global_command,NULL)){
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
}
else if (type==YON_CONFIG_LOCAL){
if (yon_config_load_config(type,config_get_local_command,NULL)){
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
} else if (type==YON_CONFIG_CUSTOM){
char *path;
textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
gtk_window_set_icon_name(GTK_WINDOW(dialog),yon_char_append("com.ublinux.",template_app_information.app_tech_name));
gtk_window_set_title(GTK_WINDOW(dialog),template_app_information.app_title);
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.ini");
gtk_file_filter_set_name(filter,"*.ini");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
gtk_widget_show(dialog);
int response = gtk_dialog_run(GTK_DIALOG(dialog));
if (response == GTK_RESPONSE_ACCEPT){
char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if (!yon_char_is_empty(file)){
path=yon_char_unite("'",file,"'",NULL);
}
yon_config_clean();
char *final_command = yon_config_parameter_prepare_command(config_get_custom_command,file,NULL,NULL);
if (yon_config_load_config(type,final_command,NULL)){
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
return 0;
}
}
return 1;
}
void __on_config_local_load(GtkWidget *){
__yon_load_proceed(YON_CONFIG_LOCAL);
template_config->load_mode=1;
}
void __on_config_global_load(GtkWidget *){
__yon_load_proceed(YON_CONFIG_GLOBAL);
template_config->load_mode=0;
}
void __on_config_custom_load(GtkWidget *){
__yon_load_proceed(YON_CONFIG_CUSTOM);
template_config->load_mode=3;
}
void __on_config_global_local_save(){
yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL);
}
void __on_config_global_save(){
yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL);
}
void __on_config_local_save(){
yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_global_command,NULL);
}
void __on_config_custom_save(){
yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_custom_command,NULL);
}
void yon_ubl_settings_window_set_standard_callbacks(template_main_window *widgets, char *get_global_command, char *get_local_command,char *get_custom_command, char *get_default_command, char *get_global_only_command, char *get_local_only_command){
if (!yon_char_is_empty(get_global_command)){
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(__on_config_global_load),NULL);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(__on_config_global_load),NULL);
config_get_global_command = yon_char_new(get_global_command);
config_set_global_command = yon_char_replace_single(get_global_command,"get","set");
}
if (!yon_char_is_empty(get_global_command)){
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(__on_config_local_load),NULL);
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(__on_config_local_save),NULL);
config_get_local_command = yon_char_new(get_local_command);
config_set_local_command = yon_char_replace_single(get_local_command,"get","set");
}
if (!yon_char_is_empty(get_global_command)){
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(__on_config_custom_load),NULL);
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(__on_config_custom_load),NULL);
config_get_custom_command = yon_char_new(get_custom_command);
config_set_custom_command = yon_char_replace_single(get_custom_command,"get","set");
}
if (!yon_char_is_empty(get_default_command)) config_get_default_command = yon_char_new(get_default_command);
if (!yon_char_is_empty(get_global_only_command)) config_get_global_only_command = yon_char_new(get_global_only_command);
if (!yon_char_is_empty(get_local_only_command)) config_get_local_only_command = yon_char_new(get_local_only_command);
}
int yon_ubl_settings_window_remove_standard_callbacks(template_main_window *window){
}

@ -5,6 +5,9 @@ template_app_info template_app_information;
static char *__yon_config_mode=NULL; static char *__yon_config_mode=NULL;
void __yon_config_init();
char *yon_char_get_localised_from_lib(char *string){ char *yon_char_get_localised_from_lib(char *string){
textdomain(template_ui_LocaleName); textdomain(template_ui_LocaleName);
char *ret = _(string); char *ret = _(string);
@ -128,7 +131,6 @@ void on_about(GtkWidget *self, char *version_application){
//functions //functions
int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){ int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){
textdomain(template_ui_LocaleName); textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_dialog_new_with_buttons(template_app_information.app_title,GTK_WINDOW(gtk_widget_get_toplevel(self)),GTK_DIALOG_USE_HEADER_BAR,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL); GtkWidget *dialog = gtk_dialog_new_with_buttons(template_app_information.app_title,GTK_WINDOW(gtk_widget_get_toplevel(self)),GTK_DIALOG_USE_HEADER_BAR,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL);
@ -146,7 +148,7 @@ int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data)
gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,1)),"marginright"); gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,1)),"marginright");
g_list_free(list); g_list_free(list);
GtkWidget *header_label = gtk_label_new(template_app_information.app_title); GtkWidget *header_label = gtk_label_new(yon_char_is_empty(data->title)?template_app_information.app_title:data->title);
gtk_widget_show(header_label); gtk_widget_show(header_label);
PangoAttrList *attributes = pango_attr_list_new(); PangoAttrList *attributes = pango_attr_list_new();
PangoAttribute *boldAttr = pango_attr_weight_new(PANGO_WEIGHT_BOLD); PangoAttribute *boldAttr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
@ -189,6 +191,15 @@ int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data)
return resp; return resp;
} }
dialog_confirmation_data *yon_confirmation_dialog_data_new(){
dialog_confirmation_data *data = new(dialog_confirmation_data);
data->action_text=NULL;
data->data=NULL;
data->function=NULL;
data->title=NULL;
return data;
}
char* yon_debug_output(char *pattern,char*text){ char* yon_debug_output(char *pattern,char*text){
if (template_config->debug_mode){ if (template_config->debug_mode){
printf(pattern,text); printf(pattern,text);
@ -218,6 +229,7 @@ int yon_ubl_connect_config(_template_config *config){
else else
replaces=1; replaces=1;
template_config = config; template_config = config;
__yon_config_init();
return replaces; return replaces;
} }
@ -505,10 +517,22 @@ void yon_root_button_setup(template_main_window *widgets, config_str args, int a
textdomain(template_app_information.app_locale); textdomain(template_app_information.app_locale);
} }
void __yon_config_init(){
template_config->always_open_documentation=0;
template_config->socket_id=-1;
template_config->save_socket_id=-1;
template_config->load_socket_id=-1;
template_config->lock_help=0;
template_config->lock_help=0;
template_config->lock_load_global=0;
template_config->lock_save_global=0;
template_config->lock_save_local=0;
template_config->load_mode=1;
}
template_main_window *yon_ubl_window_setup(){ template_main_window *yon_ubl_window_setup(){
textdomain (template_ui_LocaleName); textdomain (template_ui_LocaleName);
setlocale(LC_ALL,""); setlocale(LC_ALL,"");
template_main_window *widgets = setup_window(); template_main_window *widgets = setup_window();
yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,ui_banner_path); yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,ui_banner_path);
textdomain(template_ui_LocaleName); textdomain(template_ui_LocaleName);

@ -19,12 +19,15 @@
#define _(String) gettext(String) #define _(String) gettext(String)
#define yon_dull_icon_path "com.ublinux.libublsettingsui-gtk3"
#define ui_glade_path "/com/ublinux/ui/libublsettingsui-gtk3.glade" #define ui_glade_path "/com/ublinux/ui/libublsettingsui-gtk3.glade"
#define ui_glade_path_documentation "/com/ublinux/ui/libublsettingsui-gtk3-documentation.glade" #define ui_glade_path_documentation "/com/ublinux/ui/libublsettingsui-gtk3-documentation.glade"
#define ui_glade_path_about "/com/ublinux/ui/libublsettingsui-gtk3-about.glade" #define ui_glade_path_about "/com/ublinux/ui/libublsettingsui-gtk3-about.glade"
#define ui_glade_path_saving "/com/ublinux/ui/libublsettingsui-gtk3-saving.glade" #define ui_glade_path_saving "/com/ublinux/ui/libublsettingsui-gtk3-saving.glade"
#define ui_glade_path_filechooser "/com/ublinux/ui/libublsettingsui-gtk3-filechooser.glade" #define ui_glade_path_filechooser "/com/ublinux/ui/libublsettingsui-gtk3-filechooser.glade"
#define ui_glade_path_debug "/com/ublinux/ui/libublsettingsui-gtk3-debugger.glade" #define ui_glade_path_debug "/com/ublinux/ui/libublsettingsui-gtk3-debugger.glade"
#define ui_glade_path_service "/com/ublinux/ui/libublsettingsui-gtk3-service-control.glade"
#define ui_glade_path_app_chooser "/com/ublinux/ui/libublsettingsui-gtk3-app-chooser.glade"
#define ui_banner_path "/com/ublinux/images/libublsettingsui-gtk3-banner.png" #define ui_banner_path "/com/ublinux/images/libublsettingsui-gtk3-banner.png"
#define ui_CssPath "/com/ublinux/css/libublsettingsui-gtk3.css" #define ui_CssPath "/com/ublinux/css/libublsettingsui-gtk3.css"
#define ui_config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",template_app_information.app_tech_name,"/",template_app_information.app_tech_name,".conf",NULL) #define ui_config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",template_app_information.app_tech_name,"/",template_app_information.app_tech_name,".conf",NULL)
@ -93,6 +96,8 @@ typedef struct {
template_config_fields template_config_fields
} _template_config; } _template_config;
extern _template_config *template_config;
[[maybe_unused]] [[maybe_unused]]
extern _template_config *template_config; extern _template_config *template_config;
@ -127,6 +132,7 @@ extern _template_config *template_config;
\ \
GtkWidget *InterfaceBox;\ GtkWidget *InterfaceBox;\
//} //}
typedef struct { typedef struct {
template_window_fields template_window_fields
} template_main_window; } template_main_window;
@ -154,6 +160,7 @@ typedef struct {
void (*function)(void*,void*); void (*function)(void*,void*);
void *data; void *data;
char *action_text; char *action_text;
char *title;
} dialog_confirmation_data; } dialog_confirmation_data;
typedef struct { typedef struct {
@ -172,6 +179,9 @@ filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action);
GtkResponseType yon_file_chooser_start(filechooser_window *window); GtkResponseType yon_file_chooser_start(filechooser_window *window);
void yon_file_chooser_set_button_label(char *label); void yon_file_chooser_set_button_label(char *label);
dialog_confirmation_data *yon_confirmation_dialog_data_new();
int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data); int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data);
/**yon_open_browser(GtkWidget *self, char *link) /**yon_open_browser(GtkWidget *self, char *link)
@ -242,6 +252,8 @@ void yon_gtk_scrolled_window_set_horizontal_at_desired_size(GtkWidget *window, G
template_app_info yon_ubl_get_app_info(); template_app_info yon_ubl_get_app_info();
void yon_ubl_settings_window_set_standard_callbacks(template_main_window *widgets, char *get_global_command, char *get_local_command,char *get_custom_command, char *get_default_command, char *get_global_only_command, char *get_local_only_command);
typedef struct { typedef struct {
GtkWidget *Window; GtkWidget *Window;
@ -269,6 +281,17 @@ void yon_save_window_set_postsave_failure_function(void *function, void *data);
char *yon_get_default_label_with_parameter(char *command); char *yon_get_default_label_with_parameter(char *command);
enum YON_SAVE_COLUMNS {
YON_SAVE_CHECKED,
YON_SAVE_PARAMETER,
YON_SAVE_OLD,
YON_SAVE_NEW,
YON_SAVE_COMPARE,
YON_SAVE_COLOR,
YON_SAVE_VISIBLE,
YON_SAVE_SECTION
};
template_saving_window *yon_save_proceed(char *path,YON_CONFIG_TYPE type, ...); template_saving_window *yon_save_proceed(char *path,YON_CONFIG_TYPE type, ...);
void yon_on_space_first_changed(GtkEntry *editable); void yon_on_space_first_changed(GtkEntry *editable);
@ -298,6 +321,72 @@ typedef struct {
char *yon_settings_configuration_get(char *id); char *yon_settings_configuration_get(char *id);
char *yon_custom_config_init(); char *yon_custom_config_init();
typedef struct {
GtkWidget *MainWindow;
GtkWidget *StatusBox;
GtkWidget *HeadLabel;
GtkWidget *TitleLabel;
GtkWidget *UpdateButton;
GtkWidget *StatusButton;
GtkWidget *ActiveLabel;
GtkWidget *EnableLabel;
GtkWidget *ActiveImage;
GtkWidget *EnableImage;
GtkWidget *RestartButton;
GtkWidget *StartButton;
GtkWidget *StopButton;
GtkWidget *EnableButton;
GtkWidget *DisableButton;
char *name;
char *start_command;
char *stop_command;
char *enable_command;
char *disable_command;
char *info_command;
char *check_active_command;
char *check_enable_command;
} service_window;
typedef struct {
GtkWidget *MainWindow;
GtkWidget *StatusBox;
GtkWidget *HeadLabel;
GtkWidget *WindowImage;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *MainTree;
GtkCellRenderer *SelectionCell;
GtkTreeStore *treestore;
GtkWidget *MainIconView;
GtkListStore *liststore;
int apps_size;
config_str apps;
dictionary *apps_convert;
struct return_struct *final;
int multiple;
int visible_allowed;
} yon_app_chooser_window;
service_window *yon_service_window_new(char *name, char *start_command,
char *stop_command, char *enable_command,
char *disable_command, char *info_command,
char *check_active_command, char *check_enable_command);
void yon_service_window_run(service_window *window);
config_str yon_app_chooser_window_run(yon_app_chooser_window *window, int *size);
yon_app_chooser_window *yon_app_chooser_window_new(int multiple_choise);
#define VERSION_LABEL yon_char_unite(_("Version:")," ",!yon_char_is_empty(template_app_information.app_version)?template_app_information.app_version:"","\n",NULL) #define VERSION_LABEL yon_char_unite(_("Version:")," ",!yon_char_is_empty(template_app_information.app_version)?template_app_information.app_version:"","\n",NULL)
#define HELP_LABEL(rest) yon_char_unite(template_app_information.app_tech_name,_(" version:")," ", !yon_char_is_empty(template_app_information.app_version)?template_app_information.app_version:"","\n",\ #define HELP_LABEL(rest) yon_char_unite(template_app_information.app_tech_name,_(" version:")," ", !yon_char_is_empty(template_app_information.app_version)?template_app_information.app_version:"","\n",\
template_app_information.app_title,"\n",_("Usage:"), " ",template_app_information.app_tech_name," ",_("[OPTIONS]"),"\n",\ template_app_information.app_title,"\n",_("Usage:"), " ",template_app_information.app_tech_name," ",_("[OPTIONS]"),"\n",\
@ -351,7 +440,7 @@ char *yon_custom_config_init();
#define OPEN_HELP_LABEL _("Open documentation") #define OPEN_HELP_LABEL _("Open documentation")
#define PROJECT_HOME_LABEL _("Project Home Page") #define PROJECT_HOME_LABEL _("Project Home Page")
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen") #define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
#define AUTHORS_LABEL _(L"Copyright © 2022 - 2023, UBSoft LLC") #define AUTHORS_LABEL _(L"Copyright © 2022 - 2025, UBSoft LLC")
#define GLOBAL_LOAD_SUCCESS_LABEL _("Global configuration loading succeeded.") #define GLOBAL_LOAD_SUCCESS_LABEL _("Global configuration loading succeeded.")
@ -393,8 +482,27 @@ char *yon_custom_config_init();
#define PATH_INVALID_LABEL _("Invalid path") #define PATH_INVALID_LABEL _("Invalid path")
#define CHOOSE_FILE_LABEL _("Choose path") #define CHOOSE_FILE_LABEL _("Choose path")
#define CHOOSE_APP_LABEL _("Choose application")
#define FILE_CHOOSER_CHOOSE_FILDER_LABEL _("Choose directory instead of file") #define FILE_CHOOSER_CHOOSE_FILDER_LABEL _("Choose directory instead of file")
#define _SERVICE_ENABLE_LABEL _("Enabled")
#define _SERVICE_DISABLE_LABEL _("Disabled")
#define _SERVICE_ACTIVE_LABEL _("Active")
#define _SERVICE_INACTIVE_LABEL _("Inactive")
#define _SERVICE_ACTIVE_TEXT_LABEL _("Active:")
#define _SERVICE_ENABLED_TEXT_LABEL _("Enabled:")
#define _SERVICE_START_BUTTON_LABEL _("Start")
#define _SERVICE_STOP_BUTTON_LABEL _("Stop")
#define _SERVICE_RESTART_BUTTON_LABEL _("Restart")
#define _SERVICE_ENABLE_BUTTON_LABEL _("Enable")
#define _SERVICE_DISABLE_BUTTON_LABEL _("Disable")
#define _SERVICE_HEAD_LABEL(target) g_strdup_printf(yon_char_get_localised_from_lib(_("\"%s\" service configuration")), target)
#define _SERVICE_TITLE_LABEL(target) g_strdup_printf(yon_char_get_localised_from_lib(_("\"%s\" service:")), target)
#define _SERVICE_ACTIVE_STATUS_LABEL(target) yon_char_unite("\"",target,"\" ", yon_char_get_localised_from_lib(_("service is active")),NULL)
#define _SERVICE_INACTIVE_STATUS_LABEL(target) yon_char_unite("\"",target,"\" ",yon_char_get_localised_from_lib(_("service is inactive")),NULL)
#endif #endif
Loading…
Cancel
Save