develop #14

Merged
asmeron merged 34 commits from develop into master 3 years ago

@ -100,17 +100,17 @@ install: check uninstall
@echo "Install ..."
@for FILE_PO in $(wildcard *.po); do \
LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
install -dm655 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
echo "$${FILE_PO}"; \
msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \
done
@for SIZE in 16 32 48; do \
install -dm655 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done
@install -dm655 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps"
@install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/devices/" "com.ublinux.${PKGNAME}.display.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/devices/" "com.ublinux.${PKGNAME}.video-card.svg"
@ -122,7 +122,7 @@ install: check uninstall
@install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.pkexec.${PKGNAME}.exec.policy"
@install -Dm655 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -dm655 "${DESTDIR}${PREFIX}/share/applications"
@install -dm755 "${DESTDIR}${PREFIX}/share/applications"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -dm655 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images}
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade"

@ -19,7 +19,44 @@
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs10" />
id="defs10">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter1608"
x="-0.082073624"
y="-0.33699878"
width="1.1641472"
height="1.6739976">
<feFlood
flood-opacity="0.901961"
flood-color="rgb(255,255,255)"
result="flood"
id="feFlood1598" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite1600" />
<feGaussianBlur
in="composite1"
stdDeviation="56"
result="blur"
id="feGaussianBlur1602" />
<feOffset
dx="-1.94289e-16"
dy="3.05311e-16"
result="offset"
id="feOffset1604" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite1606" />
</filter>
</defs>
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
@ -30,8 +67,8 @@
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="66"
inkscape:cy="24.5625"
inkscape:cx="32.0625"
inkscape:cy="32.6875"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
@ -40,10 +77,6 @@
inkscape:current-layer="svg6" />
<title
id="title2">AMD icon</title>
<path
d="M 1.4659411,0.73095052 1.5906662,0.85575569 H 1.7951548 V 1.0603242 L 1.9200399,1.1851294 V 0.73095052 Z M 0.15996675,0.76159182 -3.99e-5,1.1584083 h 0.10472436 l 0.0296013,-0.078563 h 0.17768738 l 0.0326414,0.078563 H 0.45165888 L 0.27453152,0.76159182 Z m 0.336734,0 V 1.1580082 h 0.0990441 V 0.91063797 L 0.70278929,1.0356032 h 0.0150402 L 0.82487441,0.911118 v 0.2472903 h 0.0990442 V 0.76159182 H 0.83759494 L 0.7102296,0.90919797 0.58294434,0.76159182 Z m 0.50266086,0 V 1.1584083 H 1.1639285 c 0.1583266,0 0.2304095,-0.083684 0.2304095,-0.19776823 0,-0.1088045 -0.074963,-0.19904825 -0.219769,-0.19904825 z m 0.0989642,0.072803 h 0.063363 c 0.093604,0 0.1304054,0.0568823 0.1304054,0.1256052 0,0.0582426 -0.029761,0.12576518 -0.1292854,0.12576518 H 1.0983258 Z M 0.21948924,0.85623592 0.28277194,1.0108023 H 0.16060678 Z M 1.5905062,0.88079674 1.4621808,1.0090421 V 1.1890495 H 1.6418683 L 1.7701936,1.0604842 H 1.5905062 Z"
id="path4"
style="stroke-width:0.080003" />
<metadata
id="metadata827">
<rdf:RDF>
@ -53,4 +86,35 @@
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g1120"
transform="matrix(0.0010099,0,0,0.0010099,-0.07435912,0.31038814)"
style="filter:url(#filter1608)">
<g
id="Layer1002">
<path
d="M 1443.2532,674.1362 V 832.1413 H 1596.7 l 107.1085,-113.1455 h -147.358 V 570.6571 Z"
style="fill:#00a66e;fill-rule:evenodd"
id="path37" />
<path
d="m 1439.0903,443.8365 h 403.9061 V 842.651 L 1719.1691,718.8068 V 558.376 h -162.9079 z"
style="fill:#00a66e;fill-rule:evenodd"
id="path39" />
</g>
<g
id="Layer1003">
<path
d="m 592.4394,809.9182 h -91.3776 l -27.9607,-67.426 H 320.7894 l -25.4744,67.426 H 205.4423 L 342.755,469.3452 h 98.3793 z M 393.1871,550.7732 v 0 l -49.9247,132.3247 h 104.8547 z"
style="fill:#000000;fill-rule:evenodd"
id="path42" />
<path
d="m 920.5338,469.3452 h 73.8683 v 340.573 H 909.5342 V 597.2155 L 817.6225,704.0828 H 804.6617 L 712.7846,597.2155 v 212.7027 h -84.877 v -340.573 h 73.8939 L 811.155,595.7015 Z"
style="fill:#000000;fill-rule:evenodd"
id="path44" />
<path
d="m 1198.6423,469.3452 c 124.3267,0 188.2275,77.4377 188.2275,170.8033 0,97.8542 -61.8885,169.7697 -197.7219,169.7697 h -140.8048 v -340.573 z m -65.4313,278.1522 v 0 h 55.4896 c 85.3495,0 110.8406,-57.915 110.8406,-107.8484 0,-58.43 -31.477,-107.8651 -111.873,-107.8651 h -54.4572 z"
style="fill:#000000;fill-rule:evenodd"
id="path46" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -16,7 +16,44 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
id="defs10">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter3075"
x="-0.086766915"
y="-0.1312858"
width="1.1735338"
height="1.2625716">
<feFlood
flood-opacity="0.901961"
flood-color="rgb(255,255,255)"
result="flood"
id="feFlood3065" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite3067" />
<feGaussianBlur
in="composite1"
stdDeviation="2.3"
result="blur"
id="feGaussianBlur3069" />
<feOffset
dx="-1.94289e-16"
dy="3.05311e-16"
result="offset"
id="feOffset3071" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite3073" />
</filter>
</defs>
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
@ -27,7 +64,7 @@
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="7.8555144"
inkscape:cx="0.12729911"
inkscape:cx="37.744186"
inkscape:cy="21.195302"
inkscape:window-width="1920"
inkscape:window-height="1027"
@ -39,5 +76,6 @@
fill="#0071c5"
d="M 18.904146,28.836478 V 39.116883 H 15.587887 V 26.183472 h 6.798331 c 2.81882,0 3.813697,1.98976 3.813697,3.8137 v 9.119711 h -3.150446 v -9.119711 c 0,-0.663247 -0.497438,-1.160694 -1.492315,-1.160694 z M 40.95727,28.670669 c -1.823941,0 -2.487197,1.160694 -2.487197,2.818826 h 5.140202 C 43.444467,29.997172 42.94703,28.670669 40.95727,28.670669 Z m -2.487197,4.974384 c 0,1.658131 1.160694,2.818825 2.984634,2.818825 1.492323,0 2.155568,-0.331628 2.984634,-1.160694 l 1.98976,1.989759 c -1.326503,1.160695 -2.653016,1.98976 -4.974394,1.98976 -3.150443,0 -6.135078,-1.658131 -6.135078,-6.632525 0,-4.311138 1.326504,-6.632515 5.969269,-6.632515 4.642755,0 5.471821,3.316262 5.471821,7.62739 z m -5.969265,5.47183 c -2.653007,0 -3.813697,-1.82394 -3.813697,-3.813699 V 22.7014 h 3.316258 v 3.482072 h 2.487195 v 2.653006 h -2.487195 v 6.300897 c 0,0.829065 0.331627,1.160694 1.160691,1.160694 h 1.326504 v 2.818814 z M 12.769066,24.359531 H 9.4528071 v -3.150442 h 3.3162589 z m 0,14.923172 C 10.281872,38.951075 9.4528071,37.458753 9.4528071,35.800622 v -9.61715 h 3.3162589 z m 39.297675,-0.331628 c -2.487197,-0.16582 -3.316262,-1.658132 -3.316262,-3.482071 V 20.87746 h 3.316262 z M 63.507831,22.86722 C 60.523196,8.2756772 32.334996,7.4466119 14.095569,18.556083 v 1.160684 c 18.239427,-9.285521 43.940431,-9.285521 46.427627,4.145328 0.663257,4.476945 -1.82394,9.119711 -6.300887,11.772717 v 3.482071 C 59.69413,37.127135 65.165962,30.660428 63.507831,22.86722 Z M 30.34524,48.402415 C 17.909268,49.563099 4.6442313,47.739158 2.820288,37.95619 1.9912233,33.147616 4.1467919,28.007412 7.1314252,24.69116 V 23.033028 C 1.8254102,27.675794 -0.99340985,33.479244 0.66472042,40.443386 2.6544759,49.231481 13.929757,54.371673 31.174304,52.713552 37.972636,52.050295 46.926538,49.728918 53.061616,46.412655 v -4.808574 c -5.63764,3.316262 -14.923172,6.135077 -22.716376,6.798334 z"
id="path4"
style="stroke-width:0.165814" />
style="stroke-width:0.165814;filter:url(#filter3075)"
transform="matrix(0.84740862,0,0,0.84740862,4.882924,4.8829241)" />
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

