python paparazzi center tools impovement (#2445)
* [Python supervision] Change tool Menu. #2093 * [Python supervision] Adds tool icons. * [Python supervision] Separates tools from control panel. * [Python supervision] Adds blacklist feature. * [Python supervision] Clean test code. * [Python supervision] Allows tools override. * [Python supervision] Removes useless constants. * [Tools] Adds script to convert old xml tools format to the new one. * [Python supervision] Handles new tools definition. * Reduce diff with master * [tools] adds reference to icons in tools xmls.
@@ -7,7 +7,7 @@
|
||||
<!--program name="Server" command="sw/ground_segment/tmtc/server">
|
||||
<arg flag="-b" constant="192.168.1.255:2010"/>
|
||||
</program>
|
||||
<program name="GCS" command="sw/ground_segment/cockpit/gcs">
|
||||
<program name="GCS" command="sw/ground_segment/cockpit/gcs" icon="gcs.svg" favorite="True">
|
||||
<arg flag="-layout" constant="large_left_col.xml"/>
|
||||
<arg flag="-osm"/>
|
||||
</program-->
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<program command="sw/ground_segment/cockpit/gcs" name="GCS">
|
||||
<program command="sw/ground_segment/cockpit/gcs" name="GCS" icon="gcs.svg" favorite="true">
|
||||
<arg constant="large_left_col.xml" flag="-layout" />
|
||||
</program>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<program command="sw/ground_segment/joystick/input2ivy" name="Joystick">
|
||||
<program command="sw/ground_segment/joystick/input2ivy" name="Joystick" icon="joystick.svg">
|
||||
<arg constant="@AIRCRAFT" flag="-ac" />
|
||||
<arg flag="xbox_gamepad.xml" />
|
||||
</program>
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<program command="sw/logalizer/logplotter" name="Log Plotter" />
|
||||
<program command="sw/logalizer/logplotter" name="Log Plotter" icon="plotter.svg"/>
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<program command="sw/ground_segment/misc/natnet2ivy" name="NatNet" />
|
||||
<program command="sw/ground_segment/misc/natnet2ivy" name="NatNet" icon="natnet.svg"/>
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<program command="sw/ground_segment/python/natnet3.x/natnet2ivy.py" name="NatNet3" />
|
||||
<program command="sw/ground_segment/python/natnet3.x/natnet2ivy.py" name="NatNet3" icon="natnet3.svg" />
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<program command="sw/logalizer/plotter" name="Real-time Plotter" />
|
||||
<program command="sw/logalizer/plotter" name="Real-time Plotter" icon="plotter.svg"/>
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<program command="sw/ground_segment/python/real_time_plot/realtimeplotapp.py" name="Real-time Plotter (Python)" />
|
||||
<program command="sw/ground_segment/python/real_time_plot/realtimeplotapp.py" name="Real-time Plotter (Python)" icon="plotter_python.svg"/>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<program command="sw/simulator/pprzsim-launch" name="Simulator">
|
||||
<program command="sw/simulator/pprzsim-launch" name="Simulator" icon="simulator.png">
|
||||
<arg constant="@AIRCRAFT" flag="-a" />
|
||||
</program>
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="60"
|
||||
height="60"
|
||||
viewBox="0 0 60.000001 60.000001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="gcs.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient5611"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5613" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="34.116437"
|
||||
inkscape:cy="36.947784"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-992.36216)">
|
||||
<path
|
||||
style="fill:#c6e9af;fill-rule:evenodd;"
|
||||
d="M 0.00552427,992.352 0,1052.3661 l 60.015625,0 0,-59.99222 z"
|
||||
id="path4142"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#80b3ff;fill-rule:evenodd"
|
||||
d="m 60.006697,1017.9755 c -14.189295,-4.9806 -28.403195,-2.5039 -34.136363,5.8994 -5.733168,8.4034 -9.546506,22.5293 7.330843,28.4756 l 26.636006,0.02 z"
|
||||
id="path3336"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="czccc" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#aa0040;stroke-width:1.255;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4165"
|
||||
cx="24.616156"
|
||||
cy="1027.2157"
|
||||
rx="17.771315"
|
||||
ry="18.213257" />
|
||||
<path
|
||||
style="fill:#ff6600;fill-rule:evenodd;stroke:#004a0b;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 20.417708,996.41234 35.708893,23.51126 0,0 0,0 0,0"
|
||||
id="path5617"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#ff6600;stroke:#004a0b;stroke-width:1.18065214;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5621"
|
||||
width="1.1645379"
|
||||
height="1.2265272"
|
||||
x="-573.12646"
|
||||
y="650.15668"
|
||||
transform="matrix(0.60083109,-0.79937601,0.56046237,0.82817989,0,0)" />
|
||||
<rect
|
||||
style="fill:#ff6600;stroke:#004a0b;stroke-width:1.08908677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5621-3"
|
||||
width="1.0759317"
|
||||
height="1.1296064"
|
||||
x="-573.2724"
|
||||
y="706.99121"
|
||||
transform="matrix(0.62625458,-0.77961863,0.58603841,0.81028327,0,0)" />
|
||||
<rect
|
||||
style="fill:#ff6600;stroke:#aa0040;stroke-width:1.08908677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5621-3-6"
|
||||
width="1.0759317"
|
||||
height="1.1296064"
|
||||
x="-604.40564"
|
||||
y="685.46643"
|
||||
transform="matrix(0.62625458,-0.77961863,0.58603841,0.81028327,0,0)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="60mm"
|
||||
height="60mm"
|
||||
viewBox="0 0 212.59843 212.59842"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="joystick.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="89.19507"
|
||||
inkscape:cy="97.81045"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-839.76378)">
|
||||
<rect
|
||||
style="fill:#ff5555;fill-opacity:1;stroke:#ff5555;stroke-width:22.45006943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4152"
|
||||
width="6.0523648"
|
||||
height="15.252442"
|
||||
x="44.584351"
|
||||
y="984.24414" />
|
||||
<rect
|
||||
style="fill:#9da8b5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4144"
|
||||
width="18.400154"
|
||||
height="83.987801"
|
||||
x="96.613365"
|
||||
y="886.76813" />
|
||||
<ellipse
|
||||
style="fill:#ff5555;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4142"
|
||||
cx="105.81346"
|
||||
cy="869.85187"
|
||||
rx="26.858292"
|
||||
ry="25.522793" />
|
||||
<ellipse
|
||||
style="fill:#2c5aa0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4146"
|
||||
cx="105.81346"
|
||||
cy="999.69165"
|
||||
rx="40.341286"
|
||||
ry="32.955318" />
|
||||
<rect
|
||||
style="fill:#729bd9;fill-opacity:1;stroke:#729bd9;stroke-width:20.78569603;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4150"
|
||||
width="157.08221"
|
||||
height="41.051701"
|
||||
x="27.272345"
|
||||
y="992.50067" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="60mm"
|
||||
height="60mm"
|
||||
viewBox="0 0 212.59843 212.59842"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="natnet.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2"
|
||||
inkscape:cx="-20.178352"
|
||||
inkscape:cy="110.68655"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-839.76378)">
|
||||
<rect
|
||||
style="fill:#f4fad2;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4234"
|
||||
width="212.60373"
|
||||
height="212.60242"
|
||||
x="0"
|
||||
y="839.76453"
|
||||
ry="40.5"
|
||||
rx="41.000004" />
|
||||
<ellipse
|
||||
style="fill:#f3a0a0;fill-opacity:1;stroke:#ec6767;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168"
|
||||
cx="331.97409"
|
||||
cy="929.93909"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<ellipse
|
||||
style="fill:#a0f3a3;fill-opacity:1;stroke:#139417;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168-5"
|
||||
cx="317.31598"
|
||||
cy="949.04773"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<ellipse
|
||||
style="fill:#f3a0a0;fill-opacity:1;stroke:#ea5b5b;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168-3"
|
||||
cx="287.89499"
|
||||
cy="939.74615"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<ellipse
|
||||
style="fill:#a0f3a3;fill-opacity:1;stroke:#139417;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168-56"
|
||||
cx="302.39594"
|
||||
cy="920.62213"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:4.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 80.033849,992.35893 -48.604334,-104.31604 0,0"
|
||||
id="path4236"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:4.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 102.8485,864.29323 79.867532,992.27956"
|
||||
id="path4238"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:3.95667362;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 103.52464,919.03102 79.814548,992.34254"
|
||||
id="path4240"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:4.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 79.991454,991.90456 89.007066,-113.13709 0,0"
|
||||
id="path4242"
|
||||
inkscape:connector-curvature="0" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244"
|
||||
cx="167.23438"
|
||||
cy="880.25281"
|
||||
rx="3.8906219"
|
||||
ry="3.7343719" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244-2"
|
||||
cx="102.65626"
|
||||
cy="865.87781"
|
||||
rx="2.9374986"
|
||||
ry="2.9062486" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244-9"
|
||||
cx="31.312502"
|
||||
cy="888.48718"
|
||||
rx="3.2656233"
|
||||
ry="2.8593733" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244-1"
|
||||
cx="102.69675"
|
||||
cy="921.44513"
|
||||
rx="3.8124182"
|
||||
ry="3.4222531" />
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#38383a;stroke-width:5.83041477;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4166"
|
||||
width="136.19814"
|
||||
height="64.277"
|
||||
x="774.3078"
|
||||
y="982.42017"
|
||||
rx="0"
|
||||
ry="0"
|
||||
transform="matrix(0.97797175,0.20873731,-0.70810621,0.70610593,0,0)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,168 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="60mm"
|
||||
height="60mm"
|
||||
viewBox="0 0 212.59843 212.59842"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="natnet3.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="89.497965"
|
||||
inkscape:cy="128.63427"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-839.76378)">
|
||||
<rect
|
||||
style="fill:#ded2fa;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4234"
|
||||
width="212.60373"
|
||||
height="212.60242"
|
||||
x="0"
|
||||
y="839.76453"
|
||||
ry="40.5"
|
||||
rx="41.000004" />
|
||||
<ellipse
|
||||
style="fill:#f3a0a0;fill-opacity:1;stroke:#ec6767;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168"
|
||||
cx="331.97409"
|
||||
cy="929.93909"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<ellipse
|
||||
style="fill:#a0f3a3;fill-opacity:1;stroke:#139417;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168-5"
|
||||
cx="317.31598"
|
||||
cy="949.04773"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<ellipse
|
||||
style="fill:#f3a0a0;fill-opacity:1;stroke:#ea5b5b;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168-3"
|
||||
cx="287.89499"
|
||||
cy="939.74615"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<ellipse
|
||||
style="fill:#a0f3a3;fill-opacity:1;stroke:#139417;stroke-width:1.00029337;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4168-56"
|
||||
cx="302.39594"
|
||||
cy="920.62213"
|
||||
rx="15.491298"
|
||||
ry="9.7330666"
|
||||
transform="matrix(0.96399679,0.26591387,-0.23275074,0.97253642,0,0)" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:4.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 80.033849,992.35893 -48.604334,-104.31604 0,0"
|
||||
id="path4236"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:4.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 102.8485,864.29323 79.867532,992.27956"
|
||||
id="path4238"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:3.95667362;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 103.52464,919.03102 79.814548,992.34254"
|
||||
id="path4240"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#a02c2c;fill-rule:evenodd;stroke:#1557a7;stroke-width:4.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 79.991454,991.90456 89.007066,-113.13709 0,0"
|
||||
id="path4242"
|
||||
inkscape:connector-curvature="0" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244"
|
||||
cx="167.23438"
|
||||
cy="880.25281"
|
||||
rx="3.8906219"
|
||||
ry="3.7343719" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244-2"
|
||||
cx="102.65626"
|
||||
cy="865.87781"
|
||||
rx="2.9374986"
|
||||
ry="2.9062486" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244-9"
|
||||
cx="31.312502"
|
||||
cy="888.48718"
|
||||
rx="3.2656233"
|
||||
ry="2.8593733" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#6770ec;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4244-1"
|
||||
cx="102.69675"
|
||||
cy="921.44513"
|
||||
rx="3.8124182"
|
||||
ry="3.4222531" />
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#38383a;stroke-width:5.83041477;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4166"
|
||||
width="136.19814"
|
||||
height="64.277"
|
||||
x="774.3078"
|
||||
y="982.42017"
|
||||
rx="0"
|
||||
ry="0"
|
||||
transform="matrix(0.97797175,0.20873731,-0.70810621,0.70610593,0,0)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:90.00000763px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="142.31371"
|
||||
y="1023.9627"
|
||||
id="text4292"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4294"
|
||||
x="142.31371"
|
||||
y="1023.9627"
|
||||
style="font-size:90.00000763px">3</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="60"
|
||||
height="60"
|
||||
viewBox="0 0 60.000001 60.000001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="plotter.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="15.632958"
|
||||
inkscape:cy="28.364596"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-992.36216)">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 56.323978,1028.0972 2.5446,1.6294 -2.5446,1.4732 0,0"
|
||||
id="path4138-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99317914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.98635831, 0.99317916;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 0.35714286,1029.6836 58.30357214,0 0,0"
|
||||
id="path3338"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99749428;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.99498861, 0.9974943;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 6.3394947,1052.0918 -0.0897,-58.62801 0,0"
|
||||
id="path4140"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#d60000;stroke-width:1.97455215;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 0.87918672,1040.6757 12.00433728,-29.2099 3.044578,7.3248 8.524819,-18.93725 2.174699,2.76915 2.435663,-2.5905 4.001445,-1.87586 3.131566,4.73436 21.399036,31.6217 0,0"
|
||||
id="path4142"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 4.6205357,996.04519 6.25,993.50055 l 1.4732143,2.54464 0,0"
|
||||
id="path4138"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="60"
|
||||
height="60"
|
||||
viewBox="0 0 60.000001 60.000001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="plotter (copie).svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.2"
|
||||
inkscape:cx="19.848836"
|
||||
inkscape:cy="41.400325"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-992.36216)">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 56.323978,1028.0972 2.5446,1.6294 -2.5446,1.4732 0,0"
|
||||
id="path4138-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99317914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.98635831, 0.99317916;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 0.35714286,1029.6836 58.30357214,0 0,0"
|
||||
id="path3338"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99749428;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.99498861, 0.9974943;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 6.3394947,1052.0918 -0.0897,-58.62801 0,0"
|
||||
id="path4140"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#d60000;stroke-width:1.97455215;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 0.87918672,1040.6757 12.00433728,-29.2099 3.044578,7.3248 8.524819,-18.93725 2.174699,2.76915 2.435663,-2.5905 4.001445,-1.87586 3.131566,4.73436 21.399036,31.6217 0,0"
|
||||
id="path4142"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 4.6205357,996.04519 6.25,993.50055 l 1.4732143,2.54464 0,0"
|
||||
id="path4138"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#4584b6;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="38.550461"
|
||||
y="1002.6459"
|
||||
id="text4136"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4138"
|
||||
x="38.550461"
|
||||
y="1002.6459"
|
||||
style="font-size:17.5px;fill:#4584b6;fill-opacity:1">py</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 22 KiB |
@@ -43,6 +43,8 @@ import shutil
|
||||
###############################################################################
|
||||
# [Constants]
|
||||
|
||||
DEFAULT_TOOL_ICON = "default_tool_icon.svg"
|
||||
|
||||
LOGGER = logging.getLogger("[HMI]")
|
||||
|
||||
CONF_PATH = env.PAPARAZZI_CONF
|
||||
@@ -54,6 +56,7 @@ ERROR_QPIXMAP = "icons/dialog-error.svg"
|
||||
START_ICON = "icons/media-playback-start.svg"
|
||||
STOP_ICON = "icons/process-stop.svg"
|
||||
CHANGED_ICON = "icons/dialog-warning-symbolic.svg"
|
||||
ICONS_TOOLS_PATH = "data/pictures/tools_icons/"
|
||||
|
||||
UNKNOWN_VALUE = "---"
|
||||
|
||||
@@ -545,14 +548,13 @@ class Hmi(Widgets.QMainWindow):
|
||||
-> Fill the 'Tools' menu with the names found in 'control_panel.xml'
|
||||
-> Connect each action to the corresponding tool process.
|
||||
"""
|
||||
self.ui.menuTools.clear()
|
||||
sorted_names = parser.sorted_tools_names(self.data.tools)
|
||||
for name in sorted_names:
|
||||
action = Widgets.QAction(name, self)
|
||||
self.ui.menuTools.addAction(action)
|
||||
for action in self.ui.menuTools.actions():
|
||||
action.triggered.connect(functools.partial(
|
||||
self.add_program_to_session, self.data.tools[action.text()]))
|
||||
# The tools are sorted first by whether they are favorite or not, then by their names
|
||||
for tool in sorted(self.data.tools.values(), key=lambda tool: (not tool.favorite, tool.name)):
|
||||
if not tool.blacklisted:
|
||||
command = functools.partial(self.add_program_to_session, tool)
|
||||
icon_name = tool.icon if tool.icon is not None else DEFAULT_TOOL_ICON
|
||||
icon_path = "/".join([env.PAPARAZZI_HOME, ICONS_TOOLS_PATH, icon_name])
|
||||
self.ui.tools_menu.add_item(tool.name, icon_path, command)
|
||||
|
||||
def fullscreen_view(self):
|
||||
if self.isMaximized():
|
||||
|
||||
@@ -134,14 +134,17 @@ class Session(object):
|
||||
|
||||
class Program(object):
|
||||
"""Class to define a Program (old tool) object."""
|
||||
def __init__(self, name, command, options):
|
||||
def __init__(self, name, command, options, icon=None, favorite=None, blacklisted=None):
|
||||
self.name = name
|
||||
self.command = command
|
||||
self.options = options
|
||||
self.icon = icon
|
||||
self.favorite = favorite
|
||||
self.blacklisted = blacklisted
|
||||
|
||||
def __repr__(self):
|
||||
string = "\t| name = {!s:<30} | command = {!s:<60} | options = {!s:<70} |"
|
||||
format_string = string.format(self.name, self.command, self.options)
|
||||
string = "\t| name = {!s:<30} | command = {!s:<60} | options = {!s:<70} | icon={!s} |"
|
||||
format_string = string.format(self.name, self.command, self.options, self.icon)
|
||||
return format_string
|
||||
|
||||
|
||||
|
||||
@@ -30,12 +30,16 @@ import os
|
||||
import re
|
||||
import logging
|
||||
import time
|
||||
|
||||
from typing import List, Dict
|
||||
import shutil
|
||||
|
||||
|
||||
###############################################################################
|
||||
# [Constants]
|
||||
|
||||
STRINGS_FALSE = ["False", "false", None, "0"]
|
||||
|
||||
LOGGER = logging.getLogger("[PARSER]")
|
||||
|
||||
XML_EXT = ".xml"
|
||||
@@ -47,6 +51,7 @@ VALUE_REF = "value"
|
||||
CONSTANT_REF = "constant"
|
||||
VARIABLE_REF = "variable"
|
||||
MODE_REF = "mode"
|
||||
FAVORITE_REF = "favorite"
|
||||
|
||||
# REFERENCES AND STRUCTURES OF CONF XML FILES :
|
||||
# CONF_STRUCTURE = [(node_name, [node_attributes],
|
||||
@@ -128,6 +133,9 @@ DEVICE_STRUCTURE = [(DEVICE, [],
|
||||
DEFAULT_DEVICE_NAME = " __Default__ "
|
||||
DEFAULT_DEVICE = db.Device(DEFAULT_DEVICE_NAME)
|
||||
|
||||
# TOOLS
|
||||
TOOLS = "tools"
|
||||
|
||||
# CONTROL_PANEL :
|
||||
CONTROL_PANEL = "control_panel"
|
||||
CONTROL_PANEL_FILE = CONTROL_PANEL + XML_EXT
|
||||
@@ -136,10 +144,10 @@ SECTION_REF = "section"
|
||||
PROGRAM_REF = "program"
|
||||
SESSION_REF = "session"
|
||||
COMMAND_REF = "command"
|
||||
ICON_REF = "icon"
|
||||
FLAG_REF = "flag"
|
||||
OPTION_REF = "arg"
|
||||
|
||||
PROGRAM_TAG_REF = "/".join((SECTION_REF, PROGRAM_REF))
|
||||
SESSION_TAG_REF = "/".join((SECTION_REF, SESSION_REF))
|
||||
|
||||
CONTROL_PANEL_STRUCTURE = [(CONTROL_PANEL, [NAME_REF],
|
||||
@@ -389,6 +397,10 @@ def load_init_files(conf_path):
|
||||
cp_file = cp_path
|
||||
else:
|
||||
raise Exception("%s not found!"% conf_path)
|
||||
|
||||
tools_path = conf_path + "/" + TOOLS
|
||||
if not os.path.exists(tools_path):
|
||||
raise Exception("%s not found!" % tools_path)
|
||||
|
||||
for root, dirs, files in os.walk(conf_path):
|
||||
for file in files:
|
||||
@@ -417,7 +429,7 @@ def load_init_files(conf_path):
|
||||
LOGGER.debug(file)
|
||||
LOGGER.debug("'control_panel' file(s) :")
|
||||
LOGGER.debug(cp_file)
|
||||
return conf_files, cp_file, devices_files, info
|
||||
return conf_files, cp_file, tools_path, devices_files, info
|
||||
|
||||
|
||||
###############################################################################
|
||||
@@ -633,29 +645,46 @@ def parse_arg_option(option_tag):
|
||||
return option
|
||||
|
||||
|
||||
def parse_tools(cp_file):
|
||||
def parse_tools(tools_path):
|
||||
"""
|
||||
:param cp_file:
|
||||
-> Parse all tools in the 'control_panel' file given.
|
||||
:param tools_path:
|
||||
-> Parse all tools files in the 'tools_path' directory.
|
||||
-> Except an incorrect XML format and raise ERROR.
|
||||
"""
|
||||
tools = {}
|
||||
try:
|
||||
cp_tree = Et.parse(cp_file)
|
||||
tools_tags = cp_tree.findall(PROGRAM_TAG_REF)
|
||||
for tool_tag in tools_tags:
|
||||
tool_name = tool_tag.get(NAME_REF)
|
||||
tool_command = tool_tag.get(COMMAND_REF)
|
||||
options = []
|
||||
for option_tag in tool_tag:
|
||||
option = parse_arg_option(option_tag)
|
||||
options.append(option)
|
||||
tool_object = db.Program(tool_name, tool_command, options)
|
||||
tools[tool_name] = tool_object
|
||||
blacklisted_tools = []
|
||||
blacklist = tools_path + "/" + "blacklisted"
|
||||
if os.path.exists(blacklist):
|
||||
with open(blacklist, 'r') as blacklist_fic:
|
||||
for line in blacklist_fic:
|
||||
line = line.strip()
|
||||
if line != "" and line[0] != "#":
|
||||
blacklisted_tools.append(line)
|
||||
|
||||
except Et.ParseError as msg:
|
||||
LOGGER.error("ERROR in syntax of XML file : '%s'. "
|
||||
"Original message : '%s'.", cp_file, msg)
|
||||
for file in os.listdir(tools_path):
|
||||
if file.endswith(".xml"):
|
||||
file_path = tools_path + "/" + file
|
||||
try:
|
||||
tree = Et.parse(file_path)
|
||||
tool_tag = tree.getroot()
|
||||
if tool_tag.tag == PROGRAM_REF:
|
||||
tool_name = tool_tag.get(NAME_REF)
|
||||
tool_command = tool_tag.get(COMMAND_REF)
|
||||
icon = tool_tag.get(ICON_REF)
|
||||
fav = tool_tag.get(FAVORITE_REF)
|
||||
favorite = fav if fav is None else (fav not in STRINGS_FALSE)
|
||||
|
||||
options = []
|
||||
for option_tag in tool_tag:
|
||||
option = parse_arg_option(option_tag)
|
||||
options.append(option)
|
||||
blacklisted = True if tool_name in blacklisted_tools else False
|
||||
tool_object = db.Program(tool_name, tool_command, options, icon, favorite=favorite, blacklisted=blacklisted)
|
||||
tools[tool_name] = tool_object
|
||||
|
||||
except Et.ParseError as msg:
|
||||
LOGGER.error("ERROR in syntax of XML file : '%s'. "
|
||||
"Original message : '%s'.", file, msg)
|
||||
return tools
|
||||
|
||||
|
||||
@@ -691,14 +720,15 @@ def parse_sessions(cp_file, tools):
|
||||
return sessions
|
||||
|
||||
|
||||
def load_sessions_and_programs(cp_file):
|
||||
def load_sessions_and_programs(cp_file, tools_path):
|
||||
"""
|
||||
:param cp_file:
|
||||
-> Parse the tools and sessions from the 'control_panel.xml' file.
|
||||
:param tools_path:
|
||||
-> Parse the tools and sessions from the 'tools:*xml' files.
|
||||
-> Add the default sessions 'simulation' & replay.
|
||||
-> Show the result of scan if DEBUG mode is on (main.py)
|
||||
"""
|
||||
tools = parse_tools(cp_file)
|
||||
tools = parse_tools(tools_path)
|
||||
sessions = parse_sessions(cp_file, tools)
|
||||
|
||||
sessions[SIMULATION_SESSION.name] = SIMULATION_SESSION
|
||||
@@ -764,6 +794,7 @@ class Data(object):
|
||||
self.conf_files = []
|
||||
self.devices_file = None
|
||||
self.cp_file = None
|
||||
self.tools_path = None
|
||||
|
||||
self.cache = {}
|
||||
self.configurations = {}
|
||||
@@ -796,7 +827,7 @@ class Data(object):
|
||||
|
||||
def load_conf_files(self):
|
||||
LOGGER.info("Scanning current directory...")
|
||||
self.conf_files, self.cp_file, self.devices_file, load_info = \
|
||||
self.conf_files, self.cp_file, self.tools_path, self.devices_file, load_info = \
|
||||
load_init_files(self.conf_path)
|
||||
LOGGER.debug(load_info)
|
||||
LOGGER.info("End of scan.\n")
|
||||
@@ -819,10 +850,10 @@ class Data(object):
|
||||
|
||||
def load_sessions_and_programs(self):
|
||||
LOGGER.info("Loading programs and sessions...")
|
||||
if self.cp_file is not None:
|
||||
if self.cp_file is not None and self.tools_path is not None:
|
||||
self.tools, self.sessions, \
|
||||
load_info = load_sessions_and_programs(self.cp_file)
|
||||
load_info = load_sessions_and_programs(self.cp_file, self.tools_path)
|
||||
LOGGER.debug(load_info)
|
||||
LOGGER.info("Programs and sessions loaded.\n")
|
||||
else:
|
||||
LOGGER.error("ERROR : control_panel.xml not found!")
|
||||
LOGGER.error("ERROR : control_panel.xml or tools.xml not found!")
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
ICON_SIZE = (60, 60)
|
||||
POPUP_SIZE = (1000, 400)
|
||||
POPUP_GRID_WIDTH = 4
|
||||
SC_MINIMUM_SIZE = (200, 130)
|
||||
ICON_NUMBER = 6
|
||||
|
||||
class ToolList(QtWidgets.QScrollArea):
|
||||
|
||||
def __init__(self):
|
||||
super(ToolList, self).__init__()
|
||||
self.frame = QtWidgets.QFrame()
|
||||
self.gridLayout = QtWidgets.QGridLayout()
|
||||
self.frame.setLayout(self.gridLayout)
|
||||
self.setWidget(self.frame)
|
||||
self.setWidgetResizable(True)
|
||||
|
||||
def add(self, button):
|
||||
count = self.gridLayout.count()
|
||||
row = count // POPUP_GRID_WIDTH
|
||||
col = count % POPUP_GRID_WIDTH
|
||||
self.gridLayout.addWidget(button, row, col)
|
||||
|
||||
def focusOutEvent(self, QFocusEvent):
|
||||
self.close()
|
||||
|
||||
|
||||
class ToolsMenu(QtWidgets.QFrame):
|
||||
def __init__(self, parent):
|
||||
super(ToolsMenu, self).__init__(parent)
|
||||
self.hlayout = QtWidgets.QHBoxLayout(self)
|
||||
self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||
|
||||
self.toolsFrame = QtWidgets.QFrame()
|
||||
self.toolsLayout = QtWidgets.QHBoxLayout(self.toolsFrame)
|
||||
self.scrollArea = QtWidgets.QScrollArea()
|
||||
self.scrollArea.setWidget(self.toolsFrame)
|
||||
self.hlayout.addWidget(self.scrollArea)
|
||||
self.scrollArea.setMinimumSize(*SC_MINIMUM_SIZE)
|
||||
self.setMinimumSize(SC_MINIMUM_SIZE[0] + 10, SC_MINIMUM_SIZE[1] + 100)
|
||||
|
||||
self.toolsLayout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
|
||||
|
||||
self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
|
||||
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||
self.scrollArea.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||
|
||||
self.button_more = None
|
||||
self.popup = ToolList()
|
||||
self.popup.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
||||
self.popup.setMinimumSize(*POPUP_SIZE)
|
||||
self.buttons = []
|
||||
self.toolsLayout.addStretch(0)
|
||||
|
||||
self._add_more_button()
|
||||
|
||||
def _add_more_button(self):
|
||||
if self.button_more is None:
|
||||
self.button_more = QtWidgets.QToolButton()
|
||||
more_icon = QtGui.QIcon("ui/icons/tools_more.svg")
|
||||
self.button_more.setIcon(more_icon)
|
||||
self.button_more.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
|
||||
self.hlayout.addWidget(self.button_more, QtCore.Qt.AlignRight)
|
||||
self.button_more.clicked.connect(self.open_popup)
|
||||
|
||||
def add_item(self, name, image_path, callback):
|
||||
button = QtWidgets.QToolButton()
|
||||
button.setText(name)
|
||||
button.setIcon(QtGui.QIcon(image_path))
|
||||
button.setIconSize(QtCore.QSize(*ICON_SIZE))
|
||||
button.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
|
||||
button.clicked.connect(callback)
|
||||
|
||||
self.buttons.append(button)
|
||||
|
||||
if self.toolsLayout.count() <= ICON_NUMBER:
|
||||
self.toolsLayout.insertWidget(self.toolsLayout.count() - 1, button, QtCore.Qt.AlignLeft)
|
||||
else:
|
||||
self.popup.add(button)
|
||||
button.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
|
||||
button.show()
|
||||
self.popup.adjustSize()
|
||||
|
||||
def open_popup(self):
|
||||
bottomLeft = self.mapToGlobal(self.hlayout.geometry().bottomLeft())
|
||||
self.popup.move(bottomLeft)
|
||||
self.popup.show()
|
||||
self.popup.setFocus(QtCore.Qt.PopupFocusReason)
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
viewBox="0 0 2.8811265 1.8181867"
|
||||
height="0.51313269mm"
|
||||
width="0.81311792mm">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-1.3678973,-0.7353429)"
|
||||
id="layer1">
|
||||
<path
|
||||
id="path3336"
|
||||
d="M 2.3833287,1.2353429 2.7779195,1.748311 3.1961858,1.2353429 Z"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -2,7 +2,7 @@
|
||||
|
||||
# Form implementation generated from reading ui file 'main_window.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.9.2
|
||||
# Created by: PyQt5 UI code generator 5.5.1
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(833, 481)
|
||||
MainWindow.resize(833, 568)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
@@ -226,7 +226,7 @@ class Ui_MainWindow(object):
|
||||
self.scrollArea_3.setWidgetResizable(True)
|
||||
self.scrollArea_3.setObjectName("scrollArea_3")
|
||||
self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 162, 622))
|
||||
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 162, 607))
|
||||
self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
|
||||
self.gridLayout_4 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_3)
|
||||
self.gridLayout_4.setObjectName("gridLayout_4")
|
||||
@@ -572,6 +572,9 @@ class Ui_MainWindow(object):
|
||||
self.sessions_tab.setObjectName("sessions_tab")
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout(self.sessions_tab)
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.label_7 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridLayout_2.addWidget(self.label_7, 5, 0, 1, 2)
|
||||
self.programs = QtWidgets.QListWidget(self.sessions_tab)
|
||||
self.programs.setMinimumSize(QtCore.QSize(0, 0))
|
||||
self.programs.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
@@ -579,29 +582,12 @@ class Ui_MainWindow(object):
|
||||
self.programs.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||
self.programs.setIconSize(QtCore.QSize(10, 10))
|
||||
self.programs.setObjectName("programs")
|
||||
self.gridLayout_2.addWidget(self.programs, 1, 2, 3, 1)
|
||||
self.gridLayout_2.addWidget(self.programs, 2, 2, 3, 1)
|
||||
self.label_8 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_8.setObjectName("label_8")
|
||||
self.gridLayout_2.addWidget(self.label_8, 1, 0, 1, 2)
|
||||
self.gridLayout_2.addWidget(self.label_8, 2, 0, 1, 2)
|
||||
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout_2.addItem(spacerItem4, 2, 3, 1, 1)
|
||||
self.play_stop_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.play_stop_program.sizePolicy().hasHeightForWidth())
|
||||
self.play_stop_program.setSizePolicy(sizePolicy)
|
||||
self.play_stop_program.setMinimumSize(QtCore.QSize(0, 50))
|
||||
self.play_stop_program.setMaximumSize(QtCore.QSize(16777215, 50))
|
||||
icon7 = QtGui.QIcon()
|
||||
icon7.addPixmap(QtGui.QPixmap("icons/media-playback-start.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.play_stop_program.setIcon(icon7)
|
||||
self.play_stop_program.setAutoDefault(False)
|
||||
self.play_stop_program.setObjectName("play_stop_program")
|
||||
self.gridLayout_2.addWidget(self.play_stop_program, 1, 3, 1, 1)
|
||||
self.label_7 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 2)
|
||||
self.gridLayout_2.addItem(spacerItem4, 3, 3, 1, 1)
|
||||
self.start_all_button = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -618,11 +604,50 @@ class Ui_MainWindow(object):
|
||||
font.setStrikeOut(False)
|
||||
font.setKerning(True)
|
||||
self.start_all_button.setFont(font)
|
||||
icon7 = QtGui.QIcon()
|
||||
icon7.addPixmap(QtGui.QPixmap("icons/media-playback-start.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.start_all_button.setIcon(icon7)
|
||||
self.start_all_button.setObjectName("start_all_button")
|
||||
self.gridLayout_2.addWidget(self.start_all_button, 4, 3, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.start_all_button, 5, 3, 1, 1)
|
||||
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout_2.addItem(spacerItem5, 6, 2, 1, 1)
|
||||
self.gridLayout_2.addItem(spacerItem5, 7, 2, 1, 1)
|
||||
self.play_stop_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.play_stop_program.sizePolicy().hasHeightForWidth())
|
||||
self.play_stop_program.setSizePolicy(sizePolicy)
|
||||
self.play_stop_program.setMinimumSize(QtCore.QSize(0, 50))
|
||||
self.play_stop_program.setMaximumSize(QtCore.QSize(16777215, 50))
|
||||
self.play_stop_program.setIcon(icon7)
|
||||
self.play_stop_program.setAutoDefault(False)
|
||||
self.play_stop_program.setObjectName("play_stop_program")
|
||||
self.gridLayout_2.addWidget(self.play_stop_program, 2, 3, 1, 1)
|
||||
self.options = QtWidgets.QListWidget(self.sessions_tab)
|
||||
self.options.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
self.options.setObjectName("options")
|
||||
self.gridLayout_2.addWidget(self.options, 5, 2, 2, 1)
|
||||
self.remove_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.remove_program.sizePolicy().hasHeightForWidth())
|
||||
self.remove_program.setSizePolicy(sizePolicy)
|
||||
self.remove_program.setMinimumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setMaximumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setText("")
|
||||
self.remove_program.setIcon(icon1)
|
||||
self.remove_program.setAutoDefault(False)
|
||||
self.remove_program.setObjectName("remove_program")
|
||||
self.gridLayout_2.addWidget(self.remove_program, 4, 0, 1, 1)
|
||||
self.session = QtWidgets.QComboBox(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.session.sizePolicy().hasHeightForWidth())
|
||||
self.session.setSizePolicy(sizePolicy)
|
||||
self.session.setObjectName("session")
|
||||
self.gridLayout_2.addWidget(self.session, 1, 2, 1, 1)
|
||||
self.kill_all_button = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -644,35 +669,10 @@ class Ui_MainWindow(object):
|
||||
icon8.addPixmap(QtGui.QPixmap("icons/process-stop.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.kill_all_button.setIcon(icon8)
|
||||
self.kill_all_button.setObjectName("kill_all_button")
|
||||
self.gridLayout_2.addWidget(self.kill_all_button, 3, 3, 1, 1)
|
||||
self.session = QtWidgets.QComboBox(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.session.sizePolicy().hasHeightForWidth())
|
||||
self.session.setSizePolicy(sizePolicy)
|
||||
self.session.setObjectName("session")
|
||||
self.gridLayout_2.addWidget(self.session, 0, 2, 1, 1)
|
||||
self.options = QtWidgets.QListWidget(self.sessions_tab)
|
||||
self.options.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
self.options.setObjectName("options")
|
||||
self.gridLayout_2.addWidget(self.options, 4, 2, 2, 1)
|
||||
self.gridLayout_2.addWidget(self.kill_all_button, 4, 3, 1, 1)
|
||||
self.label_4 = QtWidgets.QLabel(self.sessions_tab)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.gridLayout_2.addWidget(self.label_4, 0, 0, 1, 2)
|
||||
self.remove_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.remove_program.sizePolicy().hasHeightForWidth())
|
||||
self.remove_program.setSizePolicy(sizePolicy)
|
||||
self.remove_program.setMinimumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setMaximumSize(QtCore.QSize(30, 30))
|
||||
self.remove_program.setText("")
|
||||
self.remove_program.setIcon(icon1)
|
||||
self.remove_program.setAutoDefault(False)
|
||||
self.remove_program.setObjectName("remove_program")
|
||||
self.gridLayout_2.addWidget(self.remove_program, 3, 0, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.label_4, 1, 0, 1, 2)
|
||||
self.add_program = QtWidgets.QPushButton(self.sessions_tab)
|
||||
self.add_program.setEnabled(False)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
@@ -686,7 +686,7 @@ class Ui_MainWindow(object):
|
||||
self.add_program.setIcon(icon3)
|
||||
self.add_program.setAutoDefault(False)
|
||||
self.add_program.setObjectName("add_program")
|
||||
self.gridLayout_2.addWidget(self.add_program, 3, 1, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.add_program, 4, 1, 1, 1)
|
||||
self.remove_option = QtWidgets.QPushButton(self.sessions_tab)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -699,7 +699,7 @@ class Ui_MainWindow(object):
|
||||
self.remove_option.setIcon(icon1)
|
||||
self.remove_option.setAutoDefault(False)
|
||||
self.remove_option.setObjectName("remove_option")
|
||||
self.gridLayout_2.addWidget(self.remove_option, 5, 0, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.remove_option, 6, 0, 1, 1)
|
||||
self.add_option = QtWidgets.QPushButton(self.sessions_tab)
|
||||
self.add_option.setEnabled(True)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
@@ -713,7 +713,14 @@ class Ui_MainWindow(object):
|
||||
self.add_option.setIcon(icon3)
|
||||
self.add_option.setAutoDefault(False)
|
||||
self.add_option.setObjectName("add_option")
|
||||
self.gridLayout_2.addWidget(self.add_option, 5, 1, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.add_option, 6, 1, 1, 1)
|
||||
self.tools_menu = ToolsMenu(self.sessions_tab)
|
||||
self.tools_menu.setMinimumSize(QtCore.QSize(0, 0))
|
||||
self.tools_menu.setBaseSize(QtCore.QSize(200, 140))
|
||||
self.tools_menu.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.tools_menu.setFrameShadow(QtWidgets.QFrame.Raised)
|
||||
self.tools_menu.setObjectName("tools_menu")
|
||||
self.gridLayout_2.addWidget(self.tools_menu, 0, 2, 1, 1)
|
||||
self.main_tab.addTab(self.sessions_tab, "")
|
||||
self.console_tab = QtWidgets.QWidget()
|
||||
self.console_tab.setObjectName("console_tab")
|
||||
@@ -953,8 +960,6 @@ class Ui_MainWindow(object):
|
||||
self.menuConfiguration.setObjectName("menuConfiguration")
|
||||
self.menuMenu = QtWidgets.QMenu(self.menubar)
|
||||
self.menuMenu.setObjectName("menuMenu")
|
||||
self.menuTools = QtWidgets.QMenu(self.menubar)
|
||||
self.menuTools.setObjectName("menuTools")
|
||||
self.menuView = QtWidgets.QMenu(self.menubar)
|
||||
self.menuView.setObjectName("menuView")
|
||||
self.menuHelp = QtWidgets.QMenu(self.menubar)
|
||||
@@ -1056,7 +1061,7 @@ class Ui_MainWindow(object):
|
||||
self.scrollArea.setWidgetResizable(True)
|
||||
self.scrollArea.setObjectName("scrollArea")
|
||||
self.scrollAreaWidgetContents = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 162, 598))
|
||||
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 151, 583))
|
||||
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
|
||||
self.gridLayout_13 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
|
||||
self.gridLayout_13.setObjectName("gridLayout_13")
|
||||
@@ -1209,7 +1214,7 @@ class Ui_MainWindow(object):
|
||||
self.scrollArea_2.setWidgetResizable(True)
|
||||
self.scrollArea_2.setObjectName("scrollArea_2")
|
||||
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 162, 598))
|
||||
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 151, 583))
|
||||
self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
|
||||
self.gridLayout_15 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_2)
|
||||
self.gridLayout_15.setObjectName("gridLayout_15")
|
||||
@@ -1503,12 +1508,11 @@ class Ui_MainWindow(object):
|
||||
self.menubar.addAction(self.menuSet.menuAction())
|
||||
self.menubar.addAction(self.menuConfiguration.menuAction())
|
||||
self.menubar.addAction(self.menuSession.menuAction())
|
||||
self.menubar.addAction(self.menuTools.menuAction())
|
||||
self.menubar.addAction(self.menuView.menuAction())
|
||||
self.menubar.addAction(self.menuHelp.menuAction())
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
self.main_tab.setCurrentIndex(3)
|
||||
self.main_tab.setCurrentIndex(2)
|
||||
self.stackedWidget.setCurrentIndex(0)
|
||||
self.main_tab.currentChanged['int'].connect(self.stackedWidget.setCurrentIndex)
|
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
@@ -1578,19 +1582,19 @@ class Ui_MainWindow(object):
|
||||
self.label_9.setText(_translate("MainWindow", "Result :"))
|
||||
self.main_tab.setTabText(self.main_tab.indexOf(self.build_flash_tab), _translate("MainWindow", "Build / Flash"))
|
||||
self.main_tab.setTabToolTip(self.main_tab.indexOf(self.build_flash_tab), _translate("MainWindow", "Tab to build and flash the current configuration"))
|
||||
self.label_7.setText(_translate("MainWindow", "Options :"))
|
||||
self.programs.setToolTip(_translate("MainWindow", "Programs running (green) and stopped (red)"))
|
||||
self.label_8.setText(_translate("MainWindow", "Programs :"))
|
||||
self.play_stop_program.setToolTip(_translate("MainWindow", "Start / stop the selected program"))
|
||||
self.play_stop_program.setText(_translate("MainWindow", "Start"))
|
||||
self.label_7.setText(_translate("MainWindow", "Options :"))
|
||||
self.start_all_button.setToolTip(_translate("MainWindow", "Kill & restart all programs"))
|
||||
self.start_all_button.setText(_translate("MainWindow", "Start all"))
|
||||
self.play_stop_program.setToolTip(_translate("MainWindow", "Start / stop the selected program"))
|
||||
self.play_stop_program.setText(_translate("MainWindow", "Start"))
|
||||
self.options.setToolTip(_translate("MainWindow", "Options of the selected program"))
|
||||
self.remove_program.setToolTip(_translate("MainWindow", "Remove a programs from the session"))
|
||||
self.session.setToolTip(_translate("MainWindow", "Current session"))
|
||||
self.kill_all_button.setToolTip(_translate("MainWindow", "Kill all running programs"))
|
||||
self.kill_all_button.setText(_translate("MainWindow", "Kill all"))
|
||||
self.session.setToolTip(_translate("MainWindow", "Current session"))
|
||||
self.options.setToolTip(_translate("MainWindow", "Options of the selected program"))
|
||||
self.label_4.setText(_translate("MainWindow", "Session :"))
|
||||
self.remove_program.setToolTip(_translate("MainWindow", "Remove a programs from the session"))
|
||||
self.add_program.setToolTip(_translate("MainWindow", "Add a programs to the session"))
|
||||
self.remove_option.setToolTip(_translate("MainWindow", "Remove the selected option"))
|
||||
self.add_option.setToolTip(_translate("MainWindow", "Add an option to the selected program"))
|
||||
@@ -1625,7 +1629,6 @@ class Ui_MainWindow(object):
|
||||
self.menuSet.setTitle(_translate("MainWindow", "Set"))
|
||||
self.menuConfiguration.setTitle(_translate("MainWindow", "Configuration"))
|
||||
self.menuMenu.setTitle(_translate("MainWindow", "Menu"))
|
||||
self.menuTools.setTitle(_translate("MainWindow", "Tools"))
|
||||
self.menuView.setTitle(_translate("MainWindow", "View"))
|
||||
self.menuHelp.setTitle(_translate("MainWindow", "Help"))
|
||||
self.menuSession.setTitle(_translate("MainWindow", "Session"))
|
||||
@@ -1709,3 +1712,4 @@ class Ui_MainWindow(object):
|
||||
self.actionRestore_default_state.setText(_translate("MainWindow", "Restore default app state"))
|
||||
self.actionHide_overviews.setText(_translate("MainWindow", "Hide overviews"))
|
||||
|
||||
from tools_menu import ToolsMenu
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>833</width>
|
||||
<height>481</height>
|
||||
<height>568</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@@ -278,7 +278,7 @@
|
||||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>3</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="elideMode">
|
||||
<enum>Qt::ElideNone</enum>
|
||||
@@ -579,7 +579,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>162</width>
|
||||
<height>622</height>
|
||||
<height>607</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
@@ -1537,7 +1537,14 @@
|
||||
<string>Tab to launch and customize the current session</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="1" column="2" rowspan="3">
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Options :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" rowspan="3">
|
||||
<widget class="QListWidget" name="programs">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
@@ -1568,14 +1575,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Programs :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<item row="3" column="3">
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@@ -1588,49 +1595,7 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="play_stop_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Start / stop the selected program</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/media-playback-start.svg</normaloff>icons/media-playback-start.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Options :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<item row="5" column="3">
|
||||
<widget class="QPushButton" name="start_all_button">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
@@ -1672,7 +1637,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<item row="7" column="2">
|
||||
<spacer name="verticalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@@ -1685,7 +1650,103 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<item row="2" column="3">
|
||||
<widget class="QPushButton" name="play_stop_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>50</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Start / stop the selected program</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/media-playback-start.svg</normaloff>icons/media-playback-start.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2" rowspan="2">
|
||||
<widget class="QListWidget" name="options">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Options of the selected program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QPushButton" name="remove_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove a programs from the session</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/list-remove.svg</normaloff>icons/list-remove.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QComboBox" name="session">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Current session</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QPushButton" name="kill_all_button">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
@@ -1730,75 +1791,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QComboBox" name="session">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Current session</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" rowspan="2">
|
||||
<widget class="QListWidget" name="options">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Options of the selected program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Session :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QPushButton" name="remove_program">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Remove a programs from the session</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>icons/list-remove.svg</normaloff>icons/list-remove.svg</iconset>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<item row="4" column="1">
|
||||
<widget class="QPushButton" name="add_program">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@@ -1836,7 +1836,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QPushButton" name="remove_option">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
@@ -1871,7 +1871,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QPushButton" name="add_option">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
@@ -1909,6 +1909,28 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="ToolsMenu" name="tools_menu">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>140</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="console_tab">
|
||||
@@ -2467,11 +2489,6 @@ p, li { white-space: pre-wrap; }
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionQuit_Paparazzi_UAV"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuTools">
|
||||
<property name="title">
|
||||
<string>Tools</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuView">
|
||||
<property name="title">
|
||||
<string>View</string>
|
||||
@@ -2499,7 +2516,6 @@ p, li { white-space: pre-wrap; }
|
||||
<addaction name="menuSet"/>
|
||||
<addaction name="menuConfiguration"/>
|
||||
<addaction name="menuSession"/>
|
||||
<addaction name="menuTools"/>
|
||||
<addaction name="menuView"/>
|
||||
<addaction name="menuHelp"/>
|
||||
</widget>
|
||||
@@ -2699,8 +2715,8 @@ p, li { white-space: pre-wrap; }
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>162</width>
|
||||
<height>598</height>
|
||||
<width>151</width>
|
||||
<height>583</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_13">
|
||||
@@ -3090,8 +3106,8 @@ p, li { white-space: pre-wrap; }
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>162</width>
|
||||
<height>598</height>
|
||||
<width>151</width>
|
||||
<height>583</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_15">
|
||||
@@ -3822,6 +3838,14 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ToolsMenu</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>tools_menu.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
||||