master #43

Merged
asmeron merged 7 commits from YanTheKaller/libublsettingsui-gtk3:master into master 6 months ago

@ -8,6 +8,8 @@
<file>libublsettingsui-gtk3-debugger.glade</file>
<file>libublsettingsui-gtk3-filechooser.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 prefix="/com/ublinux/css">
<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="program-name">libublsettingsui-gtk3</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="website">https://ublinux.ru/</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">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property>
<child>
<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-Transfer-Encoding: 8bit\n"
#: source/libublsettingsui-gtk3.h:301
#: source/libublsettingsui-gtk3.h:376
msgid "Version:"
msgstr ""
#: source/libublsettingsui-gtk3.h:302
#: source/libublsettingsui-gtk3.h:377
msgid " version:"
msgstr ""
#: source/libublsettingsui-gtk3.h:303
#: source/libublsettingsui-gtk3.h:378
msgid "Usage:"
msgstr ""
#: source/libublsettingsui-gtk3.h:303
#: source/libublsettingsui-gtk3.h:378
msgid "[OPTIONS]"
msgstr ""
#: source/libublsettingsui-gtk3.h:304
#: source/libublsettingsui-gtk3.h:379
msgid "Options:"
msgstr ""
#: source/libublsettingsui-gtk3.h:305
#: source/libublsettingsui-gtk3.h:380
msgid "Show this help"
msgstr ""
#: source/libublsettingsui-gtk3.h:306
#: source/libublsettingsui-gtk3.h:381
msgid "Show package version"
msgstr ""
#: source/libublsettingsui-gtk3.h:307
#: source/libublsettingsui-gtk3.h:382
msgid "Lock this help menu"
msgstr ""
#: source/libublsettingsui-gtk3.h:308
#: source/libublsettingsui-gtk3.h:383
msgid "Lock configuration saving"
msgstr ""
#: source/libublsettingsui-gtk3.h:309
#: source/libublsettingsui-gtk3.h:384
msgid "Lock local configration saving"
msgstr ""
#: source/libublsettingsui-gtk3.h:310
#: source/libublsettingsui-gtk3.h:385
msgid "Lock global configration saving"
msgstr ""
#: source/libublsettingsui-gtk3.h:311
#: source/libublsettingsui-gtk3.h:386
msgid "Lock global configration loading"
msgstr ""
#: source/libublsettingsui-gtk3.h:312
#: source/libublsettingsui-gtk3.h:387
msgid "Reset application settings"
msgstr ""
#: source/libublsettingsui-gtk3.h:318 source/libublsettingsui-gtk3.h:326
#: source/libublsettingsui-gtk3.h:393 source/libublsettingsui-gtk3.h:401
msgid "About"
msgstr ""
#: source/libublsettingsui-gtk3.h:320
#: source/libublsettingsui-gtk3.h:395
msgid "Operation succeeded"
msgstr ""
#: source/libublsettingsui-gtk3.h:321
#: source/libublsettingsui-gtk3.h:396
msgid "Operation failed"
msgstr ""
#: source/libublsettingsui-gtk3.h:322
#: source/libublsettingsui-gtk3.h:397
msgid ""
"Warning! Application was launched without root - root-dependent actions are "
"locked"
msgstr ""
#: source/libublsettingsui-gtk3.h:324 source/libublsettingsui-gtk3.h:325
#: source/libublsettingsui-gtk3.h:399 source/libublsettingsui-gtk3.h:400
msgid "Default"
msgstr ""
#: source/libublsettingsui-gtk3.h:327
#: source/libublsettingsui-gtk3.h:402
msgid "Documentation"
msgstr ""
#: source/libublsettingsui-gtk3.h:329
#: source/libublsettingsui-gtk3.h:404
msgid "Save to specific file"
msgstr ""
#: source/libublsettingsui-gtk3.h:330
#: source/libublsettingsui-gtk3.h:405
msgid "Save to local configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:331
#: source/libublsettingsui-gtk3.h:406
msgid "Save to global configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:332
#: source/libublsettingsui-gtk3.h:407
msgid "Save configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:333
#: source/libublsettingsui-gtk3.h:408
msgid "Save"
msgstr ""
#: source/libublsettingsui-gtk3.h:334
#: source/libublsettingsui-gtk3.h:409
msgid "Saving..."
msgstr ""
#: source/libublsettingsui-gtk3.h:336
#: source/libublsettingsui-gtk3.h:411
msgid "Load from specific file"
msgstr ""
#: source/libublsettingsui-gtk3.h:337
#: source/libublsettingsui-gtk3.h:412
msgid "Load local configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:338
#: source/libublsettingsui-gtk3.h:413
msgid "Load global configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:339
#: source/libublsettingsui-gtk3.h:414
msgid "Load"
msgstr ""
#: source/libublsettingsui-gtk3.h:340
#: source/libublsettingsui-gtk3.h:415
msgid "Load file"
msgstr ""
#: source/libublsettingsui-gtk3.h:342
#: source/libublsettingsui-gtk3.h:417
msgid "Cancel"
msgstr ""
#: source/libublsettingsui-gtk3.h:343
#: source/libublsettingsui-gtk3.h:418
msgid "Accept"
msgstr ""
#: source/libublsettingsui-gtk3.h:344
#: source/libublsettingsui-gtk3.h:419
msgid "Open"
msgstr ""
#: source/libublsettingsui-gtk3.h:345
#: source/libublsettingsui-gtk3.h:420
msgid "Create directory"
msgstr ""
#: source/libublsettingsui-gtk3.h:346
#: source/libublsettingsui-gtk3.h:421
msgid "Select directory"
msgstr ""
#: source/libublsettingsui-gtk3.h:348
#: source/libublsettingsui-gtk3.h:423
msgid "Would you like to read documentation in the Web?"
msgstr ""
#: source/libublsettingsui-gtk3.h:349
#: source/libublsettingsui-gtk3.h:424
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr ""
#: source/libublsettingsui-gtk3.h:350
#: source/libublsettingsui-gtk3.h:425
msgid "Always redirect to online documentation"
msgstr ""
#: source/libublsettingsui-gtk3.h:351
#: source/libublsettingsui-gtk3.h:426
msgid "Open documentation"
msgstr ""
#: source/libublsettingsui-gtk3.h:352
#: source/libublsettingsui-gtk3.h:427
msgid "Project Home Page"
msgstr ""
#: source/libublsettingsui-gtk3.h:353
#: source/libublsettingsui-gtk3.h:428
msgid "Nothing were chosen"
msgstr ""
#: source/libublsettingsui-gtk3.h:354
msgid "Copyright © 2022 - 2023, UBSoft LLC"
#: source/libublsettingsui-gtk3.h:429
msgid "Copyright © 2022 - 2025, UBSoft LLC"
msgstr ""
#: source/libublsettingsui-gtk3.h:357
#: source/libublsettingsui-gtk3.h:432
msgid "Global configuration loading succeeded."
msgstr ""
#: source/libublsettingsui-gtk3.h:358
#: source/libublsettingsui-gtk3.h:433
msgid "Local configuration loading succeeded."
msgstr ""
#: source/libublsettingsui-gtk3.h:359
#: source/libublsettingsui-gtk3.h:434
msgid "Config loading failed"
msgstr ""
#: source/libublsettingsui-gtk3.h:361
#: source/libublsettingsui-gtk3.h:436
msgid "Local and global configuration saving succeeded."
msgstr ""
#: source/libublsettingsui-gtk3.h:362
#: source/libublsettingsui-gtk3.h:437
msgid "Global configuration saving succeeded."
msgstr ""
#: source/libublsettingsui-gtk3.h:363
#: source/libublsettingsui-gtk3.h:438
msgid "Local configuration saving succeeded."
msgstr ""
#: source/libublsettingsui-gtk3.h:364
#: source/libublsettingsui-gtk3.h:439
msgid "Configuration saving succeeded."
msgstr ""
#: source/libublsettingsui-gtk3.h:366
#: source/libublsettingsui-gtk3.h:441
msgid "Parameter"
msgstr ""
#: source/libublsettingsui-gtk3.h:367
#: source/libublsettingsui-gtk3.h:442
msgid "Old value"
msgstr ""
#: source/libublsettingsui-gtk3.h:368
#: source/libublsettingsui-gtk3.h:443
msgid "New value"
msgstr ""
#: source/libublsettingsui-gtk3.h:369
#: source/libublsettingsui-gtk3.h:444
msgid ""
"Value\n"
"(Old/New)"
msgstr ""
#: source/libublsettingsui-gtk3.h:371
#: source/libublsettingsui-gtk3.h:446
msgid "Nothing to save"
msgstr ""
#: source/libublsettingsui-gtk3.h:372
#: source/libublsettingsui-gtk3.h:447
msgid "Saving into local configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:373
#: source/libublsettingsui-gtk3.h:448
msgid "Saving into global configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:374
#: source/libublsettingsui-gtk3.h:449
msgid "Saving into global and local configuration"
msgstr ""
#: source/libublsettingsui-gtk3.h:375
#: source/libublsettingsui-gtk3.h:450
msgid "Saving into custom configuration at"
msgstr ""
#: source/libublsettingsui-gtk3.h:380
#: source/libublsettingsui-gtk3.h:455
msgid "Full saving mode"
msgstr ""
#: source/libublsettingsui-gtk3.h:381
#: source/libublsettingsui-gtk3.h:456
msgid "Saving into module"
msgstr ""
#: source/libublsettingsui-gtk3.h:382
#: source/libublsettingsui-gtk3.h:457
msgid "Sandbox mode"
msgstr ""
#: source/libublsettingsui-gtk3.h:383
#: source/libublsettingsui-gtk3.h:458
msgid "Sandbox with profile saving"
msgstr ""
#: source/libublsettingsui-gtk3.h:384
#: source/libublsettingsui-gtk3.h:459
msgid "HDD sandbox"
msgstr ""
#: source/libublsettingsui-gtk3.h:385
#: source/libublsettingsui-gtk3.h:460
msgid "HDD sandbox with profile saving"
msgstr ""
#: source/libublsettingsui-gtk3.h:386
#: source/libublsettingsui-gtk3.h:461
msgid "New configuration file creation failed"
msgstr ""
#: source/libublsettingsui-gtk3.h:387
#: source/libublsettingsui-gtk3.h:462
msgid "Upgrade to root"
msgstr ""
#: source/libublsettingsui-gtk3.h:388
#: source/libublsettingsui-gtk3.h:463
msgid "Settings"
msgstr ""
#: source/libublsettingsui-gtk3.h:390
#: source/libublsettingsui-gtk3.h:465
msgid "Application settigs"
msgstr ""
#: source/libublsettingsui-gtk3.h:392
#: source/libublsettingsui-gtk3.h:467
msgid "Invalid email adress"
msgstr ""
#: source/libublsettingsui-gtk3.h:393
#: source/libublsettingsui-gtk3.h:468
msgid "Invalid path"
msgstr ""
#: source/libublsettingsui-gtk3.h:395
#: source/libublsettingsui-gtk3.h:470
msgid "Choose path"
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"
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-Transfer-Encoding: 8bit\n"
#: source/libublsettingsui-gtk3.h:301
#: source/libublsettingsui-gtk3.h:376
msgid "Version:"
msgstr "Версия:"
#: source/libublsettingsui-gtk3.h:302
#: source/libublsettingsui-gtk3.h:377
msgid " version:"
msgstr " версия:"
#: source/libublsettingsui-gtk3.h:303
#: source/libublsettingsui-gtk3.h:378
msgid "Usage:"
msgstr "Использование:"
#: source/libublsettingsui-gtk3.h:303
#: source/libublsettingsui-gtk3.h:378
msgid "[OPTIONS]"
msgstr "[АРГУМЕНТЫ]"
#: source/libublsettingsui-gtk3.h:304
#: source/libublsettingsui-gtk3.h:379
msgid "Options:"
msgstr "Аргументы:"
#: source/libublsettingsui-gtk3.h:305
#: source/libublsettingsui-gtk3.h:380
msgid "Show this help"
msgstr "Показать эту подсказку"
#: source/libublsettingsui-gtk3.h:306
#: source/libublsettingsui-gtk3.h:381
msgid "Show package version"
msgstr "Показать версию пакета"
#: source/libublsettingsui-gtk3.h:307
#: source/libublsettingsui-gtk3.h:382
msgid "Lock this help menu"
msgstr "Заблокировать это меню помощи"
#: source/libublsettingsui-gtk3.h:308
#: source/libublsettingsui-gtk3.h:383
msgid "Lock configuration saving"
msgstr "Успешно записана локальная конфигурация"
#: source/libublsettingsui-gtk3.h:309
#: source/libublsettingsui-gtk3.h:384
msgid "Lock local configration saving"
msgstr "Заблокировать сохранение локальной конфигурации"
#: source/libublsettingsui-gtk3.h:310
#: source/libublsettingsui-gtk3.h:385
msgid "Lock global configration saving"
msgstr "Заблокировать сохранение глобальной конфигурации"
#: source/libublsettingsui-gtk3.h:311
#: source/libublsettingsui-gtk3.h:386
msgid "Lock global configration loading"
msgstr "Заблокировать загрузку глобальную конфигурацию"
#: source/libublsettingsui-gtk3.h:312
#: source/libublsettingsui-gtk3.h:387
msgid "Reset application settings"
msgstr "Сбросить настройки программы"
#: source/libublsettingsui-gtk3.h:318 source/libublsettingsui-gtk3.h:326
#: source/libublsettingsui-gtk3.h:393 source/libublsettingsui-gtk3.h:401
msgid "About"
msgstr "О программе"
#: source/libublsettingsui-gtk3.h:320
#: source/libublsettingsui-gtk3.h:395
msgid "Operation succeeded"
msgstr "Операция завершена"
#: source/libublsettingsui-gtk3.h:321
#: source/libublsettingsui-gtk3.h:396
msgid "Operation failed"
msgstr "Операция завершена с ошибкой"
#: source/libublsettingsui-gtk3.h:322
#: source/libublsettingsui-gtk3.h:397
msgid ""
"Warning! Application was launched without root - root-dependent actions are "
"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"
msgstr "По умолчанию"
#: source/libublsettingsui-gtk3.h:327
#: source/libublsettingsui-gtk3.h:402
msgid "Documentation"
msgstr "Справка"
#: source/libublsettingsui-gtk3.h:329
#: source/libublsettingsui-gtk3.h:404
msgid "Save to specific file"
msgstr "Сохранить в файл"
#: source/libublsettingsui-gtk3.h:330
#: source/libublsettingsui-gtk3.h:405
msgid "Save to local configuration"
msgstr "Сохранить в локальную конфигурацию"
#: source/libublsettingsui-gtk3.h:331
#: source/libublsettingsui-gtk3.h:406
msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию"
#: source/libublsettingsui-gtk3.h:332
#: source/libublsettingsui-gtk3.h:407
msgid "Save configuration"
msgstr "Сохранить конфигурацию"
#: source/libublsettingsui-gtk3.h:333
#: source/libublsettingsui-gtk3.h:408
msgid "Save"
msgstr "Сохранить"
#: source/libublsettingsui-gtk3.h:334
#: source/libublsettingsui-gtk3.h:409
msgid "Saving..."
msgstr "Сохранение..."
#: source/libublsettingsui-gtk3.h:336
#: source/libublsettingsui-gtk3.h:411
msgid "Load from specific file"
msgstr "Загрузить из файла"
#: source/libublsettingsui-gtk3.h:337
#: source/libublsettingsui-gtk3.h:412
msgid "Load local configuration"
msgstr "Загрузить локальную конфигурацию"
#: source/libublsettingsui-gtk3.h:338
#: source/libublsettingsui-gtk3.h:413
msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию"
#: source/libublsettingsui-gtk3.h:339
#: source/libublsettingsui-gtk3.h:414
msgid "Load"
msgstr "Загрузить"
#: source/libublsettingsui-gtk3.h:340
#: source/libublsettingsui-gtk3.h:415
msgid "Load file"
msgstr "Загрузить файл"
#: source/libublsettingsui-gtk3.h:342
#: source/libublsettingsui-gtk3.h:417
msgid "Cancel"
msgstr "Отмена"
#: source/libublsettingsui-gtk3.h:343
#: source/libublsettingsui-gtk3.h:418
msgid "Accept"
msgstr "Принять"
#: source/libublsettingsui-gtk3.h:344
#: source/libublsettingsui-gtk3.h:419
msgid "Open"
msgstr "Открыть"
#: source/libublsettingsui-gtk3.h:345
#: source/libublsettingsui-gtk3.h:420
msgid "Create directory"
msgstr "Создать файл"
#: source/libublsettingsui-gtk3.h:346
#: source/libublsettingsui-gtk3.h:421
msgid "Select directory"
msgstr "Выбрать папку"
#: source/libublsettingsui-gtk3.h:348
#: source/libublsettingsui-gtk3.h:423
msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?"
#: source/libublsettingsui-gtk3.h:349
#: source/libublsettingsui-gtk3.h:424
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
@ -173,67 +173,68 @@ msgstr ""
"Вы будете перенаправлены на сайт с документацией, где страницы помощи\n"
"переводятся и поддерживаются сообществом."
#: source/libublsettingsui-gtk3.h:350
#: source/libublsettingsui-gtk3.h:425
msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять"
#: source/libublsettingsui-gtk3.h:351
#: source/libublsettingsui-gtk3.h:426
msgid "Open documentation"
msgstr "Прочитать справку"
#: source/libublsettingsui-gtk3.h:352
#: source/libublsettingsui-gtk3.h:427
msgid "Project Home Page"
msgstr "Домашняя страница проекта"
#: source/libublsettingsui-gtk3.h:353
#: source/libublsettingsui-gtk3.h:428
msgid "Nothing were chosen"
msgstr "Ничего не было выбрано"
#: source/libublsettingsui-gtk3.h:354
msgid "Copyright © 2022 - 2023, UBSoft LLC"
msgstr "Copyright © 2022 - 2023, ООО «Юбисофт»"
#: source/libublsettingsui-gtk3.h:429
#, fuzzy
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."
msgstr "Успешно загружена глобальная конфигурация"
#: source/libublsettingsui-gtk3.h:358
#: source/libublsettingsui-gtk3.h:433
msgid "Local configuration loading succeeded."
msgstr "Успешно загружена локальная конфигурация"
#: source/libublsettingsui-gtk3.h:359
#: source/libublsettingsui-gtk3.h:434
msgid "Config loading failed"
msgstr "Ошибка загрузки конфига"
#: source/libublsettingsui-gtk3.h:361
#: source/libublsettingsui-gtk3.h:436
msgid "Local and global configuration saving succeeded."
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/libublsettingsui-gtk3.h:362
#: source/libublsettingsui-gtk3.h:437
msgid "Global configuration saving succeeded."
msgstr "Успешно записана глобальная конфигурация"
#: source/libublsettingsui-gtk3.h:363
#: source/libublsettingsui-gtk3.h:438
msgid "Local configuration saving succeeded."
msgstr "Успешно записана локальная конфигурация"
#: source/libublsettingsui-gtk3.h:364
#: source/libublsettingsui-gtk3.h:439
msgid "Configuration saving succeeded."
msgstr "Успешно записана конфигурация"
#: source/libublsettingsui-gtk3.h:366
#: source/libublsettingsui-gtk3.h:441
msgid "Parameter"
msgstr "Параметр"
#: source/libublsettingsui-gtk3.h:367
#: source/libublsettingsui-gtk3.h:442
msgid "Old value"
msgstr "Старое значение"
#: source/libublsettingsui-gtk3.h:368
#: source/libublsettingsui-gtk3.h:443
msgid "New value"
msgstr "Новое значение"
#: source/libublsettingsui-gtk3.h:369
#: source/libublsettingsui-gtk3.h:444
msgid ""
"Value\n"
"(Old/New)"
@ -241,78 +242,144 @@ msgstr ""
"Значение\n"
"(Старое/Новое)"
#: source/libublsettingsui-gtk3.h:371
#: source/libublsettingsui-gtk3.h:446
msgid "Nothing to save"
msgstr "Нечего сохранять"
#: source/libublsettingsui-gtk3.h:372
#: source/libublsettingsui-gtk3.h:447
msgid "Saving into local configuration"
msgstr "Сохранение в локальный конфигурационный файл"
#: source/libublsettingsui-gtk3.h:373
#: source/libublsettingsui-gtk3.h:448
msgid "Saving into global configuration"
msgstr "Сохранение в глобальный конфигурационный файл"
#: source/libublsettingsui-gtk3.h:374
#: source/libublsettingsui-gtk3.h:449
msgid "Saving into global and local configuration"
msgstr "Сохранение в глобальный и локальный конфигурационный файл"
#: source/libublsettingsui-gtk3.h:375
#: source/libublsettingsui-gtk3.h:450
msgid "Saving into custom configuration at"
msgstr "Сохранение в конфигурационный файл по пути"
#: source/libublsettingsui-gtk3.h:380
#: source/libublsettingsui-gtk3.h:455
msgid "Full saving mode"
msgstr "Полное сохранение"
#: source/libublsettingsui-gtk3.h:381
#: source/libublsettingsui-gtk3.h:456
msgid "Saving into module"
msgstr "Сохранение в модуль"
#: source/libublsettingsui-gtk3.h:382
#: source/libublsettingsui-gtk3.h:457
msgid "Sandbox mode"
msgstr "Полная песочница в ОЗУ"
#: source/libublsettingsui-gtk3.h:383
#: source/libublsettingsui-gtk3.h:458
msgid "Sandbox with profile saving"
msgstr "Песочница с сохранением профиля пользователя"
#: source/libublsettingsui-gtk3.h:384
#: source/libublsettingsui-gtk3.h:459
msgid "HDD sandbox"
msgstr "Полная песочница на HDD"
#: source/libublsettingsui-gtk3.h:385
#: source/libublsettingsui-gtk3.h:460
msgid "HDD sandbox with profile saving"
msgstr "Полная песочница на HDD с сохранением профиля пользователя"
#: source/libublsettingsui-gtk3.h:386
#: source/libublsettingsui-gtk3.h:461
msgid "New configuration file creation failed"
msgstr "Ошибка создания нового файла конфигурации"
#: source/libublsettingsui-gtk3.h:387
#: source/libublsettingsui-gtk3.h:462
msgid "Upgrade to root"
msgstr "Повысить права до root"
#: source/libublsettingsui-gtk3.h:388
#: source/libublsettingsui-gtk3.h:463
msgid "Settings"
msgstr ""
msgstr "Настройки"
#: source/libublsettingsui-gtk3.h:390
#: source/libublsettingsui-gtk3.h:465
msgid "Application settigs"
msgstr "Настройки"
msgstr "Настройки приложеия"
#: source/libublsettingsui-gtk3.h:392
#: source/libublsettingsui-gtk3.h:467
msgid "Invalid email adress"
msgstr "Неверный email-адрес"
#: source/libublsettingsui-gtk3.h:393
#: source/libublsettingsui-gtk3.h:468
msgid "Invalid path"
msgstr "Неправильный путь"
#: source/libublsettingsui-gtk3.h:395
#: source/libublsettingsui-gtk3.h:470
msgid "Choose path"
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"
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-debugger.glade
../libublsettingsui-gtk3-config-window.glade
../libublsettingsui-gtk3-service-control.glade
../libublsettingsui-gtk3-app-chooser.glade
../gresource.xml
../libublsettingsui-gtk3-banner.png
../libublsettingsui-gtk3.css
@ -81,6 +83,9 @@ add_library(${PROJECT_NAME} SHARED
libublsettingsui-gtk3-save.c
libublsettingsui-gtk3-config-window.c
libublsettingsui-gtk3-filechooser.c
libublsettingsui-gtk3-service.c
libublsettingsui-gtk3-app-chooser.c
libublsettingsui-gtk3-standard-callbacks.c
libublsettingsui-gtk3.h
${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;
void __yon_config_init();
char *yon_char_get_localised_from_lib(char *string){
textdomain(template_ui_LocaleName);
char *ret = _(string);
@ -128,7 +131,6 @@ void on_about(GtkWidget *self, char *version_application){
//functions
int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){
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);
@ -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");
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);
PangoAttrList *attributes = pango_attr_list_new();
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;
}
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){
if (template_config->debug_mode){
printf(pattern,text);
@ -218,6 +229,7 @@ int yon_ubl_connect_config(_template_config *config){
else
replaces=1;
template_config = config;
__yon_config_init();
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);
}
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(){
textdomain (template_ui_LocaleName);
setlocale(LC_ALL,"");
template_main_window *widgets = setup_window();
yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,ui_banner_path);
textdomain(template_ui_LocaleName);

@ -19,12 +19,15 @@
#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_documentation "/com/ublinux/ui/libublsettingsui-gtk3-documentation.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_filechooser "/com/ublinux/ui/libublsettingsui-gtk3-filechooser.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_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)
@ -93,6 +96,8 @@ typedef struct {
template_config_fields
} _template_config;
extern _template_config *template_config;
[[maybe_unused]]
extern _template_config *template_config;
@ -127,6 +132,7 @@ extern _template_config *template_config;
\
GtkWidget *InterfaceBox;\
//}
typedef struct {
template_window_fields
} template_main_window;
@ -154,6 +160,7 @@ typedef struct {
void (*function)(void*,void*);
void *data;
char *action_text;
char *title;
} dialog_confirmation_data;
typedef struct {
@ -172,6 +179,9 @@ filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action);
GtkResponseType yon_file_chooser_start(filechooser_window *window);
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);
/**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();
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 {
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);
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, ...);
void yon_on_space_first_changed(GtkEntry *editable);
@ -298,6 +321,72 @@ typedef struct {
char *yon_settings_configuration_get(char *id);
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 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",\
@ -351,7 +440,7 @@ char *yon_custom_config_init();
#define OPEN_HELP_LABEL _("Open documentation")
#define PROJECT_HOME_LABEL _("Project Home Page")
#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.")
@ -393,8 +482,27 @@ char *yon_custom_config_init();
#define PATH_INVALID_LABEL _("Invalid 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 _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
Loading…
Cancel
Save