@ -17,7 +17,44 @@
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs12" />
id="defs12">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter2175"
x="-0.081943891"
y="-0.11128929"
width="1.1638878"
height="1.2225786">
<feFlood
flood-opacity="0.901961"
flood-color="rgb(255,255,255)"
result="flood"
id="feFlood2165" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite2167" />
<feGaussianBlur
in="composite1"
stdDeviation="12"
result="blur"
id="feGaussianBlur2169" />
<feOffset
dx="-1.94289e-16"
dy="3.05311e-16"
result="offset"
id="feOffset2171" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite2173" />
</filter>
</defs>
<sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
@ -32,7 +69,7 @@
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="7.11"
inkscape:cx="30.2391"
inkscape:cx="22.925457"
inkscape:cy="23.136428"
inkscape:window-width="1920"
inkscape:window-height="1027"
@ -44,7 +81,8 @@
id="title2">generated by pstoedit version:3.44 from NVBadge_2D.eps</title>
<g
id="g833"
transform="matrix(0.08000809,0,0,0.08000809,32.371254,-9.9356868)">
transform="matrix(0.06760249,0,0,0.06760249,35.173187,-8.514446)"
style="filter:url(#filter2175)">
<path
d="m 384.195,235.769 c 0,3.771 -2.769,6.302 -6.047,6.302 v -0.023 c -3.371,0.023 -6.089,-2.508 -6.089,-6.278 0,-3.769 2.718,-6.293 6.089,-6.293 3.279,-0.001 6.047,2.523 6.047,6.292 z m 2.453,0 c 0,-5.176 -4.02,-8.18 -8.5,-8.18 -4.511,0 -8.531,3.004 -8.531,8.18 0,5.172 4.021,8.188 8.531,8.188 4.48,0 8.5,-3.016 8.5,-8.188 m -9.91,0.692 h 0.91 l 2.109,3.703 h 2.315 l -2.336,-3.859 c 1.207,-0.086 2.2,-0.66 2.2,-2.285 0,-2.02 -1.393,-2.668 -3.75,-2.668 h -3.411 v 8.812 h 1.961 l 0.002,-3.703 m 0,-1.492 v -2.121 h 1.364 c 0.742,0 1.753,0.06 1.753,0.965 0,0.984 -0.523,1.156 -1.398,1.156 h -1.719 m -47.332,-44.282 10.598,28.992 H 318.48 Z m -11.35,-11.289 -24.423,61.88 h 17.245 l 3.863,-10.935 h 28.903 l 3.656,10.935 h 18.722 L 341.417,179.39 Z m -49.033,61.903 h 17.497 v -61.922 l -17.5,-0.004 z m -121.467,-61.926 -14.598,49.078 -13.984,-49.074 -18.879,-0.004 19.972,61.926 h 25.207 l 20.133,-61.926 z m 70.725,13.484 h 7.521 c 10.909,0 17.966,4.898 17.966,17.609 0,12.713 -7.057,17.612 -17.966,17.612 h -7.521 z m -17.35,-13.484 v 61.926 h 28.365 c 15.113,0 20.049,-2.512 25.385,-8.147 3.769,-3.957 6.207,-12.642 6.207,-22.134 0,-8.707 -2.063,-16.469 -5.66,-21.305 -6.48,-8.648 -15.816,-10.34 -29.75,-10.34 z M 35.188,179.289 v 62.012 h 17.645 v -47.086 l 13.672,0.004 c 4.527,0 7.754,1.129 9.934,3.457 2.765,2.945 3.894,7.699 3.894,16.396 v 27.229 h 17.098 v -34.262 c 0,-24.453 -15.586,-27.75 -30.836,-27.75 z m 137.583,0.086 0.007,61.926 h 17.489 v -61.926 z"
id="path4" />

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

@ -14,7 +14,36 @@
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="defs63" /><sodipodi:namedview
id="defs63"><filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter2485"
x="-0.14222222"
y="-0.17454546"
width="1.2844444"
height="1.3490909"><feFlood
flood-opacity="0.901961"
flood-color="rgb(255,255,255)"
result="flood"
id="feFlood2475" /><feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite2477" /><feGaussianBlur
in="composite1"
stdDeviation="3.2"
result="blur"
id="feGaussianBlur2479" /><feOffset
dx="-1.94289e-16"
dy="3.05311e-16"
result="offset"
id="feOffset2481" /><feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite2483" /></filter></defs><sodipodi:namedview
id="namedview61"
pagecolor="#ffffff"
bordercolor="#999999"
@ -24,14 +53,15 @@
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="6.0254237"
inkscape:cx="64.227848"
inkscape:cy="53.523207"
inkscape:cx="54.850914"
inkscape:cy="70.617441"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" />
inkscape:current-layer="layer2" />
@ -53,53 +83,68 @@
<g
id="g909"
transform="matrix(2.1698808,0,0,2.1698808,-0.0114836,-0.0114836)"><rect
x="4"
y="12.5"
style="fill:#38454f"
width="55"
height="32"
id="rect2" /><circle
style="fill:#546a79"
cx="7"
cy="15.5"
r="1"
id="circle4" /><circle
style="fill:#546a79"
cx="7"
cy="41.5"
r="1"
id="circle6" /><circle
style="fill:#546a79"
cx="56"
cy="15.5"
r="1"
id="circle8" /><circle
style="fill:#546a79"
cx="56"
cy="41.5"
r="1"
id="circle10" /><rect
y="27.5"
style="fill:#839594"
width="3"
height="13"
id="rect12"
x="0" /><path
style="fill:#f3cc6d"
d="M 3,26.5 H 1 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 h 2 c 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z"
id="path14" /><path
style="fill:#f3cc6d"
d="M 3,43.5 H 1 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 h 2 c 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z"
id="path16" /><rect
y="15.5"
style="fill:#839594"
width="3"
height="4"
id="rect18"
x="0" /><g
id="g22">
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1"
style="display:none"><rect
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-linecap:round"
id="rect991"
width="127.7119"
height="143.58076"
x="-0.055910349"
y="0.12853201" /></g><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"><g
id="g909"
transform="matrix(1.7196211,0,0,1.7196211,13.271178,13.271178)"
style="filter:url(#filter2485)"><rect
x="4"
y="12.5"
style="fill:#38454f"
width="55"
height="32"
id="rect2" /><circle
style="fill:#546a79"
cx="7"
cy="15.5"
r="1"
id="circle4" /><circle
style="fill:#546a79"
cx="7"
cy="41.5"
r="1"
id="circle6" /><circle
style="fill:#546a79"
cx="56"
cy="15.5"
r="1"
id="circle8" /><circle
style="fill:#546a79"
cx="56"
cy="41.5"
r="1"
id="circle10" /><rect
y="27.5"
style="fill:#839594"
width="3"
height="13"
id="rect12"
x="0" /><path
style="fill:#f3cc6d"
d="M 3,26.5 H 1 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 h 2 c 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z"
id="path14" /><path
style="fill:#f3cc6d"
d="M 3,43.5 H 1 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 h 2 c 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z"
id="path16" /><rect
y="15.5"
style="fill:#839594"
width="3"
height="4"
id="rect18"
x="0" /><g
id="g22">
<rect
x="12"
y="44.5"
@ -108,36 +153,36 @@
height="4"
id="rect20" />
</g><path
style="fill:#6c797a"
d="M 24.389,38.655 C 22.629,36.623 21.415,33.659 21.094,30.279 21.091,30.254 21.089,30.229 21.086,30.204 21.035,29.645 21,29.079 21,28.5 c 0,-0.579 0.035,-1.145 0.086,-1.704 0.003,-0.025 0.005,-0.05 0.008,-0.075 0.321,-3.38 1.535,-6.344 3.295,-8.376 0.781,-1.046 1.67,-2.005 2.667,-2.845 H 17 c -4.971,0 -9,5.82 -9,13 0,7.18 4.029,13 9,13 h 10.057 c -0.998,-0.84 -1.886,-1.8 -2.668,-2.845 z"
id="path24" /><path
style="fill:#283238"
d="M 34.846,41.5 C 29.534,39.394 26,34.23 26,28.5 c 0,-5.73 3.534,-10.894 8.846,-13 h 10.309 c 5.311,2.106 8.845,7.27 8.845,13 0,5.73 -3.534,10.894 -8.846,13 z"
id="path26" /><circle
style="fill:#cbd4d8"
cx="40"
cy="28.5"
r="3"
id="circle28" /><path
style="fill:#546a79"
d="m 49.903,29.739 c 0.119,-0.499 -0.359,-0.91 -0.848,-0.753 -1.66,0.535 -4.09,0.448 -6.093,-0.863 0.016,0.125 0.038,0.248 0.038,0.377 0,1.304 -0.837,2.403 -2,2.816 0,0 3.823,2.809 7,3.184 0.896,-1.041 1.557,-3.317 1.903,-4.761 z"
id="path30" /><path
style="fill:#546a79"
d="m 30.019,27.261 c -0.119,0.499 0.359,0.91 0.848,0.753 1.66,-0.535 4.09,-0.448 6.093,0.863 -0.016,-0.125 -0.038,-0.248 -0.038,-0.376 0,-1.304 0.837,-2.403 2,-2.816 0,0 -3.823,-2.809 -7,-3.184 -0.897,1.04 -1.558,3.316 -1.903,4.76 z"
id="path32" /><path
style="fill:#546a79"
d="m 34.343,36.796 c 0.391,0.333 0.974,0.093 1.056,-0.414 0.277,-1.722 1.457,-3.848 3.535,-5.037 -0.118,-0.043 -0.238,-0.079 -0.353,-0.137 -1.162,-0.592 -1.761,-1.837 -1.601,-3.061 0,0 -4.238,2.131 -6.015,4.792 0.52,1.271 2.248,2.894 3.378,3.857 z"
id="path34" /><path
style="fill:#546a79"
d="m 45.578,20.204 c -0.391,-0.333 -0.974,-0.093 -1.056,0.414 -0.277,1.722 -1.457,3.848 -3.535,5.037 0.118,0.043 0.238,0.079 0.353,0.137 1.162,0.592 1.761,1.837 1.601,3.061 0,0 4.238,-2.131 6.015,-4.792 -0.52,-1.271 -2.248,-2.894 -3.378,-3.857 z"
id="path36" /><path
style="fill:#546a79"
d="m 44.179,37.588 c 0.487,-0.163 0.582,-0.787 0.189,-1.118 -1.334,-1.124 -2.548,-3.231 -2.497,-5.624 -0.097,0.079 -0.19,0.163 -0.299,0.232 -1.106,0.691 -2.482,0.563 -3.448,-0.204 0,0 -0.356,4.73 1.009,7.623 1.357,0.209 3.638,-0.437 5.046,-0.909 z"
id="path38" /><path
style="fill:#546a79"
d="m 35.743,19.412 c -0.487,0.163 -0.582,0.787 -0.189,1.118 1.334,1.124 2.548,3.231 2.497,5.624 0.097,-0.079 0.19,-0.163 0.299,-0.232 1.106,-0.691 2.482,-0.563 3.448,0.204 0,0 0.356,-4.73 -1.009,-7.623 -1.358,-0.209 -3.638,0.437 -5.046,0.909 z"
id="path40" /><g
id="g56">
style="fill:#6c797a"
d="M 24.389,38.655 C 22.629,36.623 21.415,33.659 21.094,30.279 21.091,30.254 21.089,30.229 21.086,30.204 21.035,29.645 21,29.079 21,28.5 c 0,-0.579 0.035,-1.145 0.086,-1.704 0.003,-0.025 0.005,-0.05 0.008,-0.075 0.321,-3.38 1.535,-6.344 3.295,-8.376 0.781,-1.046 1.67,-2.005 2.667,-2.845 H 17 c -4.971,0 -9,5.82 -9,13 0,7.18 4.029,13 9,13 h 10.057 c -0.998,-0.84 -1.886,-1.8 -2.668,-2.845 z"
id="path24" /><path
style="fill:#283238"
d="M 34.846,41.5 C 29.534,39.394 26,34.23 26,28.5 c 0,-5.73 3.534,-10.894 8.846,-13 h 10.309 c 5.311,2.106 8.845,7.27 8.845,13 0,5.73 -3.534,10.894 -8.846,13 z"
id="path26" /><circle
style="fill:#cbd4d8"
cx="40"
cy="28.5"
r="3"
id="circle28" /><path
style="fill:#546a79"
d="m 49.903,29.739 c 0.119,-0.499 -0.359,-0.91 -0.848,-0.753 -1.66,0.535 -4.09,0.448 -6.093,-0.863 0.016,0.125 0.038,0.248 0.038,0.377 0,1.304 -0.837,2.403 -2,2.816 0,0 3.823,2.809 7,3.184 0.896,-1.041 1.557,-3.317 1.903,-4.761 z"
id="path30" /><path
style="fill:#546a79"
d="m 30.019,27.261 c -0.119,0.499 0.359,0.91 0.848,0.753 1.66,-0.535 4.09,-0.448 6.093,0.863 -0.016,-0.125 -0.038,-0.248 -0.038,-0.376 0,-1.304 0.837,-2.403 2,-2.816 0,0 -3.823,-2.809 -7,-3.184 -0.897,1.04 -1.558,3.316 -1.903,4.76 z"
id="path32" /><path
style="fill:#546a79"
d="m 34.343,36.796 c 0.391,0.333 0.974,0.093 1.056,-0.414 0.277,-1.722 1.457,-3.848 3.535,-5.037 -0.118,-0.043 -0.238,-0.079 -0.353,-0.137 -1.162,-0.592 -1.761,-1.837 -1.601,-3.061 0,0 -4.238,2.131 -6.015,4.792 0.52,1.271 2.248,2.894 3.378,3.857 z"
id="path34" /><path
style="fill:#546a79"
d="m 45.578,20.204 c -0.391,-0.333 -0.974,-0.093 -1.056,0.414 -0.277,1.722 -1.457,3.848 -3.535,5.037 0.118,0.043 0.238,0.079 0.353,0.137 1.162,0.592 1.761,1.837 1.601,3.061 0,0 4.238,-2.131 6.015,-4.792 -0.52,-1.271 -2.248,-2.894 -3.378,-3.857 z"
id="path36" /><path
style="fill:#546a79"
d="m 44.179,37.588 c 0.487,-0.163 0.582,-0.787 0.189,-1.118 -1.334,-1.124 -2.548,-3.231 -2.497,-5.624 -0.097,0.079 -0.19,0.163 -0.299,0.232 -1.106,0.691 -2.482,0.563 -3.448,-0.204 0,0 -0.356,4.73 1.009,7.623 1.357,0.209 3.638,-0.437 5.046,-0.909 z"
id="path38" /><path
style="fill:#546a79"
d="m 35.743,19.412 c -0.487,0.163 -0.582,0.787 -0.189,1.118 1.334,1.124 2.548,3.231 2.497,5.624 0.097,-0.079 0.19,-0.163 0.299,-0.232 1.106,-0.691 2.482,-0.563 3.448,0.204 0,0 0.356,-4.73 -1.009,-7.623 -1.358,-0.209 -3.638,0.437 -5.046,0.909 z"
id="path40" /><g
id="g56">
<rect
x="14"
y="46.5"
@ -188,7 +233,6 @@
height="2"
id="rect54" />
</g><path
style="fill:#cbd4d8"
d="M 4,7.5 H 1 c -0.553,0 -1,0.447 -1,1 0,0.553 0.447,1 1,1 h 2 v 41 c 0,0.553 0.447,1 1,1 0.553,0 1,-0.447 1,-1 V 8.5 C 5,7.947 4.553,7.5 4,7.5 Z"
id="path58" /></g>
</svg>
style="fill:#cbd4d8"
d="M 4,7.5 H 1 c -0.553,0 -1,0.447 -1,1 0,0.553 0.447,1 1,1 h 2 v 41 c 0,0.553 0.447,1 1,1 0.553,0 1,-0.447 1,-1 V 8.5 C 5,7.947 4.553,7.5 4,7.5 Z"
id="path58" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

