Merge pull request #8795 from yorikvanhavre/draft-layermanager
Draft: Added LayerManager command from BIM
This commit is contained in:
@@ -49,6 +49,7 @@
|
||||
<file>icons/Draft_Join.svg</file>
|
||||
<file>icons/Draft_Label.svg</file>
|
||||
<file>icons/Draft_Layer.svg</file>
|
||||
<file>icons/Draft_LayerManager.svg</file>
|
||||
<file>icons/Draft_Line.svg</file>
|
||||
<file>icons/Draft_LinkArray.svg</file>
|
||||
<file>icons/Draft_Lock.svg</file>
|
||||
@@ -191,5 +192,6 @@
|
||||
<file>ui/dialog_AnnotationStyleEditor.ui</file>
|
||||
<file>ui/TaskPanel_SetStyle.ui</file>
|
||||
<file>ui/dialogHatch.ui</file>
|
||||
<file>ui/dialogLayers.ui</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
515
src/Mod/Draft/Resources/icons/Draft_LayerManager.svg
Normal file
515
src/Mod/Draft/Resources/icons/Draft_LayerManager.svg
Normal file
@@ -0,0 +1,515 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48.000000px"
|
||||
height="48.000000px"
|
||||
id="svg249"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="BIM_Layers.svg"
|
||||
inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
|
||||
inkscape:export-xdpi="240.00000"
|
||||
inkscape:export-ydpi="240.00000"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs3">
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4542">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4544" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4546" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4542"
|
||||
id="radialGradient4548"
|
||||
cx="24.306795"
|
||||
cy="42.07798"
|
||||
fx="24.306795"
|
||||
fy="42.07798"
|
||||
r="15.821514"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-6.310056e-16,30.08928)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient15662">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop15664" />
|
||||
<stop
|
||||
style="stop-color:#f8f8f8;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop15666" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
fy="64.5679"
|
||||
fx="20.8921"
|
||||
r="5.257"
|
||||
cy="64.5679"
|
||||
cx="20.8921"
|
||||
id="aigrd3">
|
||||
<stop
|
||||
id="stop15573"
|
||||
style="stop-color:#F0F0F0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop15575"
|
||||
style="stop-color:#9a9a9a;stop-opacity:1.0000000;"
|
||||
offset="1.0000000" />
|
||||
</radialGradient>
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
fy="114.5684"
|
||||
fx="20.8921"
|
||||
r="5.256"
|
||||
cy="114.5684"
|
||||
cx="20.8921"
|
||||
id="aigrd2">
|
||||
<stop
|
||||
id="stop15566"
|
||||
style="stop-color:#F0F0F0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop15568"
|
||||
style="stop-color:#9a9a9a;stop-opacity:1.0000000;"
|
||||
offset="1.0000000" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="linearGradient269">
|
||||
<stop
|
||||
style="stop-color:#a3a3a3;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop270" />
|
||||
<stop
|
||||
style="stop-color:#4c4c4c;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop271" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient259">
|
||||
<stop
|
||||
style="stop-color:#fafafa;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop260" />
|
||||
<stop
|
||||
style="stop-color:#bbbbbb;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop261" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient12512">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop12513" />
|
||||
<stop
|
||||
style="stop-color:#fff520;stop-opacity:0.89108908;"
|
||||
offset="0.50000000"
|
||||
id="stop12517" />
|
||||
<stop
|
||||
style="stop-color:#fff300;stop-opacity:0.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop12514" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="37.751713"
|
||||
fy="3.7561285"
|
||||
fx="8.8244190"
|
||||
cy="3.7561285"
|
||||
cx="8.8244190"
|
||||
gradientTransform="matrix(0.968273,0.000000,0.000000,1.032767,3.353553,0.646447)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient15656"
|
||||
xlink:href="#linearGradient269"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="86.708450"
|
||||
fy="35.736916"
|
||||
fx="33.966679"
|
||||
cy="35.736916"
|
||||
cx="33.966679"
|
||||
gradientTransform="scale(0.960493,1.041132)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient15658"
|
||||
xlink:href="#linearGradient259"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="38.158695"
|
||||
fy="7.2678967"
|
||||
fx="8.1435566"
|
||||
cy="7.2678967"
|
||||
cx="8.1435566"
|
||||
gradientTransform="matrix(0.968273,0.000000,0.000000,1.032767,3.353553,0.646447)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient15668"
|
||||
xlink:href="#linearGradient15662"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#aigrd2"
|
||||
id="radialGradient2283"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.229703,0.000000,0.000000,0.229703,4.613529,3.979808)"
|
||||
cx="20.8921"
|
||||
cy="114.5684"
|
||||
fx="20.8921"
|
||||
fy="114.5684"
|
||||
r="5.256" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#aigrd3"
|
||||
id="radialGradient2285"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.229703,0.000000,0.000000,0.229703,4.613529,3.979808)"
|
||||
cx="20.8921"
|
||||
cy="64.5679"
|
||||
fx="20.8921"
|
||||
fy="64.5679"
|
||||
r="5.257" />
|
||||
<linearGradient
|
||||
id="linearGradient3815"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop3817"
|
||||
offset="0"
|
||||
style="stop-color:#d3d7cf;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3819"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientTransform="translate(-0.02151317,-0.91811256)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="-1.3815211"
|
||||
x2="25.928942"
|
||||
y1="19.086002"
|
||||
x1="53.257175"
|
||||
id="linearGradient3805"
|
||||
xlink:href="#linearGradient3815"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="translate(0.75600263,0.0412295)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="12.022611"
|
||||
x2="36.843666"
|
||||
y1="27.953379"
|
||||
x1="61.719494"
|
||||
id="linearGradient3813"
|
||||
xlink:href="#linearGradient3815"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="translate(-0.18895427,-1.1237431)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="23.542751"
|
||||
x2="48.388607"
|
||||
y1="43.419685"
|
||||
x1="74.313408"
|
||||
id="linearGradient3821"
|
||||
xlink:href="#linearGradient3815"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.32941176"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="93.761718"
|
||||
inkscape:cy="-13.65303"
|
||||
inkscape:current-layer="layer4"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1051"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<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:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Shadow"
|
||||
id="layer6"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
style="display:inline"
|
||||
id="g5022"
|
||||
transform="matrix(2.165152e-2,0,0,1.485743e-2,43.0076,42.68539)">
|
||||
<rect
|
||||
y="-150.69685"
|
||||
x="-1559.2523"
|
||||
height="478.35718"
|
||||
width="1339.6335"
|
||||
id="rect4173"
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5058"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
id="path5018"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Base"
|
||||
inkscape:groupmode="layer"
|
||||
style="display:inline">
|
||||
<rect
|
||||
ry="1.1490486"
|
||||
y="3.6464462"
|
||||
x="6.6035528"
|
||||
height="40.920494"
|
||||
width="34.875000"
|
||||
id="rect15391"
|
||||
style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block;overflow:visible" />
|
||||
<rect
|
||||
rx="0.14904857"
|
||||
ry="0.14904857"
|
||||
y="4.5839462"
|
||||
x="7.6660538"
|
||||
height="38.946384"
|
||||
width="32.775887"
|
||||
id="rect15660"
|
||||
style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:block;overflow:visible" />
|
||||
<g
|
||||
id="g2270"
|
||||
transform="translate(0.646447,-3.798933e-2)">
|
||||
<g
|
||||
transform="matrix(0.229703,0.000000,0.000000,0.229703,4.967081,4.244972)"
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-miterlimit:4.0000000"
|
||||
id="g1440">
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
fy="114.56840"
|
||||
fx="20.892099"
|
||||
r="5.2560000"
|
||||
cy="114.56840"
|
||||
cx="20.892099"
|
||||
id="radialGradient1442">
|
||||
<stop
|
||||
id="stop1444"
|
||||
style="stop-color:#F0F0F0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop1446"
|
||||
style="stop-color:#474747"
|
||||
offset="1" />
|
||||
</radialGradient>
|
||||
<path
|
||||
id="path1448"
|
||||
d="M 23.428000,113.07000 C 23.428000,115.04300 21.828000,116.64200 19.855000,116.64200 C 17.881000,116.64200 16.282000,115.04200 16.282000,113.07000 C 16.282000,111.09600 17.882000,109.49700 19.855000,109.49700 C 21.828000,109.49700 23.428000,111.09700 23.428000,113.07000 z "
|
||||
style="stroke:none" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
fy="64.567902"
|
||||
fx="20.892099"
|
||||
r="5.2570000"
|
||||
cy="64.567902"
|
||||
cx="20.892099"
|
||||
id="radialGradient1450">
|
||||
<stop
|
||||
id="stop1452"
|
||||
style="stop-color:#F0F0F0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop1454"
|
||||
style="stop-color:#474747"
|
||||
offset="1" />
|
||||
</radialGradient>
|
||||
<path
|
||||
id="path1456"
|
||||
d="M 23.428000,63.070000 C 23.428000,65.043000 21.828000,66.643000 19.855000,66.643000 C 17.881000,66.643000 16.282000,65.043000 16.282000,63.070000 C 16.282000,61.096000 17.882000,59.497000 19.855000,59.497000 C 21.828000,59.497000 23.428000,61.097000 23.428000,63.070000 z "
|
||||
style="stroke:none" />
|
||||
</g>
|
||||
<path
|
||||
id="path15570"
|
||||
d="M 9.9950109,29.952326 C 9.9950109,30.405530 9.6274861,30.772825 9.1742821,30.772825 C 8.7208483,30.772825 8.3535532,30.405301 8.3535532,29.952326 C 8.3535532,29.498892 8.7210780,29.131597 9.1742821,29.131597 C 9.6274861,29.131597 9.9950109,29.499122 9.9950109,29.952326 z "
|
||||
style="fill:url(#radialGradient2283);fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000" />
|
||||
<path
|
||||
id="path15577"
|
||||
d="M 9.9950109,18.467176 C 9.9950109,18.920380 9.6274861,19.287905 9.1742821,19.287905 C 8.7208483,19.287905 8.3535532,18.920380 8.3535532,18.467176 C 8.3535532,18.013742 8.7210780,17.646447 9.1742821,17.646447 C 9.6274861,17.646447 9.9950109,18.013972 9.9950109,18.467176 z "
|
||||
style="fill:url(#radialGradient2285);fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path15672"
|
||||
d="M 11.505723,5.4942766 L 11.505723,43.400869"
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.98855311;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.017543854" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path15674"
|
||||
d="M 12.500000,5.0205154 L 12.500000,43.038228"
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.20467831" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="new"
|
||||
style="display:inline">
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1-6"
|
||||
transform="matrix(0.45072343,0,0,0.45072343,9.6052107,9.3385922)"
|
||||
style="stroke-width:2.53389549;stroke-miterlimit:4;stroke-dasharray:none">
|
||||
<rect
|
||||
transform="matrix(0.92408158,0.38219528,-0.75246174,0.65863596,0,0)"
|
||||
y="16.492231"
|
||||
x="40.359722"
|
||||
height="27.016869"
|
||||
width="39.045357"
|
||||
id="rect2993"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3821);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:7.0861426;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect2993-0-9-3-7"
|
||||
d="M 25.329927,28.679638 57.173418,41.866954 40.234042,56.653163 8.3211848,43.465847 Z"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2.53389549;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
<rect
|
||||
transform="matrix(0.92408158,0.38219528,-0.75246174,0.65863596,0,0)"
|
||||
y="6.2172832"
|
||||
x="31.989382"
|
||||
height="27.016869"
|
||||
width="39.045357"
|
||||
id="rect2993-0"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3813);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:7.0861426;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect2993-0-9-3-6"
|
||||
d="M 25.30824,18.773895 57.151731,31.961211 40.212355,46.74742 8.2994962,33.560104 Z"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2.53389549;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
<rect
|
||||
transform="matrix(0.92408158,0.38219528,-0.75246174,0.65863596,6.510896e-8,5.0104617e-8)"
|
||||
y="-6.1819811"
|
||||
x="21.896566"
|
||||
height="27.016869"
|
||||
width="39.045357"
|
||||
id="rect2993-0-9"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3805);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:7.0861426;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect2993-0-9-3"
|
||||
d="M 25.281278,6.6563352 57.124769,19.843651 40.185393,34.62986 8.2725348,21.442544 Z"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2.53389549;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 20 KiB |
94
src/Mod/Draft/Resources/ui/dialogLayers.ui
Normal file
94
src/Mod/Draft/Resources/ui/dialogLayers.ui
Normal file
@@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Dialog</class>
|
||||
<widget class="QDialog" name="Dialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>667</width>
|
||||
<height>320</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Layers manager</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTreeView" name="tree">
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonNew">
|
||||
<property name="text">
|
||||
<string>New</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonDelete">
|
||||
<property name="text">
|
||||
<string>Delete</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonSelectAll">
|
||||
<property name="text">
|
||||
<string>Select all</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonToggle">
|
||||
<property name="text">
|
||||
<string>Toggle on/off</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonIsolate">
|
||||
<property name="text">
|
||||
<string>Isolate</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonCancel">
|
||||
<property name="text">
|
||||
<string>Cancel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonOK">
|
||||
<property name="text">
|
||||
<string>OK</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -30,7 +30,10 @@
|
||||
# @{
|
||||
from PySide.QtCore import QT_TRANSLATE_NOOP
|
||||
|
||||
import os
|
||||
import FreeCAD
|
||||
import FreeCADGui as Gui
|
||||
import Draft
|
||||
import Draft_rc
|
||||
import draftguitools.gui_base as gui_base
|
||||
|
||||
@@ -40,6 +43,18 @@ from draftutils.translate import translate
|
||||
bool(Draft_rc.__name__)
|
||||
|
||||
|
||||
def getColorIcon(color):
|
||||
|
||||
"returns a QtGui.QIcon from a color 3-float tuple"
|
||||
|
||||
from PySide import QtCore,QtGui
|
||||
c = QtGui.QColor(int(color[0]*255),int(color[1]*255),int(color[2]*255))
|
||||
im = QtGui.QImage(48,48,QtGui.QImage.Format_ARGB32)
|
||||
im.fill(c)
|
||||
px = QtGui.QPixmap.fromImage(im)
|
||||
return QtGui.QIcon(px)
|
||||
|
||||
|
||||
class Layer(gui_base.GuiCommandSimplest):
|
||||
"""GuiCommand to create a Layer object in the document."""
|
||||
|
||||
@@ -66,6 +81,435 @@ class Layer(gui_base.GuiCommandSimplest):
|
||||
self.doc.commitTransaction()
|
||||
|
||||
|
||||
class LayerManager:
|
||||
|
||||
"""GuiCommand that displays a Layers manager dialog"""
|
||||
|
||||
def GetResources(self):
|
||||
|
||||
return {'Pixmap' : 'Draft_LayerManager',
|
||||
'MenuText': QT_TRANSLATE_NOOP("Draft_LayerManager", "Manage layers..."),
|
||||
'ToolTip' : QT_TRANSLATE_NOOP("Draft_LayerManager", "Set/modify the different layers of this document")}
|
||||
|
||||
def Activated(self):
|
||||
|
||||
from PySide import QtCore, QtGui
|
||||
|
||||
# store changes to be committed
|
||||
self.deleteList = []
|
||||
|
||||
# create the dialog
|
||||
self.dialog = Gui.PySideUic.loadUi(":/ui/dialogLayers.ui")
|
||||
|
||||
# set nice icons
|
||||
self.dialog.setWindowIcon(QtGui.QIcon(":/icons/Draft_Layer.svg"))
|
||||
self.dialog.buttonNew.setIcon(QtGui.QIcon(":/icons/document-new.svg"))
|
||||
self.dialog.buttonDelete.setIcon(QtGui.QIcon(":/icons/delete.svg"))
|
||||
self.dialog.buttonSelectAll.setIcon(QtGui.QIcon(":/icons/edit-select-all.svg"))
|
||||
self.dialog.buttonToggle.setIcon(QtGui.QIcon(":/icons/dagViewVisible.svg"))
|
||||
self.dialog.buttonIsolate.setIcon(QtGui.QIcon(":/icons/view-refresh.svg"))
|
||||
self.dialog.buttonCancel.setIcon(QtGui.QIcon(":/icons/edit_Cancel.svg"))
|
||||
self.dialog.buttonOK.setIcon(QtGui.QIcon(":/icons/edit_OK.svg"))
|
||||
|
||||
# restore window geometry from stored state
|
||||
pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft")
|
||||
w = pref.GetInt("LayersManagerWidth",640)
|
||||
h = pref.GetInt("LayersManagerHeight",320)
|
||||
self.dialog.resize(w,h)
|
||||
|
||||
# center the dialog over FreeCAD window
|
||||
mw = Gui.getMainWindow()
|
||||
self.dialog.move(mw.frameGeometry().topLeft() + mw.rect().center() - self.dialog.rect().center())
|
||||
|
||||
# connect signals/slots
|
||||
self.dialog.buttonNew.clicked.connect(self.addItem)
|
||||
self.dialog.buttonDelete.clicked.connect(self.onDelete)
|
||||
self.dialog.buttonSelectAll.clicked.connect(self.dialog.tree.selectAll)
|
||||
self.dialog.buttonToggle.clicked.connect(self.onToggle)
|
||||
self.dialog.buttonCancel.clicked.connect(self.dialog.reject)
|
||||
self.dialog.buttonIsolate.clicked.connect(self.onIsolate)
|
||||
self.dialog.buttonOK.clicked.connect(self.accept)
|
||||
self.dialog.rejected.connect(self.reject)
|
||||
|
||||
# set the model up
|
||||
self.model = QtGui.QStandardItemModel()
|
||||
self.dialog.tree.setModel(self.model)
|
||||
self.dialog.tree.setUniformRowHeights(True)
|
||||
self.dialog.tree.setItemDelegate(Layers_Delegate())
|
||||
self.dialog.tree.setItemsExpandable(False)
|
||||
self.dialog.tree.setRootIsDecorated(False) # removes spacing in first column
|
||||
self.dialog.tree.setSelectionMode(QtGui.QTreeView.ExtendedSelection) # allow to select many
|
||||
|
||||
# fill the tree view
|
||||
self.update()
|
||||
|
||||
# rock 'n roll!!!
|
||||
self.dialog.exec_()
|
||||
|
||||
def accept(self):
|
||||
|
||||
"when OK button is pressed"
|
||||
|
||||
changed = False
|
||||
|
||||
# delete layers
|
||||
for name in self.deleteList:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
|
||||
# apply changes
|
||||
for row in range(self.model.rowCount()):
|
||||
|
||||
# get or create layer
|
||||
name = self.model.item(row,1).toolTip()
|
||||
obj = None
|
||||
if name:
|
||||
obj = FreeCAD.ActiveDocument.getObject(name)
|
||||
if not obj:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj = Draft.make_layer()
|
||||
|
||||
# visibility
|
||||
checked = True if self.model.item(row,0).checkState() == QtCore.Qt.Checked else False
|
||||
if checked != obj.ViewObject.Visibility:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.Visibility = checked
|
||||
|
||||
# label
|
||||
label = self.model.item(row,1).text()
|
||||
if label:
|
||||
if obj.Label != label:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.Label = label
|
||||
|
||||
# line width
|
||||
width = self.model.item(row,2).data(QtCore.Qt.DisplayRole)
|
||||
if width:
|
||||
if obj.ViewObject.LineWidth != width:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.LineWidth = width
|
||||
|
||||
# draw style
|
||||
style = self.model.item(row,3).text()
|
||||
if style:
|
||||
if obj.ViewObject.DrawStyle != style:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.DrawStyle = style
|
||||
|
||||
# line color
|
||||
color = self.model.item(row,4).data(QtCore.Qt.UserRole)
|
||||
if color:
|
||||
if obj.ViewObject.LineColor[3:] != color:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.LineColor = color
|
||||
|
||||
# shape color
|
||||
color = self.model.item(row,5).data(QtCore.Qt.UserRole)
|
||||
if color:
|
||||
if obj.ViewObject.ShapeColor[3:] != color:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.ShapeColor = color
|
||||
|
||||
# transparency
|
||||
transparency = self.model.item(row,6).data(QtCore.Qt.DisplayRole)
|
||||
if transparency:
|
||||
if obj.ViewObject.Transparency != transparency:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.Transparency = transparency
|
||||
|
||||
# line print color
|
||||
color = self.model.item(row,7).data(QtCore.Qt.UserRole)
|
||||
if color:
|
||||
if not "LinePrintColor" in obj.ViewObject.PropertiesList:
|
||||
if hasattr(obj.ViewObject.Proxy,"set_properties"):
|
||||
obj.ViewObject.Proxy.set_properties(obj.ViewObject)
|
||||
if "LinePrintColor" in obj.ViewObject.PropertiesList:
|
||||
if obj.ViewObject.LinePrintColor[3:] != color:
|
||||
if not changed:
|
||||
FreeCAD.ActiveDocument.openTransaction("Layers change")
|
||||
changed = True
|
||||
obj.ViewObject.LinePrintColor = color
|
||||
|
||||
# recompute
|
||||
if changed:
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
# exit
|
||||
self.dialog.reject()
|
||||
|
||||
def reject(self):
|
||||
|
||||
"when Cancel button is pressed or dialog is closed"
|
||||
|
||||
# save dialog size
|
||||
pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft")
|
||||
pref.SetInt("LayersManagerWidth",self.dialog.width())
|
||||
pref.SetInt("LayersManagerHeight",self.dialog.height())
|
||||
|
||||
return True
|
||||
|
||||
def update(self):
|
||||
|
||||
"rebuild the model from document contents"
|
||||
|
||||
self.model.clear()
|
||||
|
||||
# set header
|
||||
self.model.setHorizontalHeaderLabels([translate("Draft","On"),
|
||||
translate("Draft","Name"),
|
||||
translate("Draft","Line width"),
|
||||
translate("Draft","Draw style"),
|
||||
translate("Draft","Line color"),
|
||||
translate("Draft","Face color"),
|
||||
translate("Draft","Transparency"),
|
||||
translate("Draft","Line print color")])
|
||||
self.dialog.tree.header().setDefaultSectionSize(72)
|
||||
self.dialog.tree.setColumnWidth(0,32) # on/off column
|
||||
self.dialog.tree.setColumnWidth(1,128) # name column
|
||||
|
||||
# populate
|
||||
objs = [obj for obj in FreeCAD.ActiveDocument.Objects if Draft.getType(obj) == "Layer"]
|
||||
objs.sort(key=lambda o:o.Label)
|
||||
for obj in objs:
|
||||
self.addItem(obj)
|
||||
|
||||
def addItem(self,obj=None):
|
||||
|
||||
"adds a row to the model"
|
||||
|
||||
from PySide import QtCore, QtGui
|
||||
|
||||
# create row with default values
|
||||
onItem = QtGui.QStandardItem()
|
||||
onItem.setCheckable(True)
|
||||
onItem.setCheckState(QtCore.Qt.Checked)
|
||||
nameItem = QtGui.QStandardItem(translate("Draft","New Layer"))
|
||||
widthItem = QtGui.QStandardItem()
|
||||
widthItem.setData(self.getPref("DefaultShapeLineWidth",2,"Integer"),QtCore.Qt.DisplayRole)
|
||||
styleItem = QtGui.QStandardItem("Solid")
|
||||
lineColorItem = QtGui.QStandardItem()
|
||||
lineColorItem.setData(self.getPref("DefaultShapeLineColor",421075455),QtCore.Qt.UserRole)
|
||||
shapeColorItem = QtGui.QStandardItem()
|
||||
shapeColorItem.setData(self.getPref("DefaultShapeColor",3435973887),QtCore.Qt.UserRole)
|
||||
transparencyItem = QtGui.QStandardItem()
|
||||
transparencyItem.setData(0,QtCore.Qt.DisplayRole)
|
||||
linePrintColorItem = QtGui.QStandardItem()
|
||||
linePrintColorItem.setData(self.getPref("DefaultPrintColor",0),QtCore.Qt.UserRole)
|
||||
|
||||
# populate with object data
|
||||
if obj:
|
||||
onItem.setCheckState(QtCore.Qt.Checked if obj.ViewObject.Visibility else QtCore.Qt.Unchecked)
|
||||
nameItem.setText(obj.Label)
|
||||
nameItem.setToolTip(obj.Name)
|
||||
widthItem.setData(obj.ViewObject.LineWidth,QtCore.Qt.DisplayRole)
|
||||
styleItem.setText(obj.ViewObject.DrawStyle)
|
||||
lineColorItem.setData(obj.ViewObject.LineColor[:3],QtCore.Qt.UserRole)
|
||||
shapeColorItem.setData(obj.ViewObject.ShapeColor[:3],QtCore.Qt.UserRole)
|
||||
transparencyItem.setData(obj.ViewObject.Transparency,QtCore.Qt.DisplayRole)
|
||||
if hasattr(obj.ViewObject,"LinePrintColor"):
|
||||
linePrintColorItem.setData(obj.ViewObject.LinePrintColor[:3],QtCore.Qt.UserRole)
|
||||
lineColorItem.setIcon(getColorIcon(lineColorItem.data(QtCore.Qt.UserRole)))
|
||||
shapeColorItem.setIcon(getColorIcon(shapeColorItem.data(QtCore.Qt.UserRole)))
|
||||
linePrintColorItem.setIcon(getColorIcon(linePrintColorItem.data(QtCore.Qt.UserRole)))
|
||||
|
||||
# append row
|
||||
self.model.appendRow([onItem,
|
||||
nameItem,
|
||||
widthItem,
|
||||
styleItem,
|
||||
lineColorItem,
|
||||
shapeColorItem,
|
||||
transparencyItem,
|
||||
linePrintColorItem])
|
||||
|
||||
def getPref(self,value,default,valuetype="Unsigned"):
|
||||
|
||||
"retrieves a view pref value"
|
||||
|
||||
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/View")
|
||||
if valuetype == "Unsigned":
|
||||
c = p.GetUnsigned(value,default)
|
||||
r = float((c>>24)&0xFF)/255.0
|
||||
g = float((c>>16)&0xFF)/255.0
|
||||
b = float((c>>8)&0xFF)/255.0
|
||||
return (r,g,b,)
|
||||
elif valuetype == "Integer":
|
||||
return p.GetInt(value,default)
|
||||
|
||||
def onDelete(self):
|
||||
|
||||
"delete selected rows"
|
||||
|
||||
rows = []
|
||||
for index in self.dialog.tree.selectedIndexes():
|
||||
if not index.row() in rows:
|
||||
rows.append(index.row())
|
||||
|
||||
# append layer name to the delete list
|
||||
if index.column() == 1:
|
||||
name = self.model.itemFromIndex(index).toolTip()
|
||||
if name:
|
||||
if not name in self.deleteList:
|
||||
self.deleteList.append(name)
|
||||
|
||||
# delete rows starting from the lowest, to not alter row indexes while deleting
|
||||
rows.sort()
|
||||
rows.reverse()
|
||||
for row in rows:
|
||||
self.model.takeRow(row)
|
||||
|
||||
def onToggle(self):
|
||||
|
||||
"toggle selected layers on/off"
|
||||
|
||||
from PySide import QtCore, QtGui
|
||||
|
||||
state = None
|
||||
for index in self.dialog.tree.selectedIndexes():
|
||||
if index.column() == 0:
|
||||
# get state from first selected row
|
||||
if state is None:
|
||||
if self.model.itemFromIndex(index).checkState() == QtCore.Qt.Checked:
|
||||
state = QtCore.Qt.Unchecked
|
||||
else:
|
||||
state = QtCore.Qt.Checked
|
||||
self.model.itemFromIndex(index).setCheckState(state)
|
||||
|
||||
def onIsolate(self):
|
||||
|
||||
"isolates the selected layers (turns all the others off"
|
||||
|
||||
from PySide import QtCore, QtGui
|
||||
|
||||
onrows = []
|
||||
for index in self.dialog.tree.selectedIndexes():
|
||||
if not index.row() in onrows:
|
||||
onrows.append(index.row())
|
||||
for row in range(self.model.rowCount()):
|
||||
if not row in onrows:
|
||||
self.model.item(row,0).setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
|
||||
if FreeCAD.GuiUp:
|
||||
|
||||
from PySide import QtCore, QtGui
|
||||
|
||||
class Layers_Delegate(QtGui.QStyledItemDelegate):
|
||||
|
||||
"model delegate"
|
||||
|
||||
def __init__(self, parent=None, *args):
|
||||
|
||||
QtGui.QStyledItemDelegate.__init__(self, parent, *args)
|
||||
# setEditorData() is triggered several times.
|
||||
# But we want to show the color dialog only the first time
|
||||
self.first = True
|
||||
|
||||
def createEditor(self,parent,option,index):
|
||||
|
||||
if index.column() == 0: # Layer on/off
|
||||
editor = QtGui.QCheckBox(parent)
|
||||
if index.column() == 1: # Layer name
|
||||
editor = QtGui.QLineEdit(parent)
|
||||
elif index.column() == 2: # Line width
|
||||
editor = QtGui.QSpinBox(parent)
|
||||
editor.setMaximum(99)
|
||||
elif index.column() == 3: # Line style
|
||||
editor = QtGui.QComboBox(parent)
|
||||
editor.addItems(["Solid","Dashed","Dotted","Dashdot"])
|
||||
elif index.column() == 4: # Line color
|
||||
editor = QtGui.QLineEdit(parent)
|
||||
self.first = True
|
||||
elif index.column() == 5: # Shape color
|
||||
editor = QtGui.QLineEdit(parent)
|
||||
self.first = True
|
||||
elif index.column() == 6: # Transparency
|
||||
editor = QtGui.QSpinBox(parent)
|
||||
editor.setMaximum(100)
|
||||
elif index.column() == 7: # Line print color
|
||||
editor = QtGui.QLineEdit(parent)
|
||||
self.first = True
|
||||
return editor
|
||||
|
||||
def setEditorData(self, editor, index):
|
||||
|
||||
if index.column() == 0: # Layer on/off
|
||||
editor.setChecked(index.data())
|
||||
elif index.column() == 1: # Layer name
|
||||
editor.setText(index.data())
|
||||
elif index.column() == 2: # Line width
|
||||
editor.setValue(index.data())
|
||||
elif index.column() == 3: # Line style
|
||||
editor.setCurrentIndex(["Solid","Dashed","Dotted","Dashdot"].index(index.data()))
|
||||
elif index.column() == 4: # Line color
|
||||
editor.setText(str(index.data(QtCore.Qt.UserRole)))
|
||||
if self.first:
|
||||
c = index.data(QtCore.Qt.UserRole)
|
||||
color = QtGui.QColorDialog.getColor(QtGui.QColor(int(c[0]*255),int(c[1]*255),int(c[2]*255)))
|
||||
editor.setText(str(color.getRgbF()))
|
||||
self.first = False
|
||||
elif index.column() == 5: # Shape color
|
||||
editor.setText(str(index.data(QtCore.Qt.UserRole)))
|
||||
if self.first:
|
||||
c = index.data(QtCore.Qt.UserRole)
|
||||
color = QtGui.QColorDialog.getColor(QtGui.QColor(int(c[0]*255),int(c[1]*255),int(c[2]*255)))
|
||||
editor.setText(str(color.getRgbF()))
|
||||
self.first = False
|
||||
elif index.column() == 6: # Transparency
|
||||
editor.setValue(index.data())
|
||||
elif index.column() == 7: # Line print color
|
||||
editor.setText(str(index.data(QtCore.Qt.UserRole)))
|
||||
if self.first:
|
||||
c = index.data(QtCore.Qt.UserRole)
|
||||
color = QtGui.QColorDialog.getColor(QtGui.QColor(int(c[0]*255),int(c[1]*255),int(c[2]*255)))
|
||||
editor.setText(str(color.getRgbF()))
|
||||
self.first = False
|
||||
|
||||
def setModelData(self, editor, model, index):
|
||||
|
||||
if index.column() == 0: # Layer on/off
|
||||
model.setData(index,editor.isChecked())
|
||||
elif index.column() == 1: # Layer name
|
||||
model.setData(index,editor.text())
|
||||
elif index.column() == 2: # Line width
|
||||
model.setData(index,editor.value())
|
||||
elif index.column() == 3: # Line style
|
||||
model.setData(index,["Solid","Dashed","Dotted","Dashdot"][editor.currentIndex()])
|
||||
elif index.column() == 4: # Line color
|
||||
model.setData(index,eval(editor.text()),QtCore.Qt.UserRole)
|
||||
model.itemFromIndex(index).setIcon(getColorIcon(eval(editor.text())))
|
||||
elif index.column() == 5: # Shape color
|
||||
model.setData(index,eval(editor.text()),QtCore.Qt.UserRole)
|
||||
model.itemFromIndex(index).setIcon(getColorIcon(eval(editor.text())))
|
||||
elif index.column() == 6: # Transparency
|
||||
model.setData(index,editor.value())
|
||||
elif index.column() == 7: # Line prin color
|
||||
model.setData(index,eval(editor.text()),QtCore.Qt.UserRole)
|
||||
model.itemFromIndex(index).setIcon(getColorIcon(eval(editor.text())))
|
||||
|
||||
|
||||
|
||||
|
||||
Gui.addCommand('Draft_Layer', Layer())
|
||||
Gui.addCommand('Draft_LayerManager', LayerManager())
|
||||
|
||||
## @}
|
||||
|
||||
@@ -112,6 +112,7 @@ def get_draft_utility_commands_menu():
|
||||
"Draft_ApplyStyle",
|
||||
"Separator",
|
||||
"Draft_Layer",
|
||||
"Draft_LayerManager",
|
||||
"Draft_AddNamedGroup",
|
||||
"Draft_AddToGroup",
|
||||
"Draft_SelectGroup",
|
||||
@@ -130,7 +131,7 @@ def get_draft_utility_commands_menu():
|
||||
|
||||
def get_draft_utility_commands_toolbar():
|
||||
"""Return the utility commands list for the toolbar."""
|
||||
return ["Draft_Layer",
|
||||
return ["Draft_LayerManager",
|
||||
"Draft_AddNamedGroup",
|
||||
"Draft_AddToGroup",
|
||||
"Draft_SelectGroup",
|
||||
|
||||
Reference in New Issue
Block a user