mirror of
https://github.com/overte-org/overte.git
synced 2025-04-15 20:58:30 +02:00
commit
1dc4a61013
19 changed files with 2804 additions and 14 deletions
125
interface/resources/icons/load-script.svg
Normal file
125
interface/resources/icons/load-script.svg
Normal file
|
@ -0,0 +1,125 @@
|
|||
<?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="45"
|
||||
height="45"
|
||||
id="svg3827"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="load-script.svg">
|
||||
<defs
|
||||
id="defs3829" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.959798"
|
||||
inkscape:cx="171.17264"
|
||||
inkscape:cy="-8.0710166"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3832">
|
||||
<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>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>T.Hofmeister</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1007.3622)">
|
||||
<g
|
||||
id="layer1-7"
|
||||
transform="matrix(-0.25019951,0,0,0.28877175,123.44112,917.40972)"
|
||||
style="fill:#696969">
|
||||
<g
|
||||
id="g3257"
|
||||
transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)"
|
||||
style="fill:#696969">
|
||||
<path
|
||||
id="path3224"
|
||||
d="m 563.06,260.72 -1.25,0.16 -40.15,4.87 -1.66,0.22 0.38,1.62 c 3.78,16.93 -0.59,34.07 -2.88,51.57 l -0.22,1.84 1.81,-0.16 42,-3 1.25,-0.06 0.16,-1.25 c 2.13,-17.86 6.92,-36.12 0.94,-54.62 l -0.38,-1.19 z m -2.18,3.28 c 4.96,16.72 -1.56,33.17 -3.72,50.47 l -35.63,2.78 c 2.25,-16.14 7.03,-29.55 3.78,-46.19 L 560.88,264 z"
|
||||
style="fill:#696969;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3237"
|
||||
d="m 531.39,275.61 23.34,-4.6"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3243"
|
||||
d="m 532.1,280.91 22.27,-2.83"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3247"
|
||||
d="m 531.92,285.86 22.89,-1.95"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3249"
|
||||
d="m 530.15,292.84 24.22,-2.12"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3251"
|
||||
d="m 529.45,297.53 22.98,-0.8"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3253"
|
||||
d="m 528.65,304.24 22.45,-2.56"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3255"
|
||||
d="m 527.5,309.37 22.81,-1.77"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
display="block"
|
||||
d="m 22.50945,1041.7031 c 10.249979,14.5758 18.326744,5.8628 15.179173,-14.1826 l 3.401516,-0.2354 -8.04206,-17.0393 -2.800459,17.789 3.507825,-0.2428 c 2.535261,14.6877 0.402108,18.0407 -11.324416,13.7916 z"
|
||||
style="color:#000000;fill:#a9a9a9;stroke:#000000;stroke-width:0.61923206;display:block"
|
||||
id="path1432"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<rect
|
||||
style="color:#000000;fill:#00ffff;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.42527184;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3032"
|
||||
width="44.57473"
|
||||
height="44.57473"
|
||||
x="0.18852967"
|
||||
y="1007.5989" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.5 KiB |
129
interface/resources/icons/new-script.svg
Normal file
129
interface/resources/icons/new-script.svg
Normal file
|
@ -0,0 +1,129 @@
|
|||
<?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="45"
|
||||
height="45"
|
||||
id="svg3827"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="new-script - Kopie (2).svg">
|
||||
<defs
|
||||
id="defs3829" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="39.376692"
|
||||
inkscape:cy="9.0006701"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3832">
|
||||
<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>T.Hofmeister</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1007.3622)">
|
||||
<rect
|
||||
style="color:#000000;fill:#00ffff;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.42527184;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3032"
|
||||
width="44.57473"
|
||||
height="44.57473"
|
||||
x="0.18852967"
|
||||
y="1007.5989" />
|
||||
<g
|
||||
id="layer1-7-7"
|
||||
transform="matrix(-0.23943965,0,0,0.3096188,117.90945,912.00498)"
|
||||
style="fill:#696969">
|
||||
<g
|
||||
id="g3257-4"
|
||||
transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)"
|
||||
style="fill:#696969">
|
||||
<path
|
||||
id="path3224-0"
|
||||
d="m 563.06,260.72 -1.25,0.16 -40.15,4.87 -1.66,0.22 0.38,1.62 c 3.78,16.93 -0.59,34.07 -2.88,51.57 l -0.22,1.84 1.81,-0.16 42,-3 1.25,-0.06 0.16,-1.25 c 2.13,-17.86 6.92,-36.12 0.94,-54.62 l -0.38,-1.19 z m -2.18,3.28 c 4.96,16.72 -1.56,33.17 -3.72,50.47 l -35.63,2.78 c 2.25,-16.14 7.03,-29.55 3.78,-46.19 L 560.88,264 z"
|
||||
style="fill:#696969;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3237-9"
|
||||
d="m 531.39,275.61 23.34,-4.6"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3243-4"
|
||||
d="m 532.1,280.91 22.27,-2.83"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3247-8"
|
||||
d="m 531.92,285.86 22.89,-1.95"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3249-8"
|
||||
d="m 530.15,292.84 24.22,-2.12"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3251-2"
|
||||
d="m 529.45,297.53 22.98,-0.8"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3253-4"
|
||||
d="m 528.65,304.24 22.45,-2.56"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3255-5"
|
||||
d="m 527.5,309.37 22.81,-1.77"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="layer1-1"
|
||||
transform="matrix(0.85515704,0.72492349,-0.91920854,2.1402565,983.21735,-1213.0824)"
|
||||
style="fill:#a9a9a9;stroke:#000000">
|
||||
<path
|
||||
style="fill:#a9a9a9;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path2996"
|
||||
transform="translate(0,1036.3622)"
|
||||
d="m 3.4723994,8.5185577 3.0304576,-7.0710678 6.944799,0 -5.0191957,5.08233 4.1353117,0 -8.1127873,9.0913731 2.0834396,-7.1342026 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.7 KiB |
674
interface/resources/icons/save-script.svg
Normal file
674
interface/resources/icons/save-script.svg
Normal file
|
@ -0,0 +1,674 @@
|
|||
<?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="45"
|
||||
height="45"
|
||||
id="svg3827"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="load-script - Kopie.svg">
|
||||
<defs
|
||||
id="defs3829">
|
||||
<linearGradient
|
||||
x1="28.061"
|
||||
x2="28.061"
|
||||
y1="31.431"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="36.437"
|
||||
id="linearGradient6971">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#ddd"
|
||||
id="stop6967" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#fdfdfd"
|
||||
id="stop6969" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
x1="12.25"
|
||||
x2="7"
|
||||
y1="18.25"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="21.118"
|
||||
id="linearGradient6931">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#204a87"
|
||||
id="stop6927" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#204a87"
|
||||
id="stop6929" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
x1="14.752"
|
||||
x2="8.8953"
|
||||
y1="15.868"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="16.743"
|
||||
id="linearGradient6907">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#3465a4"
|
||||
id="stop6903" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#3465a4"
|
||||
id="stop6905" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
x1="33.431"
|
||||
x2="21.748"
|
||||
y1="31.965"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="11.781"
|
||||
id="linearGradient2553">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#fff"
|
||||
id="stop2557" />
|
||||
<stop
|
||||
offset=".5"
|
||||
stop-color="#e6e6e6"
|
||||
id="stop2561" />
|
||||
<stop
|
||||
offset=".75"
|
||||
stop-color="#fff"
|
||||
id="stop2563" />
|
||||
<stop
|
||||
offset=".84167"
|
||||
stop-color="#e1e1e1"
|
||||
id="stop2565" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#fff"
|
||||
id="stop2559" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="26.357"
|
||||
y1="11.319"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x2="23.688"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="23.688"
|
||||
id="linearGradient4272">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-opacity=".2549"
|
||||
stop-color="#fff"
|
||||
id="stop4276" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#fff"
|
||||
id="stop4278" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="47.621"
|
||||
y1="4.4331"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x2="44.096"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="12.378"
|
||||
id="linearGradient4260">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#fff"
|
||||
id="stop4256" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#fff"
|
||||
id="stop4258" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="20.936"
|
||||
gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)"
|
||||
cx="15.571"
|
||||
cy="2.9585"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4250">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#e4e4e4"
|
||||
id="stop4246" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#d3d3d3"
|
||||
id="stop4248" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
y2="33.759"
|
||||
y1="37.206"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x2="12.222"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="12.277"
|
||||
id="linearGradient4242">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#eee"
|
||||
id="stop4238" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#eee"
|
||||
id="stop4240" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="40.944"
|
||||
y1="28.481"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x2="36.183"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="7.6046"
|
||||
id="linearGradient4234">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#bbb"
|
||||
id="stop4230" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#9f9f9f"
|
||||
id="stop4232" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="35.281"
|
||||
y1="35.281"
|
||||
gradientTransform="translate(0.79549,3.7992)"
|
||||
x2="24.688"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="7.0625"
|
||||
id="linearGradient4209">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#838383"
|
||||
id="stop4186" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#bbb"
|
||||
id="stop4188" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="15.645"
|
||||
gradientTransform="matrix(1,0,0,0.53672,0,16.873)"
|
||||
cx="24.837"
|
||||
cy="36.421"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient8668">
|
||||
<stop
|
||||
offset="0"
|
||||
id="stop8664" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
id="stop8666" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
y2="12.584"
|
||||
x2="12.624"
|
||||
gradientTransform="matrix(0.91411,0,0,0.91411,-3.8687,-2.7069)"
|
||||
y1="27.394"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="33.06"
|
||||
id="linearGradient1764">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#fff"
|
||||
id="stop2189" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#fff"
|
||||
id="stop2191" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="19.062"
|
||||
gradientTransform="matrix(-1.3145,-0.010063,-0.01023,1.3362,46.221,-4.9099)"
|
||||
cx="23.447"
|
||||
cy="6.4577"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4997">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#fff"
|
||||
id="stop4993" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
stop-color="#fff"
|
||||
id="stop4995" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
y2="609.51"
|
||||
x2="302.86"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)"
|
||||
y1="366.65"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="302.86"
|
||||
id="linearGradient5027">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-opacity="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
offset=".5"
|
||||
id="stop5056" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="117.14"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)"
|
||||
cx="605.71"
|
||||
cy="486.65"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029" />
|
||||
<linearGradient
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-opacity="0"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="117.14"
|
||||
gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)"
|
||||
cx="605.71"
|
||||
cy="486.65"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6971"
|
||||
id="linearGradient3239"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="28.061"
|
||||
y1="31.431"
|
||||
x2="28.061"
|
||||
y2="36.437"
|
||||
gradientTransform="translate(51.972416,1005.3761)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#radialGradient8668"
|
||||
id="radialGradient3253"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)"
|
||||
cx="24.837"
|
||||
cy="36.421"
|
||||
r="15.645" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5027"
|
||||
id="linearGradient3361"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)"
|
||||
x1="302.86"
|
||||
y1="366.65"
|
||||
x2="302.86"
|
||||
y2="609.51" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient3363"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)"
|
||||
cx="605.71"
|
||||
cy="486.65"
|
||||
r="117.14" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient3365"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)"
|
||||
cx="605.71"
|
||||
cy="486.65"
|
||||
r="117.14" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4234"
|
||||
id="linearGradient3367"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="7.6046"
|
||||
y1="28.481"
|
||||
x2="36.183"
|
||||
y2="40.944" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#radialGradient4250"
|
||||
id="radialGradient3369"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)"
|
||||
cx="15.571"
|
||||
cy="2.9585"
|
||||
r="20.936" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4209"
|
||||
id="linearGradient3371"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0.79549,3.7992)"
|
||||
x1="7.0625"
|
||||
y1="35.281"
|
||||
x2="24.688"
|
||||
y2="35.281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4242"
|
||||
id="linearGradient3373"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="12.277"
|
||||
y1="37.206"
|
||||
x2="12.222"
|
||||
y2="33.759" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4272"
|
||||
id="linearGradient3375"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="23.688"
|
||||
y1="11.319"
|
||||
x2="23.688"
|
||||
y2="26.357" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4260"
|
||||
id="linearGradient3377"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="12.378"
|
||||
y1="4.4331"
|
||||
x2="44.096"
|
||||
y2="47.621" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2553"
|
||||
id="linearGradient3379"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="33.431"
|
||||
y1="31.965"
|
||||
x2="21.748"
|
||||
y2="11.781" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#radialGradient8668"
|
||||
id="radialGradient3381"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)"
|
||||
cx="24.837"
|
||||
cy="36.421"
|
||||
r="15.645" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6971"
|
||||
id="linearGradient3383"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(51.972416,1005.3761)"
|
||||
x1="28.061"
|
||||
y1="31.431"
|
||||
x2="28.061"
|
||||
y2="36.437" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="113.76169"
|
||||
inkscape:cy="-12.107928"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3832">
|
||||
<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>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>T.Hofmeister</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1007.3622)">
|
||||
<g
|
||||
id="g3385">
|
||||
<g
|
||||
transform="matrix(0.87964671,0,0,1,-44.027424,-2)"
|
||||
id="g3255">
|
||||
<g
|
||||
id="layer2"
|
||||
transform="translate(51.972416,1005.3761)">
|
||||
<g
|
||||
id="g5022"
|
||||
transform="matrix(0.024114,0,0,0.019292,45.49,41.752)">
|
||||
<rect
|
||||
id="rect4173"
|
||||
style="opacity:0.40206;color:#000000;fill:url(#linearGradient3361)"
|
||||
height="478.35999"
|
||||
width="1339.6"
|
||||
y="-150.7"
|
||||
x="-1559.3" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5058"
|
||||
style="opacity:0.40206;color:#000000;fill:url(#radialGradient3363)"
|
||||
d="m -219.62,-150.68 v 478.33 c 142.88,0.9 345.4,-107.17 345.4,-239.2 0,-132.02 -159.44,-239.13 -345.4,-239.13 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5018"
|
||||
style="opacity:0.40206;color:#000000;fill:url(#radialGradient3365)"
|
||||
d="m -1559.3,-150.68 v 478.33 c -142.8,0.9 -345.4,-107.17 -345.4,-239.2 0,-132.02 159.5,-239.13 345.4,-239.13 z" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#535353;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4196"
|
||||
d="m 11.286,13.088 c -0.625,0 -1.032,0.29 -1.282,0.843 L 3.5357,31.035 c 0,0 -0.25,0.671 -0.25,1.781 v 9.65 c 0,1.083 0.6578,1.625 1.6562,1.625 h 38.562 c 0.985,0 1.594,-0.718 1.594,-1.844 v -9.65 c 0,0 0.106,-0.77 -0.094,-1.312 l -6.718,-17.197 c -0.185,-0.512 -0.637,-0.988 -1.125,-1 h -25.875 z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3367);fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4170"
|
||||
d="m 3.2736,32.122 0.7646,-0.692 37.61,0.062 3.462,0.317 v 10.439 c 0,1.125 -0.607,1.843 -1.592,1.843 H 4.9352 c -0.998,0 -1.6614,-0.542 -1.6614,-1.624 V 32.122 z" />
|
||||
<path
|
||||
style="fill:url(#radialGradient3369);fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3093"
|
||||
d="m 3.5491,31.039 c -0.7143,1.465 -6e-4,2.393 1.0357,2.393 h 39 c 1.119,-0.024 1.845,-1.012 1.428,-2.143 l -6.714,-17.21 c -0.184,-0.512 -0.655,-0.988 -1.143,-1 h -25.857 c -0.625,0 -1.036,0.303 -1.286,0.857 L 3.5489,31.039 z" />
|
||||
<rect
|
||||
id="rect4174"
|
||||
style="color:#000000;fill:url(#linearGradient3371);fill-rule:evenodd"
|
||||
height="5.5625"
|
||||
width="17.625"
|
||||
y="36.299"
|
||||
x="7.8579998" />
|
||||
<path
|
||||
style="opacity:0.81142997;fill:url(#linearGradient3373);fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4194"
|
||||
d="M 7.858,41.862 V 37.85 c 1.8355,3.179 8.296,4.012 12.937,4.012 H 7.858 z" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4201"
|
||||
d="m 44.796,30.754 c 0.064,1.25 -0.414,2.316 -1.322,2.343 H 5.355 c -1.2889,0 -1.8674,-0.325 -2.0837,-0.868 0.0917,0.945 0.8258,1.65 2.084,1.65 h 38.119 c 1.076,-0.033 1.753,-1.424 1.352,-2.995 l -0.03,-0.13 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4211"
|
||||
style="opacity:0.69142995;color:#000000;fill:url(#linearGradient3375);fill-rule:evenodd"
|
||||
d="m 10.969,15.281 c -0.046,0.201 -0.188,0.387 -0.188,0.594 0,0.949 0.591,1.789 1.344,2.594 0.24,-0.154 0.365,-0.355 0.625,-0.5 -0.94,-0.816 -1.553,-1.717 -1.781,-2.688 z m 26.656,0 c -0.229,0.97 -0.842,1.873 -1.781,2.688 0.274,0.153 0.404,0.368 0.656,0.531 0.757,-0.807 1.312,-1.673 1.312,-2.625 0,-0.207 -0.141,-0.393 -0.187,-0.594 z m 2.187,8.438 c -0.613,4.04 -7.298,7.25 -15.531,7.25 -8.212,0 -14.86,-3.193 -15.5,-7.219 -0.0321,0.197 -0.1248,0.392 -0.1248,0.594 10e-5,4.318 6.9888,7.844 15.625,7.844 8.636,0 15.656,-3.526 15.657,-7.844 0,-0.213 -0.09,-0.418 -0.126,-0.625 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4224"
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:0.45762999;fill-rule:evenodd"
|
||||
d="m 8.5737,25.594 a 1.37005,1.0165371 0 1 1 -2.7401,0 1.37005,1.0165371 0 1 1 2.7401,0 z"
|
||||
transform="translate(0.088388,5.3018)" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4226"
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:0.45762999;fill-rule:evenodd"
|
||||
d="m 8.5737,25.594 a 1.37005,1.0165371 0 1 1 -2.7401,0 1.37005,1.0165371 0 1 1 2.7401,0 z"
|
||||
transform="translate(33.967,5.2134)" />
|
||||
<path
|
||||
style="fill:none;stroke:url(#linearGradient3377);stroke-linecap:round;stroke-linejoin:round"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4252"
|
||||
d="m 11.643,13.541 c -0.602,0 -0.993,0.279 -1.234,0.812 L 3.994,30.944 c 0,0 -0.2406,0.646 -0.2406,1.715 v 9.29 c 0,1.354 0.444,1.627 1.5944,1.627 h 37.687 c 1.323,0 1.534,-0.317 1.534,-1.838 v -9.29 c 0,0 0.102,-0.742 -0.09,-1.264 l -6.593,-16.806 c -0.178,-0.492 -0.551,-0.826 -1.021,-0.837 h -25.222 z" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4282"
|
||||
d="m 40.5,36.554 v 5.021" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4284"
|
||||
d="m 38.5,36.614 v 5.021" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4286"
|
||||
d="m 36.5,36.614 v 5.021" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4288"
|
||||
d="m 34.5,36.614 v 5.021" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4290"
|
||||
d="m 32.5,36.614 v 5.021" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4292"
|
||||
d="m 30.5,36.614 v 5.021" />
|
||||
<path
|
||||
style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4294"
|
||||
d="m 39.5,36.604 v 5.021" />
|
||||
<path
|
||||
style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4296"
|
||||
d="m 37.5,36.664 v 5.021" />
|
||||
<path
|
||||
style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4298"
|
||||
d="m 35.5,36.664 v 5.021" />
|
||||
<path
|
||||
style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4300"
|
||||
d="m 33.5,36.664 v 5.021" />
|
||||
<path
|
||||
style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4302"
|
||||
d="m 31.5,36.664 v 5.021" />
|
||||
<path
|
||||
style="opacity:0.43999999;fill:#ffffff;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4572"
|
||||
d="m 7.875,36.312 v 5.532 H 20.438 L 8.219,41.5 7.875,36.312 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2545"
|
||||
style="opacity:0.20571002;color:#000000;fill:url(#linearGradient3379);fill-rule:evenodd"
|
||||
d="m 39.875,19.562 a 14.875,6.6875 0 1 1 -29.75,0 14.875,6.6875 0 1 1 29.75,0 z"
|
||||
transform="matrix(1.0378,0,0,1.0607,-1.6329,3.0304)" />
|
||||
</g>
|
||||
<path
|
||||
d="m 93.815472,1031.3767 a 17.681979,6.3782852 0 1 0 -35.363958,0 17.681979,6.3782852 0 1 0 35.363958,0 z"
|
||||
style="opacity:0.14118;color:#000000;fill:url(#radialGradient3381);fill-rule:evenodd"
|
||||
id="path8660"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
x="56.535915"
|
||||
y="1035.6741"
|
||||
width="39.248001"
|
||||
height="12.278"
|
||||
ry="1.625"
|
||||
rx="1.625"
|
||||
display="block"
|
||||
style="color:#000000;fill:url(#linearGradient3383);stroke:#7d7d7d;stroke-linecap:round;display:block"
|
||||
id="rect6951" />
|
||||
<rect
|
||||
x="58.972416"
|
||||
y="1038.3761"
|
||||
width="16"
|
||||
height="7"
|
||||
ry="0"
|
||||
display="block"
|
||||
style="opacity:0.59658999;color:#000000;fill:#7d7d7d;display:block"
|
||||
id="rect6953" />
|
||||
<rect
|
||||
display="block"
|
||||
height="9"
|
||||
x="75.97242"
|
||||
y="1037.3761"
|
||||
width="1"
|
||||
style="color:#000000;display:block"
|
||||
id="rect6957" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1432"
|
||||
style="color:#000000;fill:#a9a9a9;stroke:#000000;stroke-width:0.48586071;display:block"
|
||||
d="m 6.087091,1019.0168 c -2.4783484,-13.3382 7.140839,-12.9964 16.821938,-0.5354 l 2.083662,-1.7011 5.154697,13.4755 -11.796108,-8.0529 2.148807,-1.7542 c -6.962373,-9.2534 -10.105498,-9.9089 -14.389461,-1.3256 z"
|
||||
display="block" />
|
||||
<rect
|
||||
y="1007.8514"
|
||||
x="0.20883489"
|
||||
height="44.57473"
|
||||
width="44.57473"
|
||||
id="rect3032"
|
||||
style="color:#000000;fill:#00ffff;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.42527184;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 23 KiB |
557
interface/resources/icons/start-script.svg
Normal file
557
interface/resources/icons/start-script.svg
Normal file
|
@ -0,0 +1,557 @@
|
|||
<?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="45"
|
||||
height="45"
|
||||
id="svg3827"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="start-script.svg">
|
||||
<defs
|
||||
id="defs3829">
|
||||
<radialGradient
|
||||
r="15.645"
|
||||
cy="36.421"
|
||||
cx="24.837"
|
||||
gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3253"
|
||||
xlink:href="#radialGradient8668"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="translate(51.972416,1005.3761)"
|
||||
y2="36.437"
|
||||
x2="28.061"
|
||||
y1="31.431"
|
||||
x1="28.061"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3239"
|
||||
xlink:href="#linearGradient6971"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
id="radialGradient5031"
|
||||
xlink:href="#linearGradient5060"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="486.65"
|
||||
cx="605.71"
|
||||
gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)"
|
||||
r="117.14" />
|
||||
<linearGradient
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
id="stop5062"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop5064"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
id="radialGradient5029"
|
||||
xlink:href="#linearGradient5060"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="486.65"
|
||||
cx="605.71"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)"
|
||||
r="117.14" />
|
||||
<linearGradient
|
||||
id="linearGradient5027"
|
||||
x1="302.86"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y1="366.65"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)"
|
||||
x2="302.86"
|
||||
y2="609.51">
|
||||
<stop
|
||||
id="stop5050"
|
||||
stop-opacity="0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset=".5" />
|
||||
<stop
|
||||
id="stop5052"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
id="radialGradient4997"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="6.4577"
|
||||
cx="23.447"
|
||||
gradientTransform="matrix(-1.3145,-0.010063,-0.01023,1.3362,46.221,-4.9099)"
|
||||
r="19.062">
|
||||
<stop
|
||||
id="stop4993"
|
||||
stop-color="#fff"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4995"
|
||||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1764"
|
||||
x1="33.06"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y1="27.394"
|
||||
gradientTransform="matrix(0.91411,0,0,0.91411,-3.8687,-2.7069)"
|
||||
x2="12.624"
|
||||
y2="12.584">
|
||||
<stop
|
||||
id="stop2189"
|
||||
stop-color="#fff"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop2191"
|
||||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
id="radialGradient8668"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="36.421"
|
||||
cx="24.837"
|
||||
gradientTransform="matrix(1,0,0,0.53672,0,16.873)"
|
||||
r="15.645">
|
||||
<stop
|
||||
id="stop8664"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop8666"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4209"
|
||||
x1="7.0625"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="24.688"
|
||||
gradientTransform="translate(0.79549,3.7992)"
|
||||
y1="35.281"
|
||||
y2="35.281">
|
||||
<stop
|
||||
id="stop4186"
|
||||
stop-color="#838383"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4188"
|
||||
stop-color="#bbb"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4234"
|
||||
x1="7.6046"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="36.183"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
y1="28.481"
|
||||
y2="40.944">
|
||||
<stop
|
||||
id="stop4230"
|
||||
stop-color="#bbb"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4232"
|
||||
stop-color="#9f9f9f"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4242"
|
||||
x1="12.277"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="12.222"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
y1="37.206"
|
||||
y2="33.759">
|
||||
<stop
|
||||
id="stop4238"
|
||||
stop-color="#eee"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4240"
|
||||
stop-color="#eee"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
id="radialGradient4250"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="2.9585"
|
||||
cx="15.571"
|
||||
gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)"
|
||||
r="20.936">
|
||||
<stop
|
||||
id="stop4246"
|
||||
stop-color="#e4e4e4"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4248"
|
||||
stop-color="#d3d3d3"
|
||||
offset="1" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4260"
|
||||
x1="12.378"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="44.096"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
y1="4.4331"
|
||||
y2="47.621">
|
||||
<stop
|
||||
id="stop4256"
|
||||
stop-color="#fff"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4258"
|
||||
stop-color="#fff"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4272"
|
||||
x1="23.688"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="23.688"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
y1="11.319"
|
||||
y2="26.357">
|
||||
<stop
|
||||
id="stop4276"
|
||||
stop-color="#fff"
|
||||
stop-opacity=".2549"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop4278"
|
||||
stop-color="#fff"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2553"
|
||||
y2="11.781"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y1="31.965"
|
||||
x2="21.748"
|
||||
x1="33.431">
|
||||
<stop
|
||||
id="stop2557"
|
||||
stop-color="#fff"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop2561"
|
||||
stop-color="#e6e6e6"
|
||||
offset=".5" />
|
||||
<stop
|
||||
id="stop2563"
|
||||
stop-color="#fff"
|
||||
offset=".75" />
|
||||
<stop
|
||||
id="stop2565"
|
||||
stop-color="#e1e1e1"
|
||||
offset=".84167" />
|
||||
<stop
|
||||
id="stop2559"
|
||||
stop-color="#fff"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient6907"
|
||||
y2="16.743"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y1="15.868"
|
||||
x2="8.8953"
|
||||
x1="14.752">
|
||||
<stop
|
||||
id="stop6903"
|
||||
stop-color="#3465a4"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop6905"
|
||||
stop-color="#3465a4"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient6931"
|
||||
y2="21.118"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y1="18.25"
|
||||
x2="7"
|
||||
x1="12.25">
|
||||
<stop
|
||||
id="stop6927"
|
||||
stop-color="#204a87"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop6929"
|
||||
stop-color="#204a87"
|
||||
stop-opacity="0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient6971"
|
||||
y2="36.437"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y1="31.431"
|
||||
x2="28.061"
|
||||
x1="28.061">
|
||||
<stop
|
||||
id="stop6967"
|
||||
stop-color="#ddd"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop6969"
|
||||
stop-color="#fdfdfd"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5027"
|
||||
id="linearGradient3248"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)"
|
||||
x1="302.86"
|
||||
y1="366.65"
|
||||
x2="302.86"
|
||||
y2="609.51" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient3250"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)"
|
||||
cx="605.71"
|
||||
cy="486.65"
|
||||
r="117.14" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient3252"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)"
|
||||
cx="605.71"
|
||||
cy="486.65"
|
||||
r="117.14" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4234"
|
||||
id="linearGradient3254"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="7.6046"
|
||||
y1="28.481"
|
||||
x2="36.183"
|
||||
y2="40.944" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#radialGradient4250"
|
||||
id="radialGradient3256"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)"
|
||||
cx="15.571"
|
||||
cy="2.9585"
|
||||
r="20.936" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4209"
|
||||
id="linearGradient3258"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0.79549,3.7992)"
|
||||
x1="7.0625"
|
||||
y1="35.281"
|
||||
x2="24.688"
|
||||
y2="35.281" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4242"
|
||||
id="linearGradient3260"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="12.277"
|
||||
y1="37.206"
|
||||
x2="12.222"
|
||||
y2="33.759" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4272"
|
||||
id="linearGradient3262"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="23.688"
|
||||
y1="11.319"
|
||||
x2="23.688"
|
||||
y2="26.357" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4260"
|
||||
id="linearGradient3264"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,5.125)"
|
||||
x1="12.378"
|
||||
y1="4.4331"
|
||||
x2="44.096"
|
||||
y2="47.621" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2553"
|
||||
id="linearGradient3266"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="33.431"
|
||||
y1="31.965"
|
||||
x2="21.748"
|
||||
y2="11.781" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#radialGradient8668"
|
||||
id="radialGradient3268"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)"
|
||||
cx="24.837"
|
||||
cy="36.421"
|
||||
r="15.645" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6971"
|
||||
id="linearGradient3270"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(51.972416,1005.3761)"
|
||||
x1="28.061"
|
||||
y1="31.431"
|
||||
x2="28.061"
|
||||
y2="36.437" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="76.804753"
|
||||
inkscape:cy="13.198134"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3832">
|
||||
<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>Maximillian Merlin</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1007.3622)">
|
||||
<g
|
||||
id="layer1-7"
|
||||
transform="matrix(-0.25019951,0,0,0.28877175,123.44112,917.40972)"
|
||||
style="fill:#696969">
|
||||
<g
|
||||
id="g3257"
|
||||
transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)"
|
||||
style="fill:#696969">
|
||||
<path
|
||||
id="path3224"
|
||||
d="m 563.06,260.72 -1.25,0.16 -40.15,4.87 -1.66,0.22 0.38,1.62 c 3.78,16.93 -0.59,34.07 -2.88,51.57 l -0.22,1.84 1.81,-0.16 42,-3 1.25,-0.06 0.16,-1.25 c 2.13,-17.86 6.92,-36.12 0.94,-54.62 l -0.38,-1.19 z m -2.18,3.28 c 4.96,16.72 -1.56,33.17 -3.72,50.47 l -35.63,2.78 c 2.25,-16.14 7.03,-29.55 3.78,-46.19 L 560.88,264 z"
|
||||
style="fill:#696969;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3237"
|
||||
d="m 531.39,275.61 23.34,-4.6"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3243"
|
||||
d="m 532.1,280.91 22.27,-2.83"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3247"
|
||||
d="m 531.92,285.86 22.89,-1.95"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3249"
|
||||
d="m 530.15,292.84 24.22,-2.12"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3251"
|
||||
d="m 529.45,297.53 22.98,-0.8"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3253"
|
||||
d="m 528.65,304.24 22.45,-2.56"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3255"
|
||||
d="m 527.5,309.37 22.81,-1.77"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="color:#000000;fill:#00ffff;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.42527184;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3032"
|
||||
width="44.57473"
|
||||
height="44.57473"
|
||||
x="0.18852967"
|
||||
y="1007.5989" />
|
||||
<rect
|
||||
style="color:#000000;fill:#00ffff;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.42527184;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3032-4"
|
||||
width="44.57473"
|
||||
height="44.57473"
|
||||
x="84.498352"
|
||||
y="1050.0748" />
|
||||
<g
|
||||
id="g3322"
|
||||
transform="translate(-46.607143,-3.5714285)">
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
width="744.09448"
|
||||
height="1052.3622"
|
||||
transform="translate(0.5864354,0.4607839)"
|
||||
xlink:href="#rect899"
|
||||
id="use1503" />
|
||||
<path
|
||||
d="m 75.506508,1023.3478 1.372845,5.4631 -14.094975,-1.152 2.35e-4,7.2772 14.094975,-1.152 -1.372845,5.1249 13.761293,-7.6113 -13.761293,-7.9499 z"
|
||||
id="rect899"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#d3d3d3;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.77974033;stroke-linecap:round;stroke-linejoin:round" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
163
interface/resources/icons/stop-script.svg
Normal file
163
interface/resources/icons/stop-script.svg
Normal file
|
@ -0,0 +1,163 @@
|
|||
<?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="45"
|
||||
height="45"
|
||||
id="svg3827"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="stop-script.svg">
|
||||
<defs
|
||||
id="defs3829" />
|
||||
<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.598703"
|
||||
inkscape:cy="22.861751"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3832">
|
||||
<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>Maximillian Merlin</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1007.3622)">
|
||||
<g
|
||||
id="layer1-7"
|
||||
transform="matrix(-0.25019951,0,0,0.28877175,123.44112,917.40972)"
|
||||
style="fill:#696969">
|
||||
<g
|
||||
id="g3257"
|
||||
transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)"
|
||||
style="fill:#696969">
|
||||
<path
|
||||
id="path3224"
|
||||
d="m 563.06,260.72 -1.25,0.16 -40.15,4.87 -1.66,0.22 0.38,1.62 c 3.78,16.93 -0.59,34.07 -2.88,51.57 l -0.22,1.84 1.81,-0.16 42,-3 1.25,-0.06 0.16,-1.25 c 2.13,-17.86 6.92,-36.12 0.94,-54.62 l -0.38,-1.19 z m -2.18,3.28 c 4.96,16.72 -1.56,33.17 -3.72,50.47 l -35.63,2.78 c 2.25,-16.14 7.03,-29.55 3.78,-46.19 L 560.88,264 z"
|
||||
style="fill:#696969;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3237"
|
||||
d="m 531.39,275.61 23.34,-4.6"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3243"
|
||||
d="m 532.1,280.91 22.27,-2.83"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3247"
|
||||
d="m 531.92,285.86 22.89,-1.95"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3249"
|
||||
d="m 530.15,292.84 24.22,-2.12"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3251"
|
||||
d="m 529.45,297.53 22.98,-0.8"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3253"
|
||||
d="m 528.65,304.24 22.45,-2.56"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3255"
|
||||
d="m 527.5,309.37 22.81,-1.77"
|
||||
style="fill:#696969;stroke:#000000;stroke-width:1px"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="color:#000000;fill:#00ffff;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.42527184;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3032"
|
||||
width="44.57473"
|
||||
height="44.57473"
|
||||
x="0.18852967"
|
||||
y="1007.5989" />
|
||||
<g
|
||||
id="stop"
|
||||
transform="matrix(0.08804464,0,0,0.0856179,29.060719,1033.5397)">
|
||||
<g
|
||||
id="g3004">
|
||||
<path
|
||||
d="M 0,-150 H 62.132 L 150,-62.132 V 62.128 L 62.132,150 H -62.128 L -149,62.132 V -62.128 L -61.132,-150 H 1 0 z"
|
||||
id="stop_octagon"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#e81108" />
|
||||
</g>
|
||||
<g
|
||||
id="g3007"
|
||||
transform="scale(0.95,0.95)">
|
||||
<path
|
||||
d="M 0,-142.5 H 59.025 L 142.5,-59.025 V 59.025 L 59.025,142.5 H -59.025 L -141.549,59.025 V -59.025 L -58.074,-142.5 H 0.951 0.001 z"
|
||||
id="stop_octagon_1_"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:5" />
|
||||
</g>
|
||||
<g
|
||||
id="g3010"
|
||||
transform="scale(1,1.45)">
|
||||
<g
|
||||
id="g3012"
|
||||
style="fill:#ffffff;enable-background:new">
|
||||
<path
|
||||
id="path3014"
|
||||
d="m -124.2,12.152 8.489,-0.742 c 0.401,3.402 1.337,6.192 2.806,8.373 1.469,2.18 3.75,3.943 6.842,5.288 3.092,1.345 6.571,2.018 10.437,2.018 3.433,0 6.463,-0.51 9.092,-1.53 2.628,-1.021 4.584,-2.42 5.868,-4.198 1.283,-1.778 1.925,-3.718 1.925,-5.821 0,-2.134 -0.619,-3.997 -1.855,-5.59 -1.237,-1.592 -3.278,-2.93 -6.123,-4.013 -1.825,-0.711 -5.861,-1.816 -12.107,-3.317 -6.247,-1.5 -10.623,-2.914 -13.127,-4.244 -3.247,-1.7 -5.667,-3.811 -7.26,-6.332 -1.593,-2.52 -2.389,-5.342 -2.389,-8.465 0,-3.433 0.974,-6.641 2.922,-9.625 1.948,-2.984 4.793,-5.249 8.535,-6.796 3.741,-1.546 7.901,-2.319 12.478,-2.319 5.04,0 9.486,0.812 13.336,2.435 3.85,1.623 6.811,4.012 8.883,7.167 2.071,3.154 3.185,6.726 3.34,10.715 l -8.628,0.65 c -0.464,-4.298 -2.034,-7.545 -4.708,-9.741 -2.675,-2.195 -6.626,-3.293 -11.852,-3.293 -5.443,0 -9.409,0.997 -11.898,2.992 -2.489,1.995 -3.734,4.4 -3.734,7.213 0,2.443 0.881,4.453 2.644,6.03 1.731,1.577 6.254,3.194 13.568,4.847 7.313,1.655 12.331,3.101 15.053,4.337 3.958,1.825 6.88,4.136 8.767,6.935 1.886,2.799 2.83,6.023 2.83,9.672 0,3.618 -1.037,7.028 -3.108,10.228 -2.072,3.201 -5.049,5.69 -8.93,7.468 -3.881,1.778 -8.25,2.667 -13.104,2.667 -6.154,0 -11.311,-0.897 -15.47,-2.691 -4.159,-1.793 -7.422,-4.492 -9.788,-8.094 -2.37,-3.604 -3.62,-7.678 -3.74,-12.224 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3016"
|
||||
d="m -40.473,34 v -59.978 h -22.405 v -8.025 h 53.901 v 8.025 H -31.475 V 34 h -8.998 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3018"
|
||||
d="m -4.198,0.88 c 0,-11.287 3.03,-20.124 9.092,-26.51 6.061,-6.385 13.885,-9.579 23.472,-9.579 6.277,0 11.937,1.5 16.978,4.5 5.04,3 8.883,7.182 11.527,12.547 2.644,5.366 3.966,11.45 3.966,18.253 0,6.896 -1.392,13.066 -4.175,18.508 -2.783,5.443 -6.726,9.564 -11.829,12.362 -5.103,2.799 -10.607,4.198 -16.514,4.198 -6.401,0 -12.123,-1.546 -17.163,-4.639 C 6.115,27.428 2.296,23.207 -0.302,17.856 -2.899,12.508 -4.198,6.848 -4.198,0.88 z m 9.277,0.139 c 0,8.195 2.203,14.651 6.61,19.366 4.407,4.716 9.934,7.074 16.583,7.074 6.772,0 12.346,-2.381 16.722,-7.143 4.376,-4.762 6.564,-11.519 6.564,-20.271 0,-5.535 -0.936,-10.367 -2.807,-14.496 -1.871,-4.129 -4.608,-7.329 -8.21,-9.602 -3.603,-2.273 -7.646,-3.41 -12.13,-3.41 -6.371,0 -11.852,2.188 -16.444,6.564 -4.592,4.377 -6.888,11.682 -6.888,21.918 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path3020"
|
||||
d="m 72.433,34 v -68.003 h 25.652 c 4.515,0 7.962,0.217 10.344,0.65 3.34,0.557 6.138,1.616 8.396,3.178 2.257,1.562 4.074,3.75 5.45,6.564 1.376,2.815 2.064,5.907 2.064,9.277 0,5.783 -1.84,10.677 -5.52,14.681 -3.681,4.005 -10.329,6.007 -19.946,6.007 H 81.431 V 34 h -8.999 z m 8.999,-35.672 h 17.581 c 5.813,0 9.942,-1.082 12.385,-3.247 2.442,-2.164 3.665,-5.21 3.665,-9.138 0,-2.845 -0.719,-5.28 -2.157,-7.306 -1.438,-2.025 -3.333,-3.363 -5.682,-4.012 -1.516,-0.401 -4.314,-0.603 -8.396,-0.603 H 81.436 v 24.306 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8 KiB |
|
@ -799,6 +799,7 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
|||
if (activeWindow() == _window) {
|
||||
bool isShifted = event->modifiers().testFlag(Qt::ShiftModifier);
|
||||
bool isMeta = event->modifiers().testFlag(Qt::ControlModifier);
|
||||
bool isOption = event->modifiers().testFlag(Qt::AltModifier);
|
||||
switch (event->key()) {
|
||||
break;
|
||||
case Qt::Key_BracketLeft:
|
||||
|
@ -843,9 +844,11 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
|||
break;
|
||||
|
||||
case Qt::Key_S:
|
||||
if (isShifted && isMeta) {
|
||||
if (isShifted && isMeta && !isOption) {
|
||||
Menu::getInstance()->triggerOption(MenuOption::SuppressShortTimings);
|
||||
} else if (!isShifted && isMeta) {
|
||||
} else if (isOption && !isShifted && !isMeta) {
|
||||
Menu::getInstance()->triggerOption(MenuOption::ScriptEditor);
|
||||
} else if (!isOption && !isShifted && isMeta) {
|
||||
takeSnapshot();
|
||||
} else {
|
||||
_myAvatar->setDriveKeys(BACK, 1.f);
|
||||
|
@ -3306,13 +3309,14 @@ void Application::stopAllScripts() {
|
|||
bumpSettings();
|
||||
}
|
||||
|
||||
void Application::stopScript(const QString &scriptName)
|
||||
{
|
||||
_scriptEnginesHash.value(scriptName)->stop();
|
||||
qDebug() << "stopping script..." << scriptName;
|
||||
_scriptEnginesHash.remove(scriptName);
|
||||
_runningScriptsWidget->setRunningScripts(getRunningScripts());
|
||||
bumpSettings();
|
||||
void Application::stopScript(const QString &scriptName) {
|
||||
if (_scriptEnginesHash.contains(scriptName)) {
|
||||
_scriptEnginesHash.value(scriptName)->stop();
|
||||
qDebug() << "stopping script..." << scriptName;
|
||||
_scriptEnginesHash.remove(scriptName);
|
||||
_runningScriptsWidget->setRunningScripts(getRunningScripts());
|
||||
bumpSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void Application::reloadAllScripts() {
|
||||
|
@ -3373,7 +3377,10 @@ void Application::uploadSkeleton() {
|
|||
uploadFST(false);
|
||||
}
|
||||
|
||||
void Application::loadScript(const QString& scriptName) {
|
||||
ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {
|
||||
if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptName) && !_scriptEnginesHash[scriptName]->isFinished()){
|
||||
return _scriptEnginesHash[scriptName];
|
||||
}
|
||||
|
||||
// start the script on a new thread...
|
||||
ScriptEngine* scriptEngine = new ScriptEngine(QUrl(scriptName), &_controllerScriptingInterface);
|
||||
|
@ -3381,7 +3388,7 @@ void Application::loadScript(const QString& scriptName) {
|
|||
|
||||
if (!scriptEngine->hasScript()) {
|
||||
qDebug() << "Application::loadScript(), script failed to load...";
|
||||
return;
|
||||
return NULL;
|
||||
}
|
||||
_runningScriptsWidget->setRunningScripts(getRunningScripts());
|
||||
|
||||
|
@ -3429,8 +3436,12 @@ void Application::loadScript(const QString& scriptName) {
|
|||
workerThread->start();
|
||||
|
||||
// restore the main window's active state
|
||||
_window->activateWindow();
|
||||
if (!loadScriptFromEditor) {
|
||||
_window->activateWindow();
|
||||
}
|
||||
bumpSettings();
|
||||
|
||||
return scriptEngine;
|
||||
}
|
||||
|
||||
void Application::loadDialog() {
|
||||
|
|
|
@ -121,7 +121,7 @@ public:
|
|||
~Application();
|
||||
|
||||
void restoreSizeAndPosition();
|
||||
void loadScript(const QString& fileNameString);
|
||||
ScriptEngine* loadScript(const QString& fileNameString, bool loadScriptFromEditor = false);
|
||||
void loadScripts();
|
||||
void storeSizeAndPosition();
|
||||
void clearScriptsBeforeRunning();
|
||||
|
@ -247,6 +247,7 @@ public:
|
|||
void skipVersion(QString latestVersion);
|
||||
|
||||
QStringList getRunningScripts() { return _scriptEnginesHash.keys(); }
|
||||
ScriptEngine* getScriptEngine(QString scriptHash) { return _scriptEnginesHash.contains(scriptHash) ? _scriptEnginesHash[scriptHash] : NULL; }
|
||||
|
||||
signals:
|
||||
|
||||
|
|
|
@ -195,6 +195,7 @@ Menu::Menu() :
|
|||
|
||||
QMenu* toolsMenu = addMenu("Tools");
|
||||
addActionToQMenuAndActionHash(toolsMenu, MenuOption::MetavoxelEditor, 0, this, SLOT(showMetavoxelEditor()));
|
||||
addActionToQMenuAndActionHash(toolsMenu, MenuOption::ScriptEditor, Qt::ALT | Qt::Key_S, this, SLOT(showScriptEditor()));
|
||||
|
||||
#ifdef HAVE_QXMPP
|
||||
_chatAction = addActionToQMenuAndActionHash(toolsMenu,
|
||||
|
@ -1124,6 +1125,13 @@ void Menu::showMetavoxelEditor() {
|
|||
_MetavoxelEditor->raise();
|
||||
}
|
||||
|
||||
void Menu::showScriptEditor() {
|
||||
if(!_ScriptEditor || !_ScriptEditor->isVisible()) {
|
||||
_ScriptEditor = new ScriptEditorWindow();
|
||||
}
|
||||
_ScriptEditor->raise();
|
||||
}
|
||||
|
||||
void Menu::showChat() {
|
||||
QMainWindow* mainWindow = Application::getInstance()->getWindow();
|
||||
if (!_chatWindow) {
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "location/LocationManager.h"
|
||||
#include "ui/PreferencesDialog.h"
|
||||
#include "ui/ChatWindow.h"
|
||||
#include "ui/ScriptEditorWindow.h"
|
||||
|
||||
const float ADJUST_LOD_DOWN_FPS = 40.0;
|
||||
const float ADJUST_LOD_UP_FPS = 55.0;
|
||||
|
@ -177,6 +178,7 @@ private slots:
|
|||
void cycleFrustumRenderMode();
|
||||
void runTests();
|
||||
void showMetavoxelEditor();
|
||||
void showScriptEditor();
|
||||
void showChat();
|
||||
void toggleChat();
|
||||
void audioMuteToggled();
|
||||
|
@ -228,6 +230,7 @@ private:
|
|||
FrustumDrawMode _frustumDrawMode;
|
||||
ViewFrustumOffset _viewFrustumOffset;
|
||||
QPointer<MetavoxelEditor> _MetavoxelEditor;
|
||||
QPointer<ScriptEditorWindow> _ScriptEditor;
|
||||
QPointer<ChatWindow> _chatWindow;
|
||||
OctreeStatsDialog* _octreeStatsDialog;
|
||||
LodToolsDialog* _lodToolsDialog;
|
||||
|
@ -345,6 +348,7 @@ namespace MenuOption {
|
|||
const QString ResetAvatarSize = "Reset Avatar Size";
|
||||
const QString RunningScripts = "Running Scripts";
|
||||
const QString RunTimingTests = "Run Timing Tests";
|
||||
const QString ScriptEditor = "Script Editor...";
|
||||
const QString SettingsExport = "Export Settings";
|
||||
const QString SettingsImport = "Import Settings";
|
||||
const QString Shadows = "Shadows";
|
||||
|
|
95
interface/src/ScriptHighlighting.cpp
Normal file
95
interface/src/ScriptHighlighting.cpp
Normal file
|
@ -0,0 +1,95 @@
|
|||
//
|
||||
// ScriptHighlighting.cpp
|
||||
// interface/src
|
||||
//
|
||||
// Created by Thijs Wenker on 4/15/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#include "ScriptHighlighting.h"
|
||||
#include <QTextDocument>
|
||||
|
||||
ScriptHighlighting::ScriptHighlighting(QTextDocument* parent) :
|
||||
QSyntaxHighlighter(parent)
|
||||
{
|
||||
_keywordRegex = QRegExp("\\b(break|case|catch|continue|debugger|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|this|throw|try|typeof|var|void|while|with)\\b");
|
||||
_qoutedTextRegex = QRegExp("\".*\"");
|
||||
_multiLineCommentBegin = QRegExp("/\\*");
|
||||
_multiLineCommentEnd = QRegExp("\\*/");
|
||||
_numberRegex = QRegExp("[0-9]+(\\.[0-9]+){0,1}");
|
||||
_singleLineComment = QRegExp("//[^\n]*");
|
||||
_truefalseRegex = QRegExp("\\b(true|false)\\b");
|
||||
}
|
||||
|
||||
void ScriptHighlighting::highlightBlock(const QString& text) {
|
||||
this->highlightKeywords(text);
|
||||
this->formatNumbers(text);
|
||||
this->formatTrueFalse(text);
|
||||
this->formatQoutedText(text);
|
||||
this->formatComments(text);
|
||||
}
|
||||
|
||||
void ScriptHighlighting::highlightKeywords(const QString& text) {
|
||||
int index = _keywordRegex.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = _keywordRegex.matchedLength();
|
||||
setFormat(index, length, Qt::blue);
|
||||
index = _keywordRegex.indexIn(text, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptHighlighting::formatComments(const QString& text) {
|
||||
|
||||
setCurrentBlockState(BlockStateClean);
|
||||
|
||||
int start = (previousBlockState() != BlockStateInMultiComment) ? text.indexOf(_multiLineCommentBegin) : 0;
|
||||
|
||||
while (start > -1) {
|
||||
int end = text.indexOf(_multiLineCommentEnd, start);
|
||||
int length = (end == -1 ? text.length() : (end + _multiLineCommentEnd.matchedLength())) - start;
|
||||
setFormat(start, length, Qt::lightGray);
|
||||
start = text.indexOf(_multiLineCommentBegin, start + length);
|
||||
if (end == -1) {
|
||||
setCurrentBlockState(BlockStateInMultiComment);
|
||||
}
|
||||
}
|
||||
|
||||
int index = _singleLineComment.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = _singleLineComment.matchedLength();
|
||||
setFormat(index, length, Qt::lightGray);
|
||||
index = _singleLineComment.indexIn(text, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptHighlighting::formatQoutedText(const QString& text){
|
||||
int index = _qoutedTextRegex.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = _qoutedTextRegex.matchedLength();
|
||||
setFormat(index, length, Qt::red);
|
||||
index = _qoutedTextRegex.indexIn(text, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptHighlighting::formatNumbers(const QString& text){
|
||||
int index = _numberRegex.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = _numberRegex.matchedLength();
|
||||
setFormat(index, length, Qt::green);
|
||||
index = _numberRegex.indexIn(text, index + length);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptHighlighting::formatTrueFalse(const QString& text){
|
||||
int index = _truefalseRegex.indexIn(text);
|
||||
while (index >= 0) {
|
||||
int length = _truefalseRegex.matchedLength();
|
||||
QFont* font = new QFont(this->document()->defaultFont());
|
||||
font->setBold(true);
|
||||
setFormat(index, length, *font);
|
||||
index = _truefalseRegex.indexIn(text, index + length);
|
||||
}
|
||||
}
|
46
interface/src/ScriptHighlighting.h
Normal file
46
interface/src/ScriptHighlighting.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
//
|
||||
// ScriptHighlighting.h
|
||||
// interface/src
|
||||
//
|
||||
// Created by Thijs Wenker on 4/15/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#ifndef hifi_ScriptHighlighting_h
|
||||
#define hifi_ScriptHighlighting_h
|
||||
|
||||
#include <QSyntaxHighlighter>
|
||||
|
||||
class ScriptHighlighting : public QSyntaxHighlighter {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ScriptHighlighting(QTextDocument* parent = NULL);
|
||||
|
||||
enum BlockState {
|
||||
BlockStateClean,
|
||||
BlockStateInMultiComment
|
||||
};
|
||||
|
||||
protected:
|
||||
void highlightBlock(const QString& text);
|
||||
void highlightKeywords(const QString& text);
|
||||
void formatComments(const QString& text);
|
||||
void formatQoutedText(const QString& text);
|
||||
void formatNumbers(const QString& text);
|
||||
void formatTrueFalse(const QString& text);
|
||||
|
||||
private:
|
||||
QRegExp _keywordRegex;
|
||||
QRegExp _qoutedTextRegex;
|
||||
QRegExp _multiLineCommentBegin;
|
||||
QRegExp _multiLineCommentEnd;
|
||||
QRegExp _numberRegex;
|
||||
QRegExp _singleLineComment;
|
||||
QRegExp _truefalseRegex;
|
||||
};
|
||||
|
||||
#endif // hifi_ScriptHighlighting_h
|
158
interface/src/ui/ScriptEditorWidget.cpp
Normal file
158
interface/src/ui/ScriptEditorWidget.cpp
Normal file
|
@ -0,0 +1,158 @@
|
|||
//
|
||||
// ScriptEditorWidget.cpp
|
||||
// interface/src/ui
|
||||
//
|
||||
// Created by Thijs Wenker on 4/14/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#include "ui_scriptEditorWidget.h"
|
||||
#include "ScriptEditorWidget.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QFrame>
|
||||
#include <QLayoutItem>
|
||||
#include <QMainWindow>
|
||||
#include <QMessageBox>
|
||||
#include <QPalette>
|
||||
#include <QScrollBar>
|
||||
#include <QSizePolicy>
|
||||
#include <QTimer>
|
||||
#include <QWidget>
|
||||
|
||||
#include "Application.h"
|
||||
#include "ScriptHighlighting.h"
|
||||
|
||||
ScriptEditorWidget::ScriptEditorWidget() :
|
||||
_scriptEditorWidgetUI(new Ui::ScriptEditorWidget),
|
||||
_scriptEngine(NULL)
|
||||
{
|
||||
_scriptEditorWidgetUI->setupUi(this);
|
||||
|
||||
connect(_scriptEditorWidgetUI->scriptEdit->document(), SIGNAL(modificationChanged(bool)), this, SIGNAL(scriptModified()));
|
||||
connect(_scriptEditorWidgetUI->scriptEdit->document(), SIGNAL(contentsChanged()), this, SLOT(onScriptModified()));
|
||||
|
||||
// remove the title bar (see the Qt docs on setTitleBarWidget)
|
||||
setTitleBarWidget(new QWidget());
|
||||
QFontMetrics fm(_scriptEditorWidgetUI->scriptEdit->font());
|
||||
_scriptEditorWidgetUI->scriptEdit->setTabStopWidth(fm.width('0') * 4);
|
||||
ScriptHighlighting* highlighting = new ScriptHighlighting(_scriptEditorWidgetUI->scriptEdit->document());
|
||||
QTimer::singleShot(0, _scriptEditorWidgetUI->scriptEdit, SLOT(setFocus()));
|
||||
}
|
||||
|
||||
ScriptEditorWidget::~ScriptEditorWidget() {
|
||||
delete _scriptEditorWidgetUI;
|
||||
}
|
||||
|
||||
void ScriptEditorWidget::onScriptModified() {
|
||||
if(_scriptEditorWidgetUI->onTheFlyCheckBox->isChecked() && isRunning()) {
|
||||
setRunning(false);
|
||||
setRunning(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::isModified() {
|
||||
return _scriptEditorWidgetUI->scriptEdit->document()->isModified();
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::isRunning() {
|
||||
return (_scriptEngine != NULL) ? _scriptEngine->isRunning() : false;
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::setRunning(bool run) {
|
||||
if (run && !save()) {
|
||||
return false;
|
||||
}
|
||||
// Clean-up old connections.
|
||||
disconnect(this, SLOT(onScriptError(const QString&)));
|
||||
disconnect(this, SLOT(onScriptPrint(const QString&)));
|
||||
|
||||
if (run) {
|
||||
_scriptEngine = Application::getInstance()->loadScript(_currentScript, true);
|
||||
connect(_scriptEngine, SIGNAL(runningStateChanged()), this, SIGNAL(runningStateChanged()));
|
||||
|
||||
// Make new connections.
|
||||
connect(_scriptEngine, SIGNAL(errorMessage(const QString&)), this, SLOT(onScriptError(const QString&)));
|
||||
connect(_scriptEngine, SIGNAL(printedMessage(const QString&)), this, SLOT(onScriptPrint(const QString&)));
|
||||
} else {
|
||||
Application::getInstance()->stopScript(_currentScript);
|
||||
_scriptEngine = NULL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::saveFile(const QString &scriptPath) {
|
||||
QFile file(scriptPath);
|
||||
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QMessageBox::warning(this, tr("Interface"), tr("Cannot write script %1:\n%2.").arg(scriptPath)
|
||||
.arg(file.errorString()));
|
||||
return false;
|
||||
}
|
||||
|
||||
QTextStream out(&file);
|
||||
out << _scriptEditorWidgetUI->scriptEdit->toPlainText();
|
||||
|
||||
setScriptFile(scriptPath);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ScriptEditorWidget::loadFile(const QString& scriptPath) {
|
||||
QFile file(scriptPath);
|
||||
if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
||||
QMessageBox::warning(this, tr("Interface"), tr("Cannot read script %1:\n%2.").arg(scriptPath).arg(file.errorString()));
|
||||
return;
|
||||
}
|
||||
|
||||
QTextStream in(&file);
|
||||
_scriptEditorWidgetUI->scriptEdit->setPlainText(in.readAll());
|
||||
|
||||
setScriptFile(scriptPath);
|
||||
|
||||
disconnect(this, SLOT(onScriptError(const QString&)));
|
||||
disconnect(this, SLOT(onScriptPrint(const QString&)));
|
||||
|
||||
_scriptEngine = Application::getInstance()->getScriptEngine(scriptPath);
|
||||
if (_scriptEngine != NULL) {
|
||||
connect(_scriptEngine, SIGNAL(runningStateChanged()), this, SIGNAL(runningStateChanged()));
|
||||
connect(_scriptEngine, SIGNAL(errorMessage(const QString&)), this, SLOT(onScriptError(const QString&)));
|
||||
connect(_scriptEngine, SIGNAL(printedMessage(const QString&)), this, SLOT(onScriptPrint(const QString&)));
|
||||
}
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::save() {
|
||||
return _currentScript.isEmpty() ? saveAs() : saveFile(_currentScript);
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::saveAs() {
|
||||
QString fileName = QFileDialog::getSaveFileName(this, tr("Save script"), QString(), tr("Javascript (*.js)"));
|
||||
return !fileName.isEmpty() ? saveFile(fileName) : false;
|
||||
}
|
||||
|
||||
void ScriptEditorWidget::setScriptFile(const QString& scriptPath) {
|
||||
_currentScript = scriptPath;
|
||||
_scriptEditorWidgetUI->scriptEdit->document()->setModified(false);
|
||||
setWindowModified(false);
|
||||
|
||||
emit scriptnameChanged();
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::questionSave() {
|
||||
if (_scriptEditorWidgetUI->scriptEdit->document()->isModified()) {
|
||||
QMessageBox::StandardButton button = QMessageBox::warning(this, tr("Interface"),
|
||||
tr("The script has been modified.\nDo you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard |
|
||||
QMessageBox::Cancel, QMessageBox::Save);
|
||||
return button == QMessageBox::Save ? save() : (button == QMessageBox::Cancel ? false : true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ScriptEditorWidget::onScriptError(const QString& message) {
|
||||
_scriptEditorWidgetUI->debugText->appendPlainText("ERROR: " + message);
|
||||
}
|
||||
|
||||
void ScriptEditorWidget::onScriptPrint(const QString& message) {
|
||||
_scriptEditorWidgetUI->debugText->appendPlainText("> " + message);
|
||||
}
|
57
interface/src/ui/ScriptEditorWidget.h
Normal file
57
interface/src/ui/ScriptEditorWidget.h
Normal file
|
@ -0,0 +1,57 @@
|
|||
//
|
||||
// ScriptEditorWidget.h
|
||||
// interface/src/ui
|
||||
//
|
||||
// Created by Thijs Wenker on 4/14/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#ifndef hifi_ScriptEditorWidget_h
|
||||
#define hifi_ScriptEditorWidget_h
|
||||
|
||||
#include <QDockWidget>
|
||||
#include "ScriptEditorWidget.h"
|
||||
#include "ScriptEngine.h"
|
||||
|
||||
namespace Ui {
|
||||
class ScriptEditorWidget;
|
||||
}
|
||||
|
||||
class ScriptEditorWidget : public QDockWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ScriptEditorWidget();
|
||||
~ScriptEditorWidget();
|
||||
|
||||
bool isModified();
|
||||
bool isRunning();
|
||||
bool setRunning(bool run);
|
||||
bool saveFile(const QString& scriptPath);
|
||||
void loadFile(const QString& scriptPath);
|
||||
void setScriptFile(const QString& scriptPath);
|
||||
bool save();
|
||||
bool saveAs();
|
||||
bool questionSave();
|
||||
const QString getScriptName() const { return _currentScript; };
|
||||
|
||||
signals:
|
||||
void runningStateChanged();
|
||||
void scriptnameChanged();
|
||||
void scriptModified();
|
||||
|
||||
private slots:
|
||||
void onScriptError(const QString& message);
|
||||
void onScriptPrint(const QString& message);
|
||||
void onScriptModified();
|
||||
|
||||
private:
|
||||
Ui::ScriptEditorWidget* _scriptEditorWidgetUI;
|
||||
ScriptEngine* _scriptEngine;
|
||||
QString _currentScript;
|
||||
};
|
||||
|
||||
#endif // hifi_ScriptEditorWidget_h
|
200
interface/src/ui/ScriptEditorWindow.cpp
Normal file
200
interface/src/ui/ScriptEditorWindow.cpp
Normal file
|
@ -0,0 +1,200 @@
|
|||
//
|
||||
// ScriptEditorWindow.cpp
|
||||
// interface/src/ui
|
||||
//
|
||||
// Created by Thijs Wenker on 4/14/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#include "ui_scriptEditorWindow.h"
|
||||
#include "ScriptEditorWindow.h"
|
||||
#include "ScriptEditorWidget.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QFrame>
|
||||
#include <QLayoutItem>
|
||||
#include <QMainWindow>
|
||||
#include <QMessageBox>
|
||||
#include <QPalette>
|
||||
#include <QScrollBar>
|
||||
#include <QShortcut>
|
||||
#include <QSizePolicy>
|
||||
#include <QTimer>
|
||||
#include <QWidget>
|
||||
|
||||
#include "Application.h"
|
||||
#include "FlowLayout.h"
|
||||
|
||||
ScriptEditorWindow::ScriptEditorWindow() :
|
||||
_ScriptEditorWindowUI(new Ui::ScriptEditorWindow),
|
||||
_loadMenu(new QMenu),
|
||||
_saveMenu(new QMenu)
|
||||
{
|
||||
_ScriptEditorWindowUI->setupUi(this);
|
||||
show();
|
||||
addScriptEditorWidget("New script");
|
||||
connect(_loadMenu, SIGNAL(aboutToShow()), this, SLOT(loadMenuAboutToShow()));
|
||||
_ScriptEditorWindowUI->loadButton->setMenu(_loadMenu);
|
||||
|
||||
_saveMenu->addAction("Save as..", this, SLOT(saveScriptAsClicked()), Qt::CTRL | Qt::SHIFT | Qt::Key_S);
|
||||
|
||||
_ScriptEditorWindowUI->saveButton->setMenu(_saveMenu);
|
||||
|
||||
connect(new QShortcut(QKeySequence("Ctrl+N"), this), SIGNAL(activated()), this, SLOT(newScriptClicked()));
|
||||
connect(new QShortcut(QKeySequence("Ctrl+S"), this), SIGNAL(activated()), this, SLOT(saveScriptClicked()));
|
||||
connect(new QShortcut(QKeySequence("Ctrl+O"), this), SIGNAL(activated()), this, SLOT(loadScriptClicked()));
|
||||
connect(new QShortcut(QKeySequence("F5"), this), SIGNAL(activated()), this, SLOT(toggleRunScriptClicked()));
|
||||
}
|
||||
|
||||
ScriptEditorWindow::~ScriptEditorWindow() {
|
||||
delete _ScriptEditorWindowUI;
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::setRunningState(bool run) {
|
||||
if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) {
|
||||
static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->setRunning(run);
|
||||
}
|
||||
this->updateButtons();
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::updateButtons() {
|
||||
_ScriptEditorWindowUI->toggleRunButton->setEnabled(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1);
|
||||
_ScriptEditorWindowUI->toggleRunButton->setIcon(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1 &&
|
||||
static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning() ?
|
||||
QIcon("../resources/icons/stop-script.svg") : QIcon("../resources/icons/start-script.svg"));
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) {
|
||||
addScriptEditorWidget("loading...")->loadFile(scriptName);
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::loadScriptClicked() {
|
||||
QString scriptName = QFileDialog::getOpenFileName(this, tr("Interface"), QString(), tr("Javascript (*.js)"));
|
||||
if (!scriptName.isEmpty()) {
|
||||
addScriptEditorWidget("loading...")->loadFile(scriptName);
|
||||
updateButtons();
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::loadMenuAboutToShow() {
|
||||
_loadMenu->clear();
|
||||
QStringList runningScripts = Application::getInstance()->getRunningScripts();
|
||||
if (runningScripts.count() > 0) {
|
||||
QSignalMapper* signalMapper = new QSignalMapper(this);
|
||||
foreach (const QString& runningScript, runningScripts) {
|
||||
QAction* runningScriptAction = new QAction(runningScript, _loadMenu);
|
||||
connect(runningScriptAction, SIGNAL(triggered()), signalMapper, SLOT(map()));
|
||||
signalMapper->setMapping(runningScriptAction, runningScript);
|
||||
_loadMenu->addAction(runningScriptAction);
|
||||
}
|
||||
connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(loadScriptMenu(const QString&)));
|
||||
} else {
|
||||
QAction* naAction = new QAction("(no running scripts)", _loadMenu);
|
||||
naAction->setDisabled(true);
|
||||
_loadMenu->addAction(naAction);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::newScriptClicked() {
|
||||
addScriptEditorWidget(QString("New script"));
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::toggleRunScriptClicked() {
|
||||
this->setRunningState(!(_ScriptEditorWindowUI->tabWidget->currentIndex() !=-1
|
||||
&& static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning()));
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::saveScriptClicked() {
|
||||
if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) {
|
||||
ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget
|
||||
->currentWidget());
|
||||
currentScriptWidget->save();
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::saveScriptAsClicked() {
|
||||
if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) {
|
||||
ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget
|
||||
->currentWidget());
|
||||
currentScriptWidget->saveAs();
|
||||
}
|
||||
}
|
||||
|
||||
ScriptEditorWidget* ScriptEditorWindow::addScriptEditorWidget(QString title) {
|
||||
ScriptEditorWidget* newScriptEditorWidget = new ScriptEditorWidget();
|
||||
connect(newScriptEditorWidget, SIGNAL(scriptnameChanged()), this, SLOT(updateScriptNameOrStatus()));
|
||||
connect(newScriptEditorWidget, SIGNAL(scriptModified()), this, SLOT(updateScriptNameOrStatus()));
|
||||
connect(newScriptEditorWidget, SIGNAL(runningStateChanged()), this, SLOT(updateButtons()));
|
||||
_ScriptEditorWindowUI->tabWidget->addTab(newScriptEditorWidget, title);
|
||||
_ScriptEditorWindowUI->tabWidget->setCurrentWidget(newScriptEditorWidget);
|
||||
newScriptEditorWidget->setUpdatesEnabled(true);
|
||||
newScriptEditorWidget->adjustSize();
|
||||
return newScriptEditorWidget;
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::tabSwitched(int tabIndex) {
|
||||
this->updateButtons();
|
||||
if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) {
|
||||
ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget
|
||||
->currentWidget());
|
||||
QString modifiedStar = (currentScriptWidget->isModified() ? "*" : "");
|
||||
if (currentScriptWidget->getScriptName().length() > 0) {
|
||||
this->setWindowTitle("Script Editor [" + currentScriptWidget->getScriptName() + modifiedStar + "]");
|
||||
} else {
|
||||
this->setWindowTitle("Script Editor [New script" + modifiedStar + "]");
|
||||
}
|
||||
} else {
|
||||
this->setWindowTitle("Script Editor");
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::tabCloseRequested(int tabIndex) {
|
||||
ScriptEditorWidget* closingScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget
|
||||
->widget(tabIndex));
|
||||
if(closingScriptWidget->questionSave()) {
|
||||
_ScriptEditorWindowUI->tabWidget->removeTab(tabIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::closeEvent(QCloseEvent *event) {
|
||||
bool unsaved_docs_warning = false;
|
||||
for (int i = 0; i < _ScriptEditorWindowUI->tabWidget->count(); i++){
|
||||
if(static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->widget(i))->isModified()){
|
||||
unsaved_docs_warning = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!unsaved_docs_warning || QMessageBox::warning(this, tr("Interface"),
|
||||
tr("There are some unsaved scripts, are you sure you want to close the editor? Changes will be lost!"),
|
||||
QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Discard) {
|
||||
event->accept();
|
||||
} else {
|
||||
event->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEditorWindow::updateScriptNameOrStatus() {
|
||||
ScriptEditorWidget* source = static_cast<ScriptEditorWidget*>(QObject::sender());
|
||||
QString modifiedStar = (source->isModified()? "*" : "");
|
||||
if (source->getScriptName().length() > 0) {
|
||||
for (int i = 0; i < _ScriptEditorWindowUI->tabWidget->count(); i++){
|
||||
if (_ScriptEditorWindowUI->tabWidget->widget(i) == source) {
|
||||
_ScriptEditorWindowUI->tabWidget->setTabText(i, modifiedStar + QFileInfo(source->getScriptName()).fileName());
|
||||
_ScriptEditorWindowUI->tabWidget->setTabToolTip(i, source->getScriptName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_ScriptEditorWindowUI->tabWidget->currentWidget() == source) {
|
||||
if (source->getScriptName().length() > 0) {
|
||||
this->setWindowTitle("Script Editor [" + source->getScriptName() + modifiedStar + "]");
|
||||
} else {
|
||||
this->setWindowTitle("Script Editor [New script" + modifiedStar + "]");
|
||||
}
|
||||
}
|
||||
}
|
54
interface/src/ui/ScriptEditorWindow.h
Normal file
54
interface/src/ui/ScriptEditorWindow.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
//
|
||||
// ScriptEditorWindow.h
|
||||
// interface/src/ui
|
||||
//
|
||||
// Created by Thijs Wenker on 4/14/14.
|
||||
// Copyright 2014 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#ifndef hifi_ScriptEditorWindow_h
|
||||
#define hifi_ScriptEditorWindow_h
|
||||
|
||||
#include "ScriptEditorWidget.h"
|
||||
|
||||
namespace Ui {
|
||||
class ScriptEditorWindow;
|
||||
}
|
||||
|
||||
class ScriptEditorWindow : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ScriptEditorWindow();
|
||||
~ScriptEditorWindow();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
||||
private:
|
||||
Ui::ScriptEditorWindow* _ScriptEditorWindowUI;
|
||||
QMenu* _loadMenu;
|
||||
QMenu* _saveMenu;
|
||||
|
||||
ScriptEditorWidget* addScriptEditorWidget(QString title);
|
||||
void setRunningState(bool run);
|
||||
void setScriptName(const QString& scriptName);
|
||||
|
||||
private slots:
|
||||
void loadScriptMenu(const QString& scriptName);
|
||||
void loadScriptClicked();
|
||||
void newScriptClicked();
|
||||
void toggleRunScriptClicked();
|
||||
void saveScriptClicked();
|
||||
void saveScriptAsClicked();
|
||||
void loadMenuAboutToShow();
|
||||
void tabSwitched(int tabIndex);
|
||||
void tabCloseRequested(int tabIndex);
|
||||
void updateScriptNameOrStatus();
|
||||
void updateButtons();
|
||||
};
|
||||
|
||||
#endif // hifi_ScriptEditorWindow_h
|
148
interface/ui/scriptEditorWidget.ui
Normal file
148
interface/ui/scriptEditorWidget.ui
Normal file
|
@ -0,0 +1,148 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ScriptEditorWidget</class>
|
||||
<widget class="QDockWidget" name="ScriptEditorWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>691</width>
|
||||
<height>549</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>541</width>
|
||||
<height>238</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font-family: Helvetica, Arial, sans-serif;</string>
|
||||
</property>
|
||||
<property name="features">
|
||||
<set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
|
||||
</property>
|
||||
<property name="allowedAreas">
|
||||
<set>Qt::NoDockWidgetArea</set>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Edit Script</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="dockWidgetContents">
|
||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="5,0,1">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="scriptEdit">
|
||||
<property name="font">
|
||||
<font>
|
||||
<family>Courier</family>
|
||||
<pointsize>9</pointsize>
|
||||
<weight>50</weight>
|
||||
<italic>false</italic>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 9pt "Courier";</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Debug Log:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="onTheFlyCheckBox">
|
||||
<property name="text">
|
||||
<string>Run on the fly (Careful: Any valid change made to the code will run immediately)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="clearButton">
|
||||
<property name="text">
|
||||
<string>Clear</string>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="debugText">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font: 8pt "Courier";</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>clearButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>debugText</receiver>
|
||||
<slot>clear()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>663</x>
|
||||
<y>447</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>350</x>
|
||||
<y>501</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
331
interface/ui/scriptEditorWindow.ui
Normal file
331
interface/ui/scriptEditorWindow.ui
Normal file
|
@ -0,0 +1,331 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ScriptEditorWindow</class>
|
||||
<widget class="QWidget" name="ScriptEditorWindow">
|
||||
<property name="windowModality">
|
||||
<enum>Qt::WindowModal</enum>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>706</width>
|
||||
<height>682</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>250</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Script Editor</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">font-family: Helvetica, Arial, sans-serif;</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0">
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetNoConstraint</enum>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="newButton">
|
||||
<property name="toolTip">
|
||||
<string>New Script (Ctrl+N)</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>New</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>../resources/icons/new-script.svg</normaloff>
|
||||
<normalon>../resources/icons/new-script.svg</normalon>../resources/icons/new-script.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="loadButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Load Script (Ctrl+O)</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Load</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>../resources/icons/load-script.svg</normaloff>../resources/icons/load-script.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="popupMode">
|
||||
<enum>QToolButton::MenuButtonPopup</enum>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonIconOnly</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="saveButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::NoContextMenu</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Save Script (Ctrl+S)</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>../resources/icons/save-script.svg</normaloff>../resources/icons/save-script.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRepeatDelay">
|
||||
<number>316</number>
|
||||
</property>
|
||||
<property name="popupMode">
|
||||
<enum>QToolButton::MenuButtonPopup</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="toggleRunButton">
|
||||
<property name="toolTip">
|
||||
<string>Toggle Run Script (F5)</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Run/Stop</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
<normaloff>../resources/icons/start-script.svg</normaloff>../resources/icons/start-script.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>32</width>
|
||||
<height>32</height>
|
||||
</size>
|
||||
</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>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>250</width>
|
||||
<height>80</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="tabPosition">
|
||||
<enum>QTabWidget::West</enum>
|
||||
</property>
|
||||
<property name="tabShape">
|
||||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="elideMode">
|
||||
<enum>Qt::ElideNone</enum>
|
||||
</property>
|
||||
<property name="tabsClosable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="movable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>saveButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>ScriptEditorWindow</receiver>
|
||||
<slot>saveScriptClicked()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>236</x>
|
||||
<y>10</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>264</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>toggleRunButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>ScriptEditorWindow</receiver>
|
||||
<slot>toggleRunScriptClicked()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>330</x>
|
||||
<y>10</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>264</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>newButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>ScriptEditorWindow</receiver>
|
||||
<slot>newScriptClicked()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>58</x>
|
||||
<y>10</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>264</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>loadButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>ScriptEditorWindow</receiver>
|
||||
<slot>loadScriptClicked()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>85</x>
|
||||
<y>10</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>264</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>tabWidget</sender>
|
||||
<signal>currentChanged(int)</signal>
|
||||
<receiver>ScriptEditorWindow</receiver>
|
||||
<slot>tabSwitched(int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>352</x>
|
||||
<y>360</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>352</x>
|
||||
<y>340</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>tabWidget</sender>
|
||||
<signal>tabCloseRequested(int)</signal>
|
||||
<receiver>ScriptEditorWindow</receiver>
|
||||
<slot>tabCloseRequested(int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>352</x>
|
||||
<y>360</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>352</x>
|
||||
<y>340</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
|
@ -43,6 +43,11 @@ static QScriptValue soundConstructor(QScriptContext* context, QScriptEngine* eng
|
|||
return soundScriptValue;
|
||||
}
|
||||
|
||||
static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine){
|
||||
qDebug() << "script:print()<<" << context->argument(0).toString();
|
||||
engine->evaluate("Script.print('" + context->argument(0).toString() + "')");
|
||||
return QScriptValue();
|
||||
}
|
||||
|
||||
ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNameString,
|
||||
AbstractControllerScriptingInterface* controllerScriptingInterface) :
|
||||
|
@ -115,6 +120,7 @@ ScriptEngine::ScriptEngine(const QUrl& scriptURL,
|
|||
_scriptContents = in.readAll();
|
||||
} else {
|
||||
qDebug() << "ERROR Loading file:" << fileName;
|
||||
emit errorMessage("ERROR Loading file:" + fileName);
|
||||
}
|
||||
} else {
|
||||
QNetworkAccessManager* networkManager = new QNetworkAccessManager(this);
|
||||
|
@ -200,6 +206,9 @@ void ScriptEngine::init() {
|
|||
qScriptRegisterSequenceMetaType<QVector<glm::quat> >(&_engine);
|
||||
qScriptRegisterSequenceMetaType<QVector<QString> >(&_engine);
|
||||
|
||||
QScriptValue printConstructorValue = _engine.newFunction(debugPrint);
|
||||
_engine.globalObject().setProperty("print", printConstructorValue);
|
||||
|
||||
QScriptValue soundConstructorValue = _engine.newFunction(soundConstructor);
|
||||
QScriptValue soundMetaObject = _engine.newQMetaObject(&Sound::staticMetaObject, soundConstructorValue);
|
||||
_engine.globalObject().setProperty("Sound", soundMetaObject);
|
||||
|
@ -246,6 +255,7 @@ void ScriptEngine::evaluate() {
|
|||
if (_engine.hasUncaughtException()) {
|
||||
int line = _engine.uncaughtExceptionLineNumber();
|
||||
qDebug() << "Uncaught exception at line" << line << ":" << result.toString();
|
||||
emit errorMessage("Uncaught exception at line" + QString::number(line) + ":" + result.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -266,11 +276,14 @@ void ScriptEngine::run() {
|
|||
init();
|
||||
}
|
||||
_isRunning = true;
|
||||
emit runningStateChanged();
|
||||
|
||||
QScriptValue result = _engine.evaluate(_scriptContents);
|
||||
if (_engine.hasUncaughtException()) {
|
||||
int line = _engine.uncaughtExceptionLineNumber();
|
||||
|
||||
qDebug() << "Uncaught exception at line" << line << ":" << result.toString();
|
||||
emit errorMessage("Uncaught exception at line" + QString::number(line) + ":" + result.toString());
|
||||
}
|
||||
|
||||
timeval startTime;
|
||||
|
@ -401,6 +414,7 @@ void ScriptEngine::run() {
|
|||
if (_engine.hasUncaughtException()) {
|
||||
int line = _engine.uncaughtExceptionLineNumber();
|
||||
qDebug() << "Uncaught exception at line" << line << ":" << _engine.uncaughtException().toString();
|
||||
emit errorMessage("Uncaught exception at line" + QString::number(line) + ":" + _engine.uncaughtException().toString());
|
||||
}
|
||||
}
|
||||
emit scriptEnding();
|
||||
|
@ -436,10 +450,12 @@ void ScriptEngine::run() {
|
|||
emit finished(_fileNameString);
|
||||
|
||||
_isRunning = false;
|
||||
emit runningStateChanged();
|
||||
}
|
||||
|
||||
void ScriptEngine::stop() {
|
||||
_isFinished = true;
|
||||
emit runningStateChanged();
|
||||
}
|
||||
|
||||
void ScriptEngine::timerFired() {
|
||||
|
@ -510,6 +526,10 @@ QUrl ScriptEngine::resolveInclude(const QString& include) const {
|
|||
return url;
|
||||
}
|
||||
|
||||
void ScriptEngine::print(const QString& message) {
|
||||
emit printedMessage(message);
|
||||
}
|
||||
|
||||
void ScriptEngine::include(const QString& includeFile) {
|
||||
QUrl url = resolveInclude(includeFile);
|
||||
QString includeContents;
|
||||
|
@ -523,6 +543,7 @@ void ScriptEngine::include(const QString& includeFile) {
|
|||
includeContents = in.readAll();
|
||||
} else {
|
||||
qDebug() << "ERROR Loading file:" << fileName;
|
||||
emit errorMessage("ERROR Loading file:" + fileName);
|
||||
}
|
||||
} else {
|
||||
QNetworkAccessManager* networkManager = new QNetworkAccessManager(this);
|
||||
|
@ -538,5 +559,6 @@ void ScriptEngine::include(const QString& includeFile) {
|
|||
if (_engine.hasUncaughtException()) {
|
||||
int line = _engine.uncaughtExceptionLineNumber();
|
||||
qDebug() << "Uncaught exception at (" << includeFile << ") line" << line << ":" << result.toString();
|
||||
emit errorMessage("Uncaught exception at (" + includeFile + ") line" + QString::number(line) + ":" + result.toString());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -80,6 +80,9 @@ public:
|
|||
|
||||
bool hasScript() const { return !_scriptContents.isEmpty(); }
|
||||
|
||||
bool isFinished() const { return _isFinished; }
|
||||
bool isRunning() const { return _isRunning; }
|
||||
|
||||
public slots:
|
||||
void stop();
|
||||
|
||||
|
@ -88,12 +91,16 @@ public slots:
|
|||
void clearInterval(QObject* timer) { stopTimer(reinterpret_cast<QTimer*>(timer)); }
|
||||
void clearTimeout(QObject* timer) { stopTimer(reinterpret_cast<QTimer*>(timer)); }
|
||||
void include(const QString& includeFile);
|
||||
void print(const QString& message);
|
||||
|
||||
signals:
|
||||
void update(float deltaTime);
|
||||
void scriptEnding();
|
||||
void finished(const QString& fileNameString);
|
||||
void cleanupMenuItem(const QString& menuItemString);
|
||||
void printedMessage(const QString& message);
|
||||
void errorMessage(const QString& message);
|
||||
void runningStateChanged();
|
||||
|
||||
protected:
|
||||
QString _scriptContents;
|
||||
|
|
Loading…
Reference in a new issue