@ -8,6 +8,19 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
option(WEBKIT_FOUND "No" OFF)
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
include_directories(${WEBKIT_INCLUDE_DIRS})
link_directories(${WEBKIT_LIBRARY_DIRS})
add_definitions(${WEBKIT_CFLAGS_OTHER})
endif()
configure_file(ubl-settings-video.h.in ubl-settings-video-cm.h)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
@ -19,7 +32,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
set(SOURCE_FILES
ubl-settings-video.c
ubl-utils.c
)
ubl-settings-video-cm.h)
set(LIBRARIES
${GTK_LIBRARIES}
@ -28,5 +41,9 @@ set(LIBRARIES
add_executable(ubl-settings-video ${SOURCE_FILES})
target_link_libraries(ubl-settings-video ${LIBRARIES})
target_link_libraries(ubl-settings-video PUBLIC ${WEBKIT_LIBRARIES} ${LIBRARIES})
target_include_directories(ubl-settings-video PUBLIC
"${PROJECT_BINARY_DIR}"
${WEBKIT_INCLUDE_DIRS}
)
install(TARGETS ubl-settings-video DESTINATION bin)

@ -37,7 +37,7 @@
#define HYBRID_GRAPHICS_LABEL _("Hybrid graphics")
#define FIX_GAP_LABEL _("Fix frame gap (nVidia)")
#define EXTRA_LABEL _("Extra")
#define TITLE_LABEL _("UBlinux Video Configuration")
#define TITLE_LABEL _("UBLinux Video Configuration")
#define LOAD_LABEL _("Load")
#define SAVE_LABEL _("Save")
#define ON_LABEL _("On")
@ -60,13 +60,25 @@
#define CANCEL_LABEL _("Cancel")
#define ACCEPT_LABEL _("Accept")
#define DONT_USE_LABEL _("Don't use")
#define PROPRIETARY_LOADING_LABEL _("Driver list is currently loading...")
#define PROPRIETARY_LOADING_FAILED_LABEL _("Driver list is failed to load.")
#define PROPRIETARY_DELETING_IN_PROGRESS_LABEL _("Deleting driver...")
#define PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL _("Installing driver...")
#define PROPRIETARY_OPETAION_DONE_LABEL _("Driver operation is done.")
#define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.")
#define PROPRIETARY_USE_LOCAL_LABEL _("Failed to load available drivers for your system... Installed driver list is shown.")
#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?")
#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is translated and supported by community.")
#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation")
#define INFORMATION_LABEL _("Information")
#define DRIVERS_LABEL _("Drivers")
#define MAIN_SETTINGS_LABEL _("Main settings")
#define DEVICES_DRIVERS_LABEL _("Devices and drivers")
#define DRIVER_MODULES_LABEL _("Driver modules")
#define READ_DOCUMENTATION_LABEL _("Read documentation")
#define WEB_VIEW_TITLE_LABEL _("UBLinux Settings Web View")
#define MONITOR_POSITION_LEFT_PARAMETER "lo:"
#define MONITOR_POSITION_RIGHT_PARAMETER "ro:"

@ -18,9 +18,7 @@ void on_subwindow_close(GtkWidget *self)
void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*);
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){
videoconfig.status_render.text_to_render=MONITOR_PORT_ERROR_LABEL;
videoconfig.status_render.type=BACKGROUND_IMAGE_FAIL_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
config->main=0;
@ -33,10 +31,8 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
config->position_port=NULL;
config->port=NULL;
config->resolution=NULL;
config->frequency=NULL;
videoconfig.status_render.text_to_render=MONITOR_PORT_SUCCESS_LABEL;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
config->frequency=0;
yon_ubl_status_box_render(videoconfig.status_render,MONITOR_PORT_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
config->port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPortCombo));
window->config->key = yon_char_new(config->port);
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->templateMonitorConfigurationParameterLineCheck))==0){
@ -52,6 +48,8 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
config->position_port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPositionPortCombo));
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo))>0)
config->frequency=gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo));
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
config->resolution =yon_char_divide_search((char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)),";",-1);
int rotation = gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationRotationCombo));
@ -87,6 +85,7 @@ void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){
gtk_widget_destroy(widgets->TerminalRevealer);
yon_proprieary_get();
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
@ -162,48 +161,59 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){
}
void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
} else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_driver_install(GtkWidget *self,widgets_dict *widgets){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_INSTALLING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,2,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
} else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
if(gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
} else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,2,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
} else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){
@ -215,9 +225,12 @@ void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name));
} else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_driver_info(GtkWidget *self,widgets_dict *widgets){
@ -229,10 +242,12 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
gtk_tree_model_get(list_s,&iter,2,&name,-1);
pthread_create(&tid,&attr,(void*)yon_launch_app,yon_char_get_augumented(get_info_proprietary_command,name));
} else {
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
@ -311,11 +326,11 @@ char *yon_configuration_get_save_command(char *command){
str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL);
}
if (strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0)
if (videoconfig.optirun&&strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0)
str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=","\"",videoconfig.optirun,"\"",NULL));
else
str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=\"\"",NULL));
if (strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0)
if (videoconfig.primusrun&&strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0)
str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=","\"", videoconfig.primusrun,"\"",NULL));
else
str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL));
@ -378,21 +393,14 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets)
// }
if (str){
yon_config_save(str);
videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
// else
// yon_ubl_status_box_render(widgets->mainStatusBox, widgets->mainStatusIcon, widgets->mainStatusLabel, _("Local configuration saving failed."), BACKGROUND_IMAGE_FAIL_TYPE);
}
void on_configuration_save_local_global(GtkWidget *self, widgets_dict *widgets)
{
on_configuration_save_global_local(self, widgets);
videoconfig.status_render.text_to_render=GLOBAL_LOCAL_SAVE_SUCCESS;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
yon_ubl_status_box_render(videoconfig.status_render,GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets)
@ -403,10 +411,7 @@ void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets)
str=yon_configuration_get_save_command(save_drivers_global_local_command);
if (str){
yon_config_save(str);
videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
}
@ -422,17 +427,18 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets)
// }
if (str){
yon_config_save(str);
videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
}
void yon_update_config(widgets_dict *widgets)
{
{
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchOptirunCheck))==1)
videoconfig.optirun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchOptirunEntry)));
else videoconfig.optirun = NULL;
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchPrismusunCheck))==1)
videoconfig.primusrun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchPrismusunEntry)));
else videoconfig.primusrun = NULL;
videoconfig.failsafenVidia = yon_char_new( gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo)));
videoconfig.failsafeATI = yon_char_new( gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo)));
}
@ -488,6 +494,17 @@ void on_monitor_add(GtkWidget *self,monitor_window *window){
}
}
void on_proprietary_get(GtkWidget *notebook, GtkWidget *page, int pagen, gpointer data){
if (pagen==1){
GtkTreeIter iter;
if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(videoconfig.list),&iter)){
pthread_t tid;
pthread_create(&tid,NULL,(void*)yon_proprieary_get,NULL);
}
}
}
void on_monitor_configure(GtkWidget *self,monitor_window *window){
if(window&&window->config){
monitor_edit_window *monitors = new(monitor_edit_window);
@ -584,6 +601,47 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
}
}
void on_read_documentation(GtkWidget *self,gpointer user_data){
yon_ubl_browser_window_open(UBLINUX_WIKI_LINK,WEB_VIEW_TITLE_LABEL);
}
void on_toggle(GtkWidget *self, int *changing_var){
*changing_var = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
}
void on_link(GtkWidget *self, char* link, gpointer user_data){
if (GTK_IS_ABOUT_DIALOG(self)){
gtk_widget_destroy(self);
}
if (videoconfig.alwaysredirect==0){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow");
GtkWidget *readButton=yon_gtk_builder_get_widget(builder,"ReadHelpButton");
GtkWidget *cancelButton=yon_gtk_builder_get_widget(builder,"CancelHelpButton");
GtkWidget *titleLabel=yon_gtk_builder_get_widget(builder,"helpHeader");
GtkWidget *headQuestionLabel=yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
GtkWidget *textLabel=yon_gtk_builder_get_widget(builder,"helpText");
GtkWidget *alwaysOpenCheck=yon_gtk_builder_get_widget(builder,"AlwaysOpenHelpCheckbox");
g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_read_documentation),NULL);
g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(cancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(alwaysOpenCheck),"toggled",G_CALLBACK(on_toggle),&videoconfig.alwaysredirect);
gtk_label_set_text(GTK_LABEL(titleLabel),SETTINGS_VIDEO_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(headQuestionLabel),HELP_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(textLabel),HELP_INFO_LABEL);
gtk_button_set_label(GTK_BUTTON(alwaysOpenCheck),HELP_ALWAYS_OPEN_LABEL);
gtk_button_set_label(GTK_BUTTON(readButton),READ_DOCUMENTATION_LABEL);
gtk_button_set_label(GTK_BUTTON(cancelButton),MONITOR_CANCEL_LABEL);
gtk_widget_show(sureWindow);
}else {
on_read_documentation(NULL,NULL);
}
}
/**void on_about()
* [EN]
*/
@ -594,8 +652,9 @@ void on_about()
GtkWidget *hideButtonBox = yon_gtk_builder_get_widget(builder, "buttonBoxHide");
gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window), _("UBlinux Video Configuration"));
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), version_application);
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window), _("Progect Home Page"));
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window), _("Project Home Page"));
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window), _("Videocard and monitor configuration manager"));
g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL);
gtk_widget_set_visible(hideButtonBox, 0);
gtk_widget_show(window);
}
@ -611,6 +670,7 @@ void yon_monitor_window_update(monitor_edit_window *window){
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),PARAMETER_DEFAULT_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),"60");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),"75");
gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationFrequencyCombo),0);
found = yon_gtk_combo_box_text_find(window->templateMonitorConfigurationPositionPortCombo, yon_dictionary_get_data(window->config,monitorconfig*)->position_port);
if (found==-1)
found=0;
@ -692,9 +752,14 @@ void yon_monitor_view_update(){
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,""));
monitorconfig *params=yon_dictionary_get_data(yon_dictionary_get_data(dict,monitor_window*)->config,monitorconfig*);
gtk_widget_set_sensitive(yon_dictionary_get_data(dict,monitor_window*)->templateMonitorImage,params->enable);
if (config->resolution)
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),config->resolution);
else if (params->stringparameters){
if (config->resolution){
char *freq="";
if (config->frequency>0){
if (config->frequency==1) freq ="60";
else if (config->frequency==2) freq="75";
}
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),yon_char_unite(config->resolution,":",freq,NULL));
}else if (params->stringparameters){
int size=0;
config_str rtn=yon_char_parse(params->stringparameters,&size,",");
char *res=yon_char_divide_search(yon_char_new(yon_char_parsed_get_resolution(rtn,size))," ",-1);
@ -845,15 +910,15 @@ char *yon_monitor_make_string(monitorconfig* config)
char *frequency="";
if (config->frequency)
if (first==1){
frequency=config->frequency;
first=0;
}else{
frequency=yon_char_get_augumented(",",config->frequency);
}
if (config->frequency){
if (config->frequency==1) frequency="x60";
else if (config->frequency==2) frequency="x75";
}
if (strcmp(resolution,"")!=0)
resolution=yon_char_get_augumented(resolution,frequency);
char *stringparameters=yon_char_unite("",main,resolution,frequency,enable,position,rotation,dpms,cvt,reduced,gtf,NULL);
char *stringparameters=yon_char_unite("",main,resolution,enable,position,rotation,dpms,cvt,reduced,gtf,NULL);
config->stringparameters=yon_char_new(stringparameters);
}
@ -917,6 +982,7 @@ void on_config_fill_interface(widgets_dict *widgets)
* [EN]
*/
dictionary *yon_proprieary_get(){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
videoconfig.proprietary=NULL;
int drivers_size=0;
config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size);
@ -926,16 +992,46 @@ dictionary *yon_proprieary_get(){
drivers[drivers_found]=yon_char_divide_search(drivers[drivers_found],"\n",-1);
for (int i=0;i<size;i++){
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1);
char *key=yon_char_new(rtn[i]);
if (key[0]==';')
yon_char_divide_search(key,";",-1);
key = yon_char_divide_search(key,";",-1);
char *keyp=yon_char_new(rtn[i]);
if (keyp[0]==';')
yon_char_divide_search(keyp,";",-1);
char *key = yon_char_divide_search(keyp,";",-1);
keyp = yon_char_divide_search(keyp,";",-1);
char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1);
if (strcmp(key,driver_name)==0)
if (strcmp(key,driver_name)==0||keyp)
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(drivers[drivers_found],rtn[i]);
else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]);
}
}
if (videoconfig.proprietary){
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else {
drivers=yon_config_load(get_proprietary_drivers_local_command,&drivers_size);
if (drivers){
printf("%s\n",drivers[0]);
for (int drivers_found=0;drivers_found<drivers_size;drivers_found++){
drivers[drivers_found]=yon_char_divide_search(drivers[drivers_found],"\n",-1);
for (int i=0;i<size;i++){
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1);
char *key=yon_char_new(rtn[i]);
if (key[0]==';')
yon_char_divide_search(key,";",-1);
key = yon_char_divide_search(key,";",-1);
char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1);
if (strcmp(key,driver_name)==0)
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(drivers[drivers_found],rtn[i]);
else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]);
}
}
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else
{
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
}
@ -943,16 +1039,26 @@ dictionary *yon_proprieary_get(){
* [EN]
*/
void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){
dictionary *dict=NULL;
gtk_list_store_clear(list);
for_dictionaries(dict,videoconfig.proprietary){
GtkTreeIter iter;
int size=0;
config_str str = yon_char_parse((char*)dict->data,&size,";");
gtk_list_store_append(list,&iter);
gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],-1);
if (strstr(dict->key," installed"))
gtk_list_store_set(list,&iter,0,1,-1);
if(videoconfig.proprietary){
dictionary *dict=NULL;
gtk_list_store_clear(videoconfig.list);
gtk_list_store_clear(videoconfig.list2);
for_dictionaries(dict,videoconfig.proprietary){
GtkTreeIter iter;
int size=0;
config_str str = yon_char_parse((char*)dict->data,&size,";");
printf("%s\n",str[0]);
if (strcmp(str[0],"")!=0&&str[0]){
gtk_list_store_append(videoconfig.list,&iter);
gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1);
}
else{
gtk_list_store_append(videoconfig.list2,&iter);
gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1);
}
if (strstr(dict->key," installed"))
gtk_list_store_set(videoconfig.list,&iter,0,1,-1);
}
}
}
@ -1064,7 +1170,6 @@ void yon_setup_config(char *configcommand)
for (int i=0;i<videoconfig.resolutionssize;i++){
videoconfig.resolutions[i]=yon_char_divide_search(videoconfig.resolutions[i],"\n",-1);
}
yon_proprieary_get();
}
/** monitor_config yon_monitor_config_new(char *port)
@ -1080,7 +1185,7 @@ monitor_config yon_monitor_config_new(char *port){
monitor->position_port=NULL;
monitor->resolution=NULL;
monitor->resolutionCapabilities=NULL;
monitor->frequency=NULL;
monitor->frequency=0;
monitor->rotation=0;
monitor->stringparameters=NULL;
monitor->dpms=0;
@ -1149,6 +1254,7 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_
}
}
char *yon_char_parsed_get_resolution(config_str parsed_string, int size){
char *left=NULL, *right=NULL, *freq=NULL;
for (int i=0;i<size;i++){
@ -1261,15 +1367,15 @@ void yon_adapter_window_setup(widgets_dict *widgets){
"\n<span weight='bold' color='#1a5fb4'>",USED_KERNEL_DRIVER_LABEL,":</span> ",driver_use,
"\n<span weight='bold' color='#1a5fb4'>",AVALIABLE_KERNEL_DRIVERS_LABEL,":</span> ",driver_all,"</span>",NULL);
gtk_label_set_markup(GTK_LABEL(gtk_builder_get_object(widgets->builder,"InformationLabel")),final_text);
if (strcmp(vendor,"Intel Corporation")==0){
if (strstr(vendor,"Intel")){
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
}
else if (strcmp(vendor,"NVidia Corporation")==0){
else if (strstr(vendor,"NVidia")){
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
}
else if (strcmp(vendor,"AMD Corporation")==0){
else if (strstr(vendor,"AMD")){
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.amd-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
}
@ -1365,6 +1471,7 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton");
widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton");
widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay");
widgets->MenusTab = yon_gtk_builder_get_widget(widgets->builder, "MenusTab");
widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection"));
widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn"));
@ -1388,11 +1495,15 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->driverDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDescriptionColumn"));
widgets->driverSupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverSupportedColumn"));
gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL);
videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore6"));
videoconfig.list2 = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore1"));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->proprietaryTreeView),GTK_TREE_MODEL(videoconfig.list));
g_signal_connect(G_OBJECT(widgets->MenusTab), "switch-page", G_CALLBACK(on_proprietary_get), widgets);
g_signal_connect(G_OBJECT(widgets->proprietaryDeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets);
g_signal_connect(G_OBJECT(widgets->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets);
g_signal_connect(G_OBJECT(widgets->proprietaryInfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
@ -1414,7 +1525,7 @@ void yon_setup_widgets(widgets_dict *widgets)
// g_signal_connect(G_OBJECT(widgets->extraPrimusunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets);
g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsAboutMenuItem), "activate", G_CALLBACK(on_about), NULL);
g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsDocumentationMenuItem), "activate", G_CALLBACK(on_about), NULL);
g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsDocumentationMenuItem), "activate", G_CALLBACK(on_link), NULL);
g_signal_connect(G_OBJECT(widgets->mainHeaderLoadGlobalMenuItem), "activate", G_CALLBACK(on_configuration_load_global), widgets);
g_signal_connect(G_OBJECT(widgets->mainHeaderLoadLocalMenuItem), "activate", G_CALLBACK(on_configuration_load_local), widgets);
@ -1572,13 +1683,10 @@ int main(int argc, char *argv[])
yon_setup_config(load_drivers_local_command);
widgets_dict widgets;
yon_setup_widgets(&widgets);
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
// yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
// yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist);
gtk_widget_show(widgets.MainWindow);
// yon_fill_ui(&widgets);
videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
yon_ubl_status_box_render(&videoconfig.status_render);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
on_config_fill_interface(&widgets);
yon_monitor_set_resolutions();
yon_adapter_window_setup(&widgets);

@ -1,5 +1,9 @@
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include "ubl-settings-video-cm.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#include <vte-2.91/vte/vte.h>
#include <locale.h>
#include <stdio.h>
@ -16,6 +20,8 @@
#ifndef UBL_SETINGS_VIDEO_H
#define UBL_SETINGS_VIDEO_H
#define UBLINUX_WIKI_LINK " https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-video"
#define icon_name "com.ublinux.ubl-settings-video"
#define banner_path "/usr/share/ubl-settings-video/images/ubl-settings-video-banner.png"
@ -66,6 +72,7 @@
#define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2"
#define get_proprietary_drivers_command "LC_ALL=C pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
#define get_proprietary_drivers_local_command "LC_ALL=C pacman -Qq |grep -E \"ubm-nvidia-\""
// #define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
@ -83,7 +90,7 @@ char *local;
typedef char *string;
string version_application = "1.0";
string version_application = "1.6";
#define _(String) gettext(String)
@ -101,6 +108,7 @@ typedef struct {
typedef struct
{
int alwaysredirect;
config_str loaded_config;
int configsize;
int autoChooseDrivers;
@ -109,6 +117,7 @@ typedef struct
proprietary_config proprietary;
dictionary *supported_resolutions;
GtkListStore *list;
GtkListStore *list2;
char *failsafenVidia;
char *failsafeATI;
int descreteOnly;
@ -139,7 +148,7 @@ typedef struct
char *port;
char *resolution;
config_str resolutionCapabilities;
char *frequency;
int frequency;
int rotation;
char *stringparameters;
int dpms;
@ -272,6 +281,8 @@ typedef struct
GtkWidget *PlugBox;
GtkWidget *PlugSaveBox;
GtkWidget *PlugLoadBox;
GtkWidget *MenusTab;
} widgets_dict;
typedef struct

@ -0,0 +1 @@
#cmakedefine WEBKIT_FOUND

@ -853,98 +853,6 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi
#endif
// dictionary *yon_gtk_app_chooser_create(GtkBuilder *builder){
// GtkWidget *chooserWindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);
// GtkWidget *Box=gtk_box_new(GTK_ORIENTATION_VERTICAL,5);
// GtkWidget *Frame=gtk_frame_new("");
// GtkWidget *Scroll=gtk_scrolled_window_new(NULL, gtk_adjustment_new(0,0,10000,1,10,100));
// GtkWidget *PackBox=gtk_box_new(GTK_ORIENTATION_VERTICAL,5);
// GtkWidget *ButtonsBox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
// GtkWidget *ButtonsPlaceBox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
// GtkWidget *CancelButton=gtk_button_new_with_label("Cancel");
// GtkWidget *AcceptButton=gtk_button_new_with_label("Accept");
// gtk_container_add(GTK_CONTAINER(chooserWindow),Box);
// gtk_box_pack_start(GTK_BOX(Box),Frame,1,1,0);
// gtk_container_add(GTK_CONTAINER(Frame),PackBox);
// gtk_box_pack_start(GTK_BOX(Box),ButtonsBox,0,0,0);
// gtk_box_pack_end(GTK_BOX(ButtonsBox),ButtonsPlaceBox,0,0,0);
// gtk_box_pack_end(GTK_BOX(ButtonsPlaceBox),AcceptButton,0,0,0);
// gtk_box_pack_end(GTK_BOX(ButtonsPlaceBox),CancelButton,0,0,0);
// gtk_box_pack_start(GTK_BOX(PackBox),(GtkWidget*)yon_gtk_app_chooser_apps_create(builder),0,0,0);
// gtk_widget_show_all(chooserWindow);
// }
/**
* yon_iv_segment_create:
* connect_to - dictionary, in the end of which new one will be connected;
* name - name of this segment, renders on label;
* categories - desktop file categories that application NEEDS to have to render in that category;
* segment_icon_name - icon name for this section;
* builder - newly allocated builder with glade file connected where template widgets are stored:
* - templateAppsIconView - setted up icon view;
* - templateAppsPack - setted up container for every template widget;
* - templateAppsImage - image for rendering section image;
* - templateAppsLabel - label for rendering section name;
*/
// dictionary *yon_iv_segment_create(dictionary *connect_to, char *name, char *categories, char *segment_icon_name){
// IVSegment *segment=malloc(sizeof(IVSegment));
// segment->name=name;
// segment->categories=categories;
// GtkBuilder *builder=gtk_builder_new_from_string(return_app_string(),-1);
// GtkWidget *iv=yon_gtk_builder_get_widget(builder,"templateAppsIconView");
// GtkWidget *expander=yon_gtk_builder_get_widget(builder,"templateAppsPack");
// GtkWidget *image=yon_gtk_builder_get_widget(builder,"templateAppsImage");
// GtkWidget *label=yon_gtk_builder_get_widget(builder,"templateAppsLabel");
// GtkIconTheme *theme=gtk_icon_theme_get_default();
// gtk_image_set_from_pixbuf(GTK_IMAGE(image),gtk_icon_theme_load_icon_for_scale(theme,segment_icon_name,20,1,GTK_ICON_LOOKUP_FORCE_SVG,NULL));
// gtk_label_set_text(GTK_LABEL(label),name);
// GtkListStore *ls=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore5"));
// // g_signal_connect(G_OBJECT(iv), "item-activated", G_CALLBACK(on_activate), videoconfig.applist);
// segment->Expander=expander;
// segment->IV=iv;
// segment->LS=ls;
// segment->Image=image;
// dictionary *dict=NULL;
// if (connect_to) {
// // connect_to=yon_dictionary_get_last(connect_to);
// dict=yon_dictionary_create_with_data_connected(connect_to,name,segment);
// } else
// dict=yon_dictionary_create_with_data(name,segment);
// return dict;
// }
// GtkWidget *yon_gtk_app_chooser_apps_create(){
// GtkWidget *Box=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
// dictionary *IVS=yon_iv_segment_create(NULL, "Graphics", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Tools", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Internet", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Multimedia", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Settings", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Education", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Office", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Other", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "Development", "", "dialog-yes-symbolic");
// yon_iv_segment_create(IVS, "System", "", "dialog-yes-symbolic");
// dictionary *nd;
// for_dictionaries(nd,IVS){
// gtk_box_pack_start(GTK_BOX(Box),((IVSegment*)nd->data)->Expander,0,0,0);
// }
// return Box;
// }
// GtkWidget *yon_gtk_socket_create_new_with_connect(GtkWidget *container, gpointer data){
// GtkWidget *socket;
// socket = gtk_socket_new();
// g_signal_connect(G_OBJECT(socket),"plug-added",G_CALLBACK(yon_on_plug_added),data);
// g_signal_connect(G_OBJECT(socket),"plug-removed",G_CALLBACK(yon_on_plug_removed),data);
// g_signal_connect(G_OBJECT(socket),"destroy",G_CALLBACK(yon_on_plug_removed),data);
// gtk_box_pack_start(GTK_BOX(container),socket,1,1,0);
// return socket;
// };
int yon_gtk_combo_box_fill(GtkWidget *combo, config_str parameters,int size){
if (combo&&parameters){
for (int i=0;i<size;i++){
@ -994,6 +902,9 @@ void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image
gtk_image_set_from_file(GTK_IMAGE(Image), image_path);
}
/**
*
*/
void _yon_ubl_status_box_render(render_data *datav)
{
render_data data = *(render_data*)datav;
@ -1018,13 +929,26 @@ void _yon_ubl_status_box_render(render_data *datav)
}
if (data.text_to_render)
gtk_label_set_text(GTK_LABEL(data.label), data.text_to_render);
else
for (int i=0;i<data.strings_size;i++){
gtk_label_set_text(GTK_LABEL(data.label),data.text_strings_to_render[i]);
sleep(2);
}
}
/**yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id)
* [EN]
* Set up plugs for using with GtkSockets insine ubl-settings-manager.
* [main_window] is container widget, which holds main application functionality.
* [left_window] is container widget, which holds widgets, have to be shown at left part of ubl-settings-manager header.
* [right_window] is container widget, which holds widgets, have to be shown at right part of ubl-settings-manager header.
* [socket_main_id] is id of socket for [main_window].
* [socket_left_id] is id of socket for [left_window].
* [socket_right_id] is id of socket for [right_window].
* [RU]
* Настраивает плаги для работы с сокетами в утилите ubl-settings-manager.
* [main_window] - контейнер основного интерфейса приложения.
* [left_window] - контейнер для виджетов которые должны отображаться в левой части шапки ubl-settings-manager.
* [right_window] - контейнер для виджетов которые должны отображаться в правой части шапки ubl-settings-manager.
* [socket_main_id] - id сокета для [main_window].
* [socket_left_id] - id сокета для [left_window].
* [socket_right_id] - id сокета для [right_window].
*/
void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id){
if (main_window&&socket_main_id>-1){
gtk_widget_hide(gtk_widget_get_toplevel(main_window));
@ -1063,4 +987,47 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
}
}
#ifdef WEBKIT_FOUND
/**yon_ubl_browser_window_open(char *link, char *browser_window_name)
* [EN]
* Launches integrated browser window, named [browser_window_name] at header with [link].
* [RU]
* Открывает встроенный браузер с именем [browser_window_name] и показываемой страницей по ссылке [link]
*/
void yon_ubl_browser_window_open(char *link, char *browser_window_name){
GtkWidget *browser=gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *web_place=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
GtkWidget *header=gtk_header_bar_new();
GtkWidget *header_label=gtk_label_new(browser_window_name);
GtkWidget *WebView=webkit_web_view_new();
gtk_container_add(GTK_CONTAINER(browser),web_place);
gtk_window_set_titlebar(GTK_WINDOW(browser),header);
gtk_window_set_title(GTK_WINDOW(browser),browser_window_name);
gtk_widget_set_size_request(browser,800,600);
gtk_header_bar_set_custom_title(GTK_HEADER_BAR(header),header_label);
gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header),1);
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),link);
gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0);
gtk_widget_show_all(browser);
}
#else
/**yon_ubl_browser_window_open(char *link, char *browser_window_name)
* [EN]
* Launches browser with [link].
* [browser_window_name] is't used. It's needed for compatibility with webkit version of that function.
* [RU]
* Открывает браузер со страницей по ссылке [link]
* [browser_window_name] не используется. Нужна для совместимости с webkit версией этой функции.
*/
void yon_ubl_browser_window_open(char *link, char *browser_window_name){
char *user=getenv("SUDO_USER");
if (!user)
user=getlogin();
char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL);
yon_launch_app(command);
}
#endif
#endif

@ -11,6 +11,10 @@
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include "ubl-settings-video-cm.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#define DesktopPath "/usr/share/applications/"
#define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next)
@ -65,7 +69,16 @@ typedef struct apps
typedef char** config_str;
// dictionary functions
/**yon_dictionary_get_data(dictionary, type)
* [EN]
* Gets data from dictionary.
* [dictionary] is dictionary, from which data should be extracted;
* [type] is type of data, [dictionary] contains.
* [RU]
* Возвращает данные из словаря.
* [dictionary] - словарь из которого достаются данные.
* [type] - тип данных, хранящихся в словаре [dictionary].
*/
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data)
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) if (!dict) dict=yon_dictionary_create_with_data(key,data); \
else dict=yon_dictionary_create_with_data_connected(dict,key,data);
@ -150,10 +163,20 @@ int yon_launch(thread_output *thread);
#ifdef __GTK_H__
#ifdef VTE_TERMINAL
/**
*
*/
void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument);
#endif
#define yon_gtk_builder_get_widget(obj, obj2) GTK_WIDGET(gtk_builder_get_object(obj, obj2))
/**yon_gtk_builder_get_widget(builder, widget_name)
* [EN]
* Returns GtkWidget from GtkBuilder *[builder].
* [builder] is GtkBuilder*;
* [widget_name] is id of widget;
*/
#define yon_gtk_builder_get_widget(builder, widget_name) GTK_WIDGET(gtk_builder_get_object(builder, widget_name))
typedef struct
{
@ -173,17 +196,11 @@ int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size);
int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find);
GtkWidget *yon_gtk_socket_create_new_with_connect(GtkWidget *container, gpointer data);
int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment);
int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding);
// uninitialised
void yon_on_plug_added(GtkSocket *self, gpointer user_data);
void yon_on_plug_removed(GtkSocket *self, gpointer user_data);
typedef enum
@ -198,21 +215,83 @@ typedef struct {
GtkWidget *box;
GtkWidget *label;
char* text_to_render;
char** text_strings_to_render;
int strings_size;
} render_data;
#define yon_ubl_status_box_render(render) {pthread_attr_t attr; pthread_attr_init(&attr); pthread_t tid; pthread_create(&tid,&attr,(void*)_yon_ubl_status_box_render,((void*)render)); }
/**yon_ubl_status_box_setup(render,icon,box,label)
* [EN]
* Sets up [render] structure of type render_data.
* [icon] is GtkImage widget of status box for showing status icons;
* [box] is GtkBox widget of status box for showing status color;
* [label] is GtkLabel widget of status box for showing status text;
* [RU]
* Настраивает структуру [render] типа render_data.
* [icon] - виджет типа GtkIcon в котором будут отображаться статусные иконки;
* [box] - виджет типа GtkBox в котором будет отображаться цвет статуса;
* [label] - виджет типа GtkLabel в котором будет отображаться текст статусного сообщения;
*/
#define yon_ubl_status_box_setup(render,icon,box,label) {render.icon=GTK_WIDGET(icon); render.box=GTK_WIDGET(box); render.label=GTK_WIDGET(label);}
/**yon_ubl_status_box_render(render,text,type)
* [EN]
* Renders message in status box;
* [render] is render_data structure of status box;
* [text] is text to be shown in status box;
* [type] if type of message. Can be BACKGROUND_IMAGE_FAIL_TYPE or BACKGROUND_IMAGE_SUCCESS_TYPE
* [RU]
* Отображает сообщение в статусном окне.
* [render] - структура типа render_data для нужного статусного окна;
* [text] - текст, отображаемый в статусном окне;
* [type] - тип сообщения. Может быть:
* BACKGROUND_IMAGE_FAIL_TYPE (красный фон,иконка - восклицательный знак)
* или
* BACKGROUND_IMAGE_SUCCESS_TYPE (Жёлтный фон, иконка - галка)
*/
#define yon_ubl_status_box_render(render,text,m_type) {render.text_to_render=text; render.type=m_type; pthread_attr_t attr; pthread_attr_init(&attr); pthread_t tid; pthread_create(&tid,&attr,(void*)_yon_ubl_status_box_render,((void*)&render)); }
#ifdef __cplusplus
/**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN]
* Sets up header of app.
* [overlay] is overlay for app header;
* [head] is box of header, which connects to [overlay]
* [image] is header background image;
* [imag_path] is path of image, shown in [image]
* [RU]
* Настраивает заголовок приложения.
* [overlay] - оверлей заголовка приложения;
* [head] - шапка заголовка, присоединяемая к [overlay]
* [image] - виджет картинки для заднего фона;
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay.gobj()), GTK_WIDGET(head.gobj()), GTK_WIDGET(image.gobj()), (char *)imag_path)
#else
/**yon_ubl_header_setup(overlay, head, image, imag_path)
* [EN]
* Sets up header of app.
* [overlay] is overlay for app header;
* [head] is box of header, which connects to [overlay]
* [image] is header background image;
* [imag_path] is path of image, shown in [image]
* [RU]
* Настраивает заголовок приложения.
* [overlay] - оверлей заголовка приложения;
* [head] - шапка заголовка, присоединяемая к [overlay]
* [image] - виджет картинки для заднего фона;
* [imag_path] - путь до картинки, загружаемой в [image]
*/
#define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path)
#endif
void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path);
void _yon_ubl_status_box_render(render_data *datav);
void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id);
#ifdef WEBKIT_FOUND
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#else
void yon_ubl_browser_window_open(char *link, char *browser_window_name);
#endif
#endif
#endif

@ -7,6 +7,203 @@
<object class="GtkSizeGroup" id="ConfigWindowFirst"/>
<object class="GtkSizeGroup" id="ConfigWindowSecond"/>
<object class="GtkSizeGroup" id="ConfigWindowThird"/>
<object class="GtkApplicationWindow" id="HelpSureWindow">
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="default-width">450</property>
<property name="default-height">250</property>
<property name="icon-name">dialog-question-symbolic</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">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="xpad">20</property>
<property name="ypad">20</property>
<property name="icon-name">dialog-question-symbolic</property>
<property name="icon_size">6</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="orientation">vertical</property>
<child>
<object class="GtkLabel" id="helpHeader">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="margin-top">10</property>
<property name="margin-bottom">5</property>
<property name="label" context="Would you like to read documentation in the Net?" comments="Would you like to read documentation in the Net?">Would you like to read documentation in the Web?</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="helpText">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin-right">10</property>
<property name="margin-end">10</property>
<property name="label" context="You will be redirected to documentation web site, where documentation are translated and supported by community." comments="You will be redirected to documentation web site, where documentation are translated and supported by community.">You will be redirected to documentation website where documentation is translated and supported by community.</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="AlwaysOpenHelpCheckbox">
<property name="label" translatable="yes">Always redirect to online documentation</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">end</property>
<property name="margin-bottom">10</property>
<property name="draw-indicator">True</property>
<style>
<class name="label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="fgnb"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="fgnb"/>
</style>
</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="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="spacing">30</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="CancelHelpButton">
<property name="label">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ReadHelpButton">
<property name="label">Read Online</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<style>
<class name="button"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="webHeaderNameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">UBLinux Settings</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">dialog-question-symbolic</property>
</object>
</child>
</object>
</child>
</object>
<object class="GtkImage" id="InformationCompanyLogoImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -108,6 +305,66 @@
</child>
</object>
<object class="GtkSizeGroup" id="ThirdColumnSizeGroup"/>
<object class="GtkWindow" id="Web_Window">
<property name="width-request">800</property>
<property name="height-request">558</property>
<property name="can-focus">False</property>
<property name="default-width">800</property>
<property name="default-height">558</property>
<property name="icon-name">ubconfig-gui</property>
<child>
<object class="GtkBox" id="Web_Place">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="LoaderHeaderNameLabel1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">UBLinux Settings Web View</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-manager</property>
<property name="icon_size">5</property>
</object>
</child>
</object>
</child>
<style>
<class name="bg"/>
<class name="noborder"/>
</style>
</object>
<object class="GtkAboutDialog" id="aboutWindow">
<property name="can-focus">False</property>
<property name="resizable">False</property>
@ -147,9 +404,6 @@
<property name="position">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="titlebar">
@ -1107,17 +1361,19 @@
<property name="can-focus">False</property>
<property name="icon-name">go-bottom-symbolic</property>
</object>
<object class="GtkListStore" id="liststore1"/>
<object class="GtkListStore" id="liststore2"/>
<object class="GtkListStore" id="liststore3"/>
<object class="GtkListStore" id="liststore4"/>
<object class="GtkListStore" id="liststore5">
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name GdkPixbuf1 -->
<column type="GdkPixbuf"/>
<!-- column-name gchararray1 -->
<!-- column-name is_installed -->
<column type="gboolean"/>
<!-- column-name package_module -->
<column type="gchararray"/>
<!-- column-name package -->
<column type="gchararray"/>
<!-- column-name driver -->
<column type="gchararray"/>
<!-- column-name gchararray2 -->
<!-- column-name description -->
<column type="gchararray"/>
<!-- column-name devices -->
<column type="gchararray"/>
</columns>
</object>
@ -1125,6 +1381,8 @@
<columns>
<!-- column-name is_installed -->
<column type="gboolean"/>
<!-- column-name package_module -->
<column type="gchararray"/>
<!-- column-name package -->
<column type="gchararray"/>
<!-- column-name driver -->
@ -1239,7 +1497,7 @@
</packing>
</child>
<child>
<object class="GtkNotebook">
<object class="GtkNotebook" id="MenusTab">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
@ -1780,6 +2038,7 @@
<property name="search-column">1</property>
<property name="enable-grid-lines">vertical</property>
<property name="enable-tree-lines">True</property>
<property name="tooltip-column">4</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
@ -1811,7 +2070,7 @@
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
@ -1826,7 +2085,7 @@
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">3</attribute>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
@ -1841,7 +2100,7 @@
<property name="wrap-width">220</property>
</object>
<attributes>
<attribute name="text">4</attribute>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>
@ -1946,11 +2205,11 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-top">5</property>
<property name="model">liststore6</property>
<property name="model">liststore1</property>
<property name="search-column">0</property>
<property name="enable-grid-lines">vertical</property>
<property name="enable-tree-lines">True</property>
<property name="tooltip-column">2</property>
<property name="tooltip-column">4</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
@ -1969,9 +2228,12 @@
<object class="GtkTreeViewColumn" id="driverPackageColumn">
<property name="title" translatable="yes">Package</property>
<child>
<object class="GtkCellRendererText"/>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">175</property>
</object>
<attributes>
<attribute name="text">1</attribute>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
@ -1982,7 +2244,7 @@
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
@ -1997,7 +2259,7 @@
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">3</attribute>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
@ -2012,7 +2274,7 @@
<property name="wrap-width">220</property>
</object>
<attributes>
<attribute name="text">4</attribute>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>

@ -10,43 +10,43 @@ msgstr ""
"Report-Msgid-Bugs-To: info@ublinux.com\n"
"POT-Creation-Date: 2023-05-10 15:53+0600\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-video.c:298 source/ubl-settings-video.c:354
#: source/ubl-settings-video.c:313 source/ubl-settings-video.c:369
#: source/ubl-settings-video-strings.h:62
msgid "Don't use"
msgstr ""
#: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40
#: source/ubl-settings-video.c:653
msgid "UBlinux Video Configuration"
msgstr ""
#: source/ubl-settings-video.c:583
msgid "Progect Home Page"
#: source/ubl-settings-video.c:655
msgid "Project Home Page"
msgstr ""
#: source/ubl-settings-video.c:584
#: source/ubl-settings-video.c:656
msgid "Videocard and monitor configuration manager"
msgstr ""
#: source/ubl-settings-video.h:27
#: source/ubl-settings-video.h:33
msgid "Failed to load global configuration"
msgstr ""
#: source/ubl-settings-video.h:28
#: source/ubl-settings-video.h:34
msgid "Failed to load local configuration"
msgstr ""
#: source/ubl-settings-video.h:30
#: source/ubl-settings-video.h:36
msgid "Saving to global configuration Succeeded"
msgstr ""
#: source/ubl-settings-video.h:31
#: source/ubl-settings-video.h:37
msgid "Saving to local configuration Succeeded"
msgstr ""
@ -248,6 +248,10 @@ msgstr ""
msgid "Extra"
msgstr ""
#: source/ubl-settings-video-strings.h:40
msgid "UBLinux Video Configuration"
msgstr ""
#: source/ubl-settings-video-strings.h:41
msgid "Load"
msgstr ""
@ -324,78 +328,150 @@ msgstr ""
msgid "Accept"
msgstr ""
#: source/ubl-settings-video-strings.h:63
msgid "Driver list is currently loading..."
msgstr ""
#: source/ubl-settings-video-strings.h:64
msgid "Information"
msgid "Driver list is failed to load."
msgstr ""
#: source/ubl-settings-video-strings.h:65
msgid "Drivers"
msgid "Deleting driver..."
msgstr ""
#: source/ubl-settings-video-strings.h:66
msgid "Main settings"
msgid "Installing driver..."
msgstr ""
#: source/ubl-settings-video-strings.h:67
msgid "Devices and drivers"
msgid "Driver operation is done."
msgstr ""
#: source/ubl-settings-video-strings.h:68
msgid "Nothing was selected."
msgstr ""
#: source/ubl-settings-video-strings.h:69
msgid ""
"Failed to load available drivers for your system... Installed driver list is "
"shown."
msgstr ""
#: source/ubl-settings-video-strings.h:71
msgid "Would you like to read documentation in the Web?"
msgstr ""
#: source/ubl-settings-video-strings.h:72
msgid ""
"You will be redirected to documentation website where documentation is "
"translated and supported by community."
msgstr ""
#: source/ubl-settings-video-strings.h:73
msgid "Always redirect to online documentation"
msgstr ""
#: source/ubl-settings-video-strings.h:74
msgid "Information"
msgstr ""
#: source/ubl-settings-video-strings.h:75
msgid "Drivers"
msgstr ""
#: source/ubl-settings-video-strings.h:76
msgid "Main settings"
msgstr ""
#: source/ubl-settings-video-strings.h:77
msgid "Devices and drivers"
msgstr ""
#: source/ubl-settings-video-strings.h:78
msgid "Driver modules"
msgstr ""
#: source/ubl-settings-video-strings.h:83
#: source/ubl-settings-video-strings.h:79
msgid "Read documentation"
msgstr ""
#: source/ubl-settings-video-strings.h:81
msgid "UBLinux Settings Web View"
msgstr ""
#: source/ubl-settings-video-strings.h:95
msgid "Error: Port must be chosen to save"
msgstr ""
#: source/ubl-settings-video-strings.h:84
#: source/ubl-settings-video-strings.h:96
msgid "Monitor configuration succeedeed"
msgstr ""
#: source/ubl-settings-video-strings.h:86
#: source/ubl-settings-video-strings.h:98
msgid "Global configuration loading succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:87
#: source/ubl-settings-video-strings.h:99
msgid "Local configuration loading succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:89
#: source/ubl-settings-video-strings.h:101
msgid "Local and global configuration saving succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:90
#: source/ubl-settings-video-strings.h:102
msgid "Global configuration saving succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:91
#: source/ubl-settings-video-strings.h:103
msgid "Local configuration saving succseeded."
msgstr ""
#: source/ubl-settings-video-strings.h:93
#: source/ubl-settings-video-strings.h:105
msgid "Yes"
msgstr ""
#: source/ubl-settings-video-strings.h:94
#: source/ubl-settings-video-strings.h:106
msgid "No"
msgstr ""
#: source/ubl-settings-video-strings.h:96
#: source/ubl-settings-video-strings.h:108
msgid "Description"
msgstr ""
#: source/ubl-settings-video-strings.h:97
#: source/ubl-settings-video-strings.h:109
msgid "Vendor"
msgstr ""
#: source/ubl-settings-video-strings.h:98
#: source/ubl-settings-video-strings.h:110
msgid "Model"
msgstr ""
#: source/ubl-settings-video-strings.h:99
#: source/ubl-settings-video-strings.h:111
msgid "Kernel driver in use"
msgstr ""
#: source/ubl-settings-video-strings.h:100
#: source/ubl-settings-video-strings.h:112
msgid "Kernel modules"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 340xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 390xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 470xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr ""

@ -17,36 +17,37 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-settings-video.c:298 source/ubl-settings-video.c:354
#: source/ubl-settings-video.c:313 source/ubl-settings-video.c:369
#: source/ubl-settings-video-strings.h:62
msgid "Don't use"
msgstr "Не использовать"
#: source/ubl-settings-video.c:581 source/ubl-settings-video-strings.h:40
#: source/ubl-settings-video.c:653
#, fuzzy
msgid "UBlinux Video Configuration"
msgstr "Видеокарта/Экран"
#: source/ubl-settings-video.c:583
msgid "Progect Home Page"
#: source/ubl-settings-video.c:655
msgid "Project Home Page"
msgstr "Домашняя страница проекта"
#: source/ubl-settings-video.c:584
#: source/ubl-settings-video.c:656
msgid "Videocard and monitor configuration manager"
msgstr "Настройка вывода изображения"
#: source/ubl-settings-video.h:27
#: source/ubl-settings-video.h:33
msgid "Failed to load global configuration"
msgstr "Ошибка загрузки глобальной конфигурации"
#: source/ubl-settings-video.h:28
#: source/ubl-settings-video.h:34
msgid "Failed to load local configuration"
msgstr "Ошибка загрузки локальной конфигурации"
#: source/ubl-settings-video.h:30
#: source/ubl-settings-video.h:36
msgid "Saving to global configuration Succeeded"
msgstr "Успешное сохранение глобальной конфигурации"
#: source/ubl-settings-video.h:31
#: source/ubl-settings-video.h:37
msgid "Saving to local configuration Succeeded"
msgstr "Успешное сохранение локальной конфигурации"
@ -76,35 +77,35 @@ msgstr "Аргументы:"
#: source/ubl-settings-video-strings.h:2
msgid "Show this help"
msgstr "Показать эту справку"
msgstr "Показать параметры справки"
#: source/ubl-settings-video-strings.h:2
msgid "Show package version"
msgstr "Показать версию пакета"
msgstr "Показать текущую версию"
#: source/ubl-settings-video-strings.h:2
msgid "Lock this help menu"
msgstr "Запретить вывод этой справки"
msgstr "Блокировка вызова справки"
#: source/ubl-settings-video-strings.h:2
#, fuzzy
msgid "Lock configration saving"
msgstr "Запретить сохранение конфигурации"
msgstr "Блокировка сохранения локальной и глобальной конфигурации"
#: source/ubl-settings-video-strings.h:2
#, fuzzy
msgid "Lock local configration saving"
msgstr "Запретить сохранение локальной конфигурации"
msgstr "Блокировка сохранения локальной конфигурации"
#: source/ubl-settings-video-strings.h:2
#, fuzzy
msgid "Lock global configration saving"
msgstr "Запретить сохранение глобальной конфигурации"
msgstr "Блокировка сохранения глобальной конфигурации"
#: source/ubl-settings-video-strings.h:2
#, fuzzy
msgid "Lock global configration loading"
msgstr "Запретить загрузку глобальной конфигурации"
msgstr "Блокировка загрузки глобальной конфигурации"
#: source/ubl-settings-video-strings.h:3
msgid "Default settings"
@ -254,6 +255,10 @@ msgstr "Исправить разрыв кадров (nVidia)"
msgid "Extra"
msgstr "Дополнительно"
#: source/ubl-settings-video-strings.h:40
msgid "UBLinux Video Configuration"
msgstr "Видеокарта/Экран"
#: source/ubl-settings-video-strings.h:41
msgid "Load"
msgstr "Загрузить"
@ -330,79 +335,136 @@ msgstr "Устройства"
msgid "Accept"
msgstr "Принять"
#: source/ubl-settings-video-strings.h:63
msgid "Driver list is currently loading..."
msgstr "Список драйверов загружается..."
#: source/ubl-settings-video-strings.h:64
msgid "Driver list is failed to load."
msgstr "Не удалось загрузить список драйверов"
#: source/ubl-settings-video-strings.h:65
msgid "Deleting driver..."
msgstr "Удаление драйвера..."
#: source/ubl-settings-video-strings.h:66
msgid "Installing driver..."
msgstr "Установка драйвера..."
#: source/ubl-settings-video-strings.h:67
msgid "Driver operation is done."
msgstr "Операция завершена"
#: source/ubl-settings-video-strings.h:68
msgid "Nothing was selected."
msgstr "Выберите драйвер."
#: source/ubl-settings-video-strings.h:69
msgid ""
"Failed to load available drivers for your system... Installed driver list is "
"shown."
msgstr ""
"Не удалось загрузить список драйверов, доступных для вашей системы. Выведен "
"список установленных драйверов."
#: source/ubl-settings-video-strings.h:71
msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-settings-video-strings.h:72
msgid ""
"You will be redirected to documentation website where documentation is "
"translated and supported by community."
msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи "
"переводятся и поддерживаются сообществом."
#: source/ubl-settings-video-strings.h:73
msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять"
#: source/ubl-settings-video-strings.h:74
msgid "Information"
msgstr "Информация"
#: source/ubl-settings-video-strings.h:65
#: source/ubl-settings-video-strings.h:75
msgid "Drivers"
msgstr "Драйвера"
#: source/ubl-settings-video-strings.h:66
#: source/ubl-settings-video-strings.h:76
msgid "Main settings"
msgstr "Основные настройки"
#: source/ubl-settings-video-strings.h:67
#: source/ubl-settings-video-strings.h:77
msgid "Devices and drivers"
msgstr "Устройства и драйвера"
#: source/ubl-settings-video-strings.h:68
#: source/ubl-settings-video-strings.h:78
msgid "Driver modules"
msgstr "Модули драйвера"
#: source/ubl-settings-video-strings.h:83
#: source/ubl-settings-video-strings.h:79
#, fuzzy
msgid "Read documentation"
msgstr "Справка"
#: source/ubl-settings-video-strings.h:81
msgid "UBLinux Settings Web View"
msgstr ""
#: source/ubl-settings-video-strings.h:95
msgid "Error: Port must be chosen to save"
msgstr "Ошибка: Выберите порт для сохранения"
#: source/ubl-settings-video-strings.h:84
#: source/ubl-settings-video-strings.h:96
msgid "Monitor configuration succeedeed"
msgstr "Настройки экрана сохранены"
#: source/ubl-settings-video-strings.h:86
#: source/ubl-settings-video-strings.h:98
msgid "Global configuration loading succseeded."
msgstr "Успешная загрузка глобальной конфигурации"
#: source/ubl-settings-video-strings.h:87
#: source/ubl-settings-video-strings.h:99
msgid "Local configuration loading succseeded."
msgstr "Успешная загрузка локальной конфигурации"
#: source/ubl-settings-video-strings.h:89
#: source/ubl-settings-video-strings.h:101
msgid "Local and global configuration saving succseeded."
msgstr "Успешное сохранение глобальной и локальной конфигурации"
#: source/ubl-settings-video-strings.h:90
#: source/ubl-settings-video-strings.h:102
msgid "Global configuration saving succseeded."
msgstr "Успешное сохранение глобальной конфигурации"
#: source/ubl-settings-video-strings.h:91
#: source/ubl-settings-video-strings.h:103
msgid "Local configuration saving succseeded."
msgstr "Успешная загрузка локальной конфигурации"
#: source/ubl-settings-video-strings.h:93
#: source/ubl-settings-video-strings.h:105
msgid "Yes"
msgstr "Да"
#: source/ubl-settings-video-strings.h:94
#: source/ubl-settings-video-strings.h:106
msgid "No"
msgstr "Нет"
#: source/ubl-settings-video-strings.h:96
#: source/ubl-settings-video-strings.h:108
msgid "Description"
msgstr "Описание"
#: source/ubl-settings-video-strings.h:97
#: source/ubl-settings-video-strings.h:109
msgid "Vendor"
msgstr "Производитель"
#: source/ubl-settings-video-strings.h:98
#: source/ubl-settings-video-strings.h:110
msgid "Model"
msgstr "Модель"
#: source/ubl-settings-video-strings.h:99
#: source/ubl-settings-video-strings.h:111
msgid "Kernel driver in use"
msgstr "Используемый драйвер ядра"
#: source/ubl-settings-video-strings.h:100
#: source/ubl-settings-video-strings.h:112
msgid "Kernel modules"
msgstr "Модули ядра"
@ -422,3 +484,16 @@ msgstr "Модули ядра"
#~ msgid "DPMS off"
#~ msgstr "DMPS выключен"
msgid "UBLinux module includes NVIDIA 340xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 340xx"
msgid "UBLinux module includes NVIDIA 390xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 390xx"
msgid "UBLinux module includes NVIDIA 470xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 470xx"
msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 510xx"

@ -1,8 +1,9 @@
VERSION_ID;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT
2204;ubm-nvidia-340;nvidia-340;Пакет с модулем драйвера и утилиты NVIDIA 340xx;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
2204;ubm-nvidia-390;nvidia-390;Пакет с модулем драйвера и утилиты NVIDIA 390xx;Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX
2204;ubm-nvidia-430;nvidia-430;Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
2204;ubm-nvidia-470;nvidia-470;Пакет с модулем драйвера и утилиты NVIDIA 470xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;ubm-nvidia-510;nvidia-510;Пакет с модулем драйвера и утилиты NVIDIA 510xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;ubm-nvidia-515;nvidia-515;Пакет с модулем драйвера и утилиты NVIDIA 515xx;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;ubm-nvidia-optimus;nvidia-optimus;Пакет с модулем включает в себя NVIDIA Optimus;
OS_VERSION_ID;DRV_PAСKAGE_UBM;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT
2204;ubm-nvidia-340;;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
2204;;nvidia-340xx-dkms;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
2204;ubm-nvidia-390;;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
2204;;nvidia-390xx-dkms;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
2204;ubm-nvidia-470;;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;;nvidia-470xx-dkms;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;ubm-nvidia-510;;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;;nvidia-510xx-dkms;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
1 VERSION_ID OS_VERSION_ID DRV_PAСKAGE_UBM DRV_PAСKAGE DRV_NAME DRV_DESCRIPTION DRV_SUPPORT
2 2204 2204 ubm-nvidia-340 ubm-nvidia-340 nvidia-340 Пакет с модулем драйвера и утилиты NVIDIA 340xx UBLinux module includes NVIDIA 340xx driver and utilities Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
3 2204 2204 ubm-nvidia-390 nvidia-340xx-dkms nvidia-390 nvidia-340 Пакет с модулем драйвера и утилиты NVIDIA 390xx UBLinux module includes NVIDIA 340xx driver and utilities Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
4 2204 2204 ubm-nvidia-390 ubm-nvidia-430 nvidia-430 nvidia-390 Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты UBLinux module includes NVIDIA 390xx driver and utilities Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
5 2204 2204 ubm-nvidia-470 nvidia-390xx-dkms nvidia-470 nvidia-390 Пакет с модулем драйвера и утилиты NVIDIA 470xx UBLinux module includes NVIDIA 390xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
6 2204 2204 ubm-nvidia-470 ubm-nvidia-510 nvidia-510 nvidia-470 Пакет с модулем драйвера и утилиты NVIDIA 510xx UBLinux module includes NVIDIA 470xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
7 2204 2204 ubm-nvidia-515 nvidia-470xx-dkms nvidia-515 nvidia-470 Пакет с модулем драйвера и утилиты NVIDIA 515xx UBLinux module includes NVIDIA 470xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
8 2204 2204 ubm-nvidia-510 ubm-nvidia-optimus nvidia-optimus nvidia-510 Пакет с модулем включает в себя NVIDIA Optimus UBLinux module includes NVIDIA 510xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
9 2204 nvidia-510xx-dkms nvidia-510 UBLinux module includes NVIDIA 510xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
Loading…
Cancel
Save