Unified · Split
| @@ -1,125 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 9 | xmlns="http://www.w3.org/2000/svg" | ||
| 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 12 | width="45" | ||
| 13 | height="45" | ||
| 14 | id="svg3827" | ||
| 15 | version="1.1" | ||
| 16 | inkscape:version="0.48.1 r9760" | ||
| 17 | sodipodi:docname="load-script.svg"> | ||
| 18 | <defs | ||
| 19 | id="defs3829" /> | ||
| 20 | <sodipodi:namedview | ||
| 21 | id="base" | ||
| 22 | pagecolor="#ffffff" | ||
| 23 | bordercolor="#666666" | ||
| 24 | borderopacity="1.0" | ||
| 25 | inkscape:pageopacity="0.0" | ||
| 26 | inkscape:pageshadow="2" | ||
| 27 | inkscape:zoom="3.959798" | ||
| 28 | inkscape:cx="171.17264" | ||
| 29 | inkscape:cy="-8.0710166" | ||
| 30 | inkscape:document-units="px" | ||
| 31 | inkscape:current-layer="layer1" | ||
| 32 | showgrid="false" | ||
| 33 | inkscape:window-width="1920" | ||
| 34 | inkscape:window-height="1028" | ||
| 35 | inkscape:window-x="-8" | ||
| 36 | inkscape:window-y="-8" | ||
| 37 | inkscape:window-maximized="1" /> | ||
| 38 | <metadata | ||
| 39 | id="metadata3832"> | ||
| 40 | <rdf:RDF> | ||
| 41 | <cc:Work | ||
| 42 | rdf:about=""> | ||
| 43 | <dc:format>image/svg+xml</dc:format> | ||
| 44 | <dc:type | ||
| 45 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 46 | <dc:title></dc:title> | ||
| 47 | <dc:creator> | ||
| 48 | <cc:Agent> | ||
| 49 | <dc:title>T.Hofmeister</dc:title> | ||
| 50 | </cc:Agent> | ||
| 51 | </dc:creator> | ||
| 52 | </cc:Work> | ||
| 53 | </rdf:RDF> | ||
| 54 | </metadata> | ||
| 55 | <g | ||
| 56 | inkscape:label="Ebene 1" | ||
| 57 | inkscape:groupmode="layer" | ||
| 58 | id="layer1" | ||
| 59 | transform="translate(0,-1007.3622)"> | ||
| 60 | <g | ||
| 61 | id="layer1-7" | ||
| 62 | transform="matrix(-0.25019951,0,0,0.28877175,123.44112,917.40972)" | ||
| 63 | style="fill:#696969"> | ||
| 64 | <g | ||
| 65 | id="g3257" | ||
| 66 | transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)" | ||
| 67 | style="fill:#696969"> | ||
| 68 | <path | ||
| 69 | id="path3224" | ||
| 70 | 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" | ||
| 71 | style="fill:#696969;fill-rule:evenodd" | ||
| 72 | inkscape:connector-curvature="0" /> | ||
| 73 | <path | ||
| 74 | id="path3237" | ||
| 75 | d="m 531.39,275.61 23.34,-4.6" | ||
| 76 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 77 | inkscape:connector-curvature="0" /> | ||
| 78 | <path | ||
| 79 | id="path3243" | ||
| 80 | d="m 532.1,280.91 22.27,-2.83" | ||
| 81 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 82 | inkscape:connector-curvature="0" /> | ||
| 83 | <path | ||
| 84 | id="path3247" | ||
| 85 | d="m 531.92,285.86 22.89,-1.95" | ||
| 86 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 87 | inkscape:connector-curvature="0" /> | ||
| 88 | <path | ||
| 89 | id="path3249" | ||
| 90 | d="m 530.15,292.84 24.22,-2.12" | ||
| 91 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 92 | inkscape:connector-curvature="0" /> | ||
| 93 | <path | ||
| 94 | id="path3251" | ||
| 95 | d="m 529.45,297.53 22.98,-0.8" | ||
| 96 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 97 | inkscape:connector-curvature="0" /> | ||
| 98 | <path | ||
| 99 | id="path3253" | ||
| 100 | d="m 528.65,304.24 22.45,-2.56" | ||
| 101 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 102 | inkscape:connector-curvature="0" /> | ||
| 103 | <path | ||
| 104 | id="path3255" | ||
| 105 | d="m 527.5,309.37 22.81,-1.77" | ||
| 106 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 107 | inkscape:connector-curvature="0" /> | ||
| 108 | </g> | ||
| 109 | </g> | ||
| 110 | <path | ||
| 111 | display="block" | ||
| 112 | 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" | ||
| 113 | style="color:#000000;fill:#a9a9a9;stroke:#000000;stroke-width:0.61923206;display:block" | ||
| 114 | id="path1432" | ||
| 115 | inkscape:connector-curvature="0" | ||
| 116 | sodipodi:nodetypes="cccccccc" /> | ||
| 117 | <rect | ||
| 118 | 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" | ||
| 119 | id="rect3032" | ||
| 120 | width="44.57473" | ||
| 121 | height="44.57473" | ||
| 122 | x="0.18852967" | ||
| 123 | y="1007.5989" /> | ||
| 124 | </g> | ||
| 125 | </svg> | ||
| @@ -1,129 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 9 | xmlns="http://www.w3.org/2000/svg" | ||
| 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 12 | width="45" | ||
| 13 | height="45" | ||
| 14 | id="svg3827" | ||
| 15 | version="1.1" | ||
| 16 | inkscape:version="0.48.1 r9760" | ||
| 17 | sodipodi:docname="new-script - Kopie (2).svg"> | ||
| 18 | <defs | ||
| 19 | id="defs3829" /> | ||
| 20 | <sodipodi:namedview | ||
| 21 | id="base" | ||
| 22 | pagecolor="#ffffff" | ||
| 23 | bordercolor="#666666" | ||
| 24 | borderopacity="1.0" | ||
| 25 | inkscape:pageopacity="0.0" | ||
| 26 | inkscape:pageshadow="2" | ||
| 27 | inkscape:zoom="5.6" | ||
| 28 | inkscape:cx="39.376692" | ||
| 29 | inkscape:cy="9.0006701" | ||
| 30 | inkscape:document-units="px" | ||
| 31 | inkscape:current-layer="layer1" | ||
| 32 | showgrid="false" | ||
| 33 | inkscape:window-width="1920" | ||
| 34 | inkscape:window-height="1028" | ||
| 35 | inkscape:window-x="-8" | ||
| 36 | inkscape:window-y="-8" | ||
| 37 | inkscape:window-maximized="1" /> | ||
| 38 | <metadata | ||
| 39 | id="metadata3832"> | ||
| 40 | <rdf:RDF> | ||
| 41 | <cc:Work | ||
| 42 | rdf:about=""> | ||
| 43 | <dc:format>image/svg+xml</dc:format> | ||
| 44 | <dc:type | ||
| 45 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 46 | <dc:title /> | ||
| 47 | <dc:creator> | ||
| 48 | <cc:Agent> | ||
| 49 | <dc:title>T.Hofmeister</dc:title> | ||
| 50 | </cc:Agent> | ||
| 51 | </dc:creator> | ||
| 52 | </cc:Work> | ||
| 53 | </rdf:RDF> | ||
| 54 | </metadata> | ||
| 55 | <g | ||
| 56 | inkscape:label="Ebene 1" | ||
| 57 | inkscape:groupmode="layer" | ||
| 58 | id="layer1" | ||
| 59 | transform="translate(0,-1007.3622)"> | ||
| 60 | <rect | ||
| 61 | 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" | ||
| 62 | id="rect3032" | ||
| 63 | width="44.57473" | ||
| 64 | height="44.57473" | ||
| 65 | x="0.18852967" | ||
| 66 | y="1007.5989" /> | ||
| 67 | <g | ||
| 68 | id="layer1-7-7" | ||
| 69 | transform="matrix(-0.23943965,0,0,0.3096188,117.90945,912.00498)" | ||
| 70 | style="fill:#696969"> | ||
| 71 | <g | ||
| 72 | id="g3257-4" | ||
| 73 | transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)" | ||
| 74 | style="fill:#696969"> | ||
| 75 | <path | ||
| 76 | id="path3224-0" | ||
| 77 | 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" | ||
| 78 | style="fill:#696969;fill-rule:evenodd" | ||
| 79 | inkscape:connector-curvature="0" /> | ||
| 80 | <path | ||
| 81 | id="path3237-9" | ||
| 82 | d="m 531.39,275.61 23.34,-4.6" | ||
| 83 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 84 | inkscape:connector-curvature="0" /> | ||
| 85 | <path | ||
| 86 | id="path3243-4" | ||
| 87 | d="m 532.1,280.91 22.27,-2.83" | ||
| 88 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 89 | inkscape:connector-curvature="0" /> | ||
| 90 | <path | ||
| 91 | id="path3247-8" | ||
| 92 | d="m 531.92,285.86 22.89,-1.95" | ||
| 93 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 94 | inkscape:connector-curvature="0" /> | ||
| 95 | <path | ||
| 96 | id="path3249-8" | ||
| 97 | d="m 530.15,292.84 24.22,-2.12" | ||
| 98 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 99 | inkscape:connector-curvature="0" /> | ||
| 100 | <path | ||
| 101 | id="path3251-2" | ||
| 102 | d="m 529.45,297.53 22.98,-0.8" | ||
| 103 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 104 | inkscape:connector-curvature="0" /> | ||
| 105 | <path | ||
| 106 | id="path3253-4" | ||
| 107 | d="m 528.65,304.24 22.45,-2.56" | ||
| 108 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 109 | inkscape:connector-curvature="0" /> | ||
| 110 | <path | ||
| 111 | id="path3255-5" | ||
| 112 | d="m 527.5,309.37 22.81,-1.77" | ||
| 113 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 114 | inkscape:connector-curvature="0" /> | ||
| 115 | </g> | ||
| 116 | </g> | ||
| 117 | <g | ||
| 118 | id="layer1-1" | ||
| 119 | transform="matrix(0.85515704,0.72492349,-0.91920854,2.1402565,983.21735,-1213.0824)" | ||
| 120 | style="fill:#a9a9a9;stroke:#000000"> | ||
| 121 | <path | ||
| 122 | 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" | ||
| 123 | id="path2996" | ||
| 124 | transform="translate(0,1036.3622)" | ||
| 125 | 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" | ||
| 126 | inkscape:connector-curvature="0" /> | ||
| 127 | </g> | ||
| 128 | </g> | ||
| 129 | </svg> | ||
| @@ -1,674 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 9 | xmlns="http://www.w3.org/2000/svg" | ||
| 10 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
| 11 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 13 | width="45" | ||
| 14 | height="45" | ||
| 15 | id="svg3827" | ||
| 16 | version="1.1" | ||
| 17 | inkscape:version="0.48.1 r9760" | ||
| 18 | sodipodi:docname="load-script - Kopie.svg"> | ||
| 19 | <defs | ||
| 20 | id="defs3829"> | ||
| 21 | <linearGradient | ||
| 22 | x1="28.061" | ||
| 23 | x2="28.061" | ||
| 24 | y1="31.431" | ||
| 25 | gradientUnits="userSpaceOnUse" | ||
| 26 | y2="36.437" | ||
| 27 | id="linearGradient6971"> | ||
| 28 | <stop | ||
| 29 | offset="0" | ||
| 30 | stop-color="#ddd" | ||
| 31 | id="stop6967" /> | ||
| 32 | <stop | ||
| 33 | offset="1" | ||
| 34 | stop-color="#fdfdfd" | ||
| 35 | id="stop6969" /> | ||
| 36 | </linearGradient> | ||
| 37 | <linearGradient | ||
| 38 | x1="12.25" | ||
| 39 | x2="7" | ||
| 40 | y1="18.25" | ||
| 41 | gradientUnits="userSpaceOnUse" | ||
| 42 | y2="21.118" | ||
| 43 | id="linearGradient6931"> | ||
| 44 | <stop | ||
| 45 | offset="0" | ||
| 46 | stop-color="#204a87" | ||
| 47 | id="stop6927" /> | ||
| 48 | <stop | ||
| 49 | offset="1" | ||
| 50 | stop-opacity="0" | ||
| 51 | stop-color="#204a87" | ||
| 52 | id="stop6929" /> | ||
| 53 | </linearGradient> | ||
| 54 | <linearGradient | ||
| 55 | x1="14.752" | ||
| 56 | x2="8.8953" | ||
| 57 | y1="15.868" | ||
| 58 | gradientUnits="userSpaceOnUse" | ||
| 59 | y2="16.743" | ||
| 60 | id="linearGradient6907"> | ||
| 61 | <stop | ||
| 62 | offset="0" | ||
| 63 | stop-color="#3465a4" | ||
| 64 | id="stop6903" /> | ||
| 65 | <stop | ||
| 66 | offset="1" | ||
| 67 | stop-opacity="0" | ||
| 68 | stop-color="#3465a4" | ||
| 69 | id="stop6905" /> | ||
| 70 | </linearGradient> | ||
| 71 | <linearGradient | ||
| 72 | x1="33.431" | ||
| 73 | x2="21.748" | ||
| 74 | y1="31.965" | ||
| 75 | gradientUnits="userSpaceOnUse" | ||
| 76 | y2="11.781" | ||
| 77 | id="linearGradient2553"> | ||
| 78 | <stop | ||
| 79 | offset="0" | ||
| 80 | stop-color="#fff" | ||
| 81 | id="stop2557" /> | ||
| 82 | <stop | ||
| 83 | offset=".5" | ||
| 84 | stop-color="#e6e6e6" | ||
| 85 | id="stop2561" /> | ||
| 86 | <stop | ||
| 87 | offset=".75" | ||
| 88 | stop-color="#fff" | ||
| 89 | id="stop2563" /> | ||
| 90 | <stop | ||
| 91 | offset=".84167" | ||
| 92 | stop-color="#e1e1e1" | ||
| 93 | id="stop2565" /> | ||
| 94 | <stop | ||
| 95 | offset="1" | ||
| 96 | stop-color="#fff" | ||
| 97 | id="stop2559" /> | ||
| 98 | </linearGradient> | ||
| 99 | <linearGradient | ||
| 100 | y2="26.357" | ||
| 101 | y1="11.319" | ||
| 102 | gradientTransform="translate(0,5.125)" | ||
| 103 | x2="23.688" | ||
| 104 | gradientUnits="userSpaceOnUse" | ||
| 105 | x1="23.688" | ||
| 106 | id="linearGradient4272"> | ||
| 107 | <stop | ||
| 108 | offset="0" | ||
| 109 | stop-opacity=".2549" | ||
| 110 | stop-color="#fff" | ||
| 111 | id="stop4276" /> | ||
| 112 | <stop | ||
| 113 | offset="1" | ||
| 114 | stop-color="#fff" | ||
| 115 | id="stop4278" /> | ||
| 116 | </linearGradient> | ||
| 117 | <linearGradient | ||
| 118 | y2="47.621" | ||
| 119 | y1="4.4331" | ||
| 120 | gradientTransform="translate(0,5.125)" | ||
| 121 | x2="44.096" | ||
| 122 | gradientUnits="userSpaceOnUse" | ||
| 123 | x1="12.378" | ||
| 124 | id="linearGradient4260"> | ||
| 125 | <stop | ||
| 126 | offset="0" | ||
| 127 | stop-color="#fff" | ||
| 128 | id="stop4256" /> | ||
| 129 | <stop | ||
| 130 | offset="1" | ||
| 131 | stop-opacity="0" | ||
| 132 | stop-color="#fff" | ||
| 133 | id="stop4258" /> | ||
| 134 | </linearGradient> | ||
| 135 | <radialGradient | ||
| 136 | r="20.936" | ||
| 137 | gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)" | ||
| 138 | cx="15.571" | ||
| 139 | cy="2.9585" | ||
| 140 | gradientUnits="userSpaceOnUse" | ||
| 141 | id="radialGradient4250"> | ||
| 142 | <stop | ||
| 143 | offset="0" | ||
| 144 | stop-color="#e4e4e4" | ||
| 145 | id="stop4246" /> | ||
| 146 | <stop | ||
| 147 | offset="1" | ||
| 148 | stop-color="#d3d3d3" | ||
| 149 | id="stop4248" /> | ||
| 150 | </radialGradient> | ||
| 151 | <linearGradient | ||
| 152 | y2="33.759" | ||
| 153 | y1="37.206" | ||
| 154 | gradientTransform="translate(0,5.125)" | ||
| 155 | x2="12.222" | ||
| 156 | gradientUnits="userSpaceOnUse" | ||
| 157 | x1="12.277" | ||
| 158 | id="linearGradient4242"> | ||
| 159 | <stop | ||
| 160 | offset="0" | ||
| 161 | stop-color="#eee" | ||
| 162 | id="stop4238" /> | ||
| 163 | <stop | ||
| 164 | offset="1" | ||
| 165 | stop-opacity="0" | ||
| 166 | stop-color="#eee" | ||
| 167 | id="stop4240" /> | ||
| 168 | </linearGradient> | ||
| 169 | <linearGradient | ||
| 170 | y2="40.944" | ||
| 171 | y1="28.481" | ||
| 172 | gradientTransform="translate(0,5.125)" | ||
| 173 | x2="36.183" | ||
| 174 | gradientUnits="userSpaceOnUse" | ||
| 175 | x1="7.6046" | ||
| 176 | id="linearGradient4234"> | ||
| 177 | <stop | ||
| 178 | offset="0" | ||
| 179 | stop-color="#bbb" | ||
| 180 | id="stop4230" /> | ||
| 181 | <stop | ||
| 182 | offset="1" | ||
| 183 | stop-color="#9f9f9f" | ||
| 184 | id="stop4232" /> | ||
| 185 | </linearGradient> | ||
| 186 | <linearGradient | ||
| 187 | y2="35.281" | ||
| 188 | y1="35.281" | ||
| 189 | gradientTransform="translate(0.79549,3.7992)" | ||
| 190 | x2="24.688" | ||
| 191 | gradientUnits="userSpaceOnUse" | ||
| 192 | x1="7.0625" | ||
| 193 | id="linearGradient4209"> | ||
| 194 | <stop | ||
| 195 | offset="0" | ||
| 196 | stop-color="#838383" | ||
| 197 | id="stop4186" /> | ||
| 198 | <stop | ||
| 199 | offset="1" | ||
| 200 | stop-opacity="0" | ||
| 201 | stop-color="#bbb" | ||
| 202 | id="stop4188" /> | ||
| 203 | </linearGradient> | ||
| 204 | <radialGradient | ||
| 205 | r="15.645" | ||
| 206 | gradientTransform="matrix(1,0,0,0.53672,0,16.873)" | ||
| 207 | cx="24.837" | ||
| 208 | cy="36.421" | ||
| 209 | gradientUnits="userSpaceOnUse" | ||
| 210 | id="radialGradient8668"> | ||
| 211 | <stop | ||
| 212 | offset="0" | ||
| 213 | id="stop8664" /> | ||
| 214 | <stop | ||
| 215 | offset="1" | ||
| 216 | stop-opacity="0" | ||
| 217 | id="stop8666" /> | ||
| 218 | </radialGradient> | ||
| 219 | <linearGradient | ||
| 220 | y2="12.584" | ||
| 221 | x2="12.624" | ||
| 222 | gradientTransform="matrix(0.91411,0,0,0.91411,-3.8687,-2.7069)" | ||
| 223 | y1="27.394" | ||
| 224 | gradientUnits="userSpaceOnUse" | ||
| 225 | x1="33.06" | ||
| 226 | id="linearGradient1764"> | ||
| 227 | <stop | ||
| 228 | offset="0" | ||
| 229 | stop-color="#fff" | ||
| 230 | id="stop2189" /> | ||
| 231 | <stop | ||
| 232 | offset="1" | ||
| 233 | stop-opacity="0" | ||
| 234 | stop-color="#fff" | ||
| 235 | id="stop2191" /> | ||
| 236 | </linearGradient> | ||
| 237 | <radialGradient | ||
| 238 | r="19.062" | ||
| 239 | gradientTransform="matrix(-1.3145,-0.010063,-0.01023,1.3362,46.221,-4.9099)" | ||
| 240 | cx="23.447" | ||
| 241 | cy="6.4577" | ||
| 242 | gradientUnits="userSpaceOnUse" | ||
| 243 | id="radialGradient4997"> | ||
| 244 | <stop | ||
| 245 | offset="0" | ||
| 246 | stop-color="#fff" | ||
| 247 | id="stop4993" /> | ||
| 248 | <stop | ||
| 249 | offset="1" | ||
| 250 | stop-opacity="0" | ||
| 251 | stop-color="#fff" | ||
| 252 | id="stop4995" /> | ||
| 253 | </radialGradient> | ||
| 254 | <linearGradient | ||
| 255 | y2="609.51" | ||
| 256 | x2="302.86" | ||
| 257 | gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)" | ||
| 258 | y1="366.65" | ||
| 259 | gradientUnits="userSpaceOnUse" | ||
| 260 | x1="302.86" | ||
| 261 | id="linearGradient5027"> | ||
| 262 | <stop | ||
| 263 | offset="0" | ||
| 264 | stop-opacity="0" | ||
| 265 | id="stop5050" /> | ||
| 266 | <stop | ||
| 267 | offset=".5" | ||
| 268 | id="stop5056" /> | ||
| 269 | <stop | ||
| 270 | offset="1" | ||
| 271 | stop-opacity="0" | ||
| 272 | id="stop5052" /> | ||
| 273 | </linearGradient> | ||
| 274 | <radialGradient | ||
| 275 | r="117.14" | ||
| 276 | gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)" | ||
| 277 | cx="605.71" | ||
| 278 | cy="486.65" | ||
| 279 | gradientUnits="userSpaceOnUse" | ||
| 280 | xlink:href="#linearGradient5060" | ||
| 281 | id="radialGradient5029" /> | ||
| 282 | <linearGradient | ||
| 283 | id="linearGradient5060"> | ||
| 284 | <stop | ||
| 285 | offset="0" | ||
| 286 | id="stop5062" /> | ||
| 287 | <stop | ||
| 288 | offset="1" | ||
| 289 | stop-opacity="0" | ||
| 290 | id="stop5064" /> | ||
| 291 | </linearGradient> | ||
| 292 | <radialGradient | ||
| 293 | r="117.14" | ||
| 294 | gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)" | ||
| 295 | cx="605.71" | ||
| 296 | cy="486.65" | ||
| 297 | gradientUnits="userSpaceOnUse" | ||
| 298 | xlink:href="#linearGradient5060" | ||
| 299 | id="radialGradient5031" /> | ||
| 300 | <linearGradient | ||
| 301 | inkscape:collect="always" | ||
| 302 | xlink:href="#linearGradient6971" | ||
| 303 | id="linearGradient3239" | ||
| 304 | gradientUnits="userSpaceOnUse" | ||
| 305 | x1="28.061" | ||
| 306 | y1="31.431" | ||
| 307 | x2="28.061" | ||
| 308 | y2="36.437" | ||
| 309 | gradientTransform="translate(51.972416,1005.3761)" /> | ||
| 310 | <radialGradient | ||
| 311 | inkscape:collect="always" | ||
| 312 | xlink:href="#radialGradient8668" | ||
| 313 | id="radialGradient3253" | ||
| 314 | gradientUnits="userSpaceOnUse" | ||
| 315 | gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)" | ||
| 316 | cx="24.837" | ||
| 317 | cy="36.421" | ||
| 318 | r="15.645" /> | ||
| 319 | <linearGradient | ||
| 320 | inkscape:collect="always" | ||
| 321 | xlink:href="#linearGradient5027" | ||
| 322 | id="linearGradient3361" | ||
| 323 | gradientUnits="userSpaceOnUse" | ||
| 324 | gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)" | ||
| 325 | x1="302.86" | ||
| 326 | y1="366.65" | ||
| 327 | x2="302.86" | ||
| 328 | y2="609.51" /> | ||
| 329 | <radialGradient | ||
| 330 | inkscape:collect="always" | ||
| 331 | xlink:href="#linearGradient5060" | ||
| 332 | id="radialGradient3363" | ||
| 333 | gradientUnits="userSpaceOnUse" | ||
| 334 | gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)" | ||
| 335 | cx="605.71" | ||
| 336 | cy="486.65" | ||
| 337 | r="117.14" /> | ||
| 338 | <radialGradient | ||
| 339 | inkscape:collect="always" | ||
| 340 | xlink:href="#linearGradient5060" | ||
| 341 | id="radialGradient3365" | ||
| 342 | gradientUnits="userSpaceOnUse" | ||
| 343 | gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)" | ||
| 344 | cx="605.71" | ||
| 345 | cy="486.65" | ||
| 346 | r="117.14" /> | ||
| 347 | <linearGradient | ||
| 348 | inkscape:collect="always" | ||
| 349 | xlink:href="#linearGradient4234" | ||
| 350 | id="linearGradient3367" | ||
| 351 | gradientUnits="userSpaceOnUse" | ||
| 352 | gradientTransform="translate(0,5.125)" | ||
| 353 | x1="7.6046" | ||
| 354 | y1="28.481" | ||
| 355 | x2="36.183" | ||
| 356 | y2="40.944" /> | ||
| 357 | <radialGradient | ||
| 358 | inkscape:collect="always" | ||
| 359 | xlink:href="#radialGradient4250" | ||
| 360 | id="radialGradient3369" | ||
| 361 | gradientUnits="userSpaceOnUse" | ||
| 362 | gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)" | ||
| 363 | cx="15.571" | ||
| 364 | cy="2.9585" | ||
| 365 | r="20.936" /> | ||
| 366 | <linearGradient | ||
| 367 | inkscape:collect="always" | ||
| 368 | xlink:href="#linearGradient4209" | ||
| 369 | id="linearGradient3371" | ||
| 370 | gradientUnits="userSpaceOnUse" | ||
| 371 | gradientTransform="translate(0.79549,3.7992)" | ||
| 372 | x1="7.0625" | ||
| 373 | y1="35.281" | ||
| 374 | x2="24.688" | ||
| 375 | y2="35.281" /> | ||
| 376 | <linearGradient | ||
| 377 | inkscape:collect="always" | ||
| 378 | xlink:href="#linearGradient4242" | ||
| 379 | id="linearGradient3373" | ||
| 380 | gradientUnits="userSpaceOnUse" | ||
| 381 | gradientTransform="translate(0,5.125)" | ||
| 382 | x1="12.277" | ||
| 383 | y1="37.206" | ||
| 384 | x2="12.222" | ||
| 385 | y2="33.759" /> | ||
| 386 | <linearGradient | ||
| 387 | inkscape:collect="always" | ||
| 388 | xlink:href="#linearGradient4272" | ||
| 389 | id="linearGradient3375" | ||
| 390 | gradientUnits="userSpaceOnUse" | ||
| 391 | gradientTransform="translate(0,5.125)" | ||
| 392 | x1="23.688" | ||
| 393 | y1="11.319" | ||
| 394 | x2="23.688" | ||
| 395 | y2="26.357" /> | ||
| 396 | <linearGradient | ||
| 397 | inkscape:collect="always" | ||
| 398 | xlink:href="#linearGradient4260" | ||
| 399 | id="linearGradient3377" | ||
| 400 | gradientUnits="userSpaceOnUse" | ||
| 401 | gradientTransform="translate(0,5.125)" | ||
| 402 | x1="12.378" | ||
| 403 | y1="4.4331" | ||
| 404 | x2="44.096" | ||
| 405 | y2="47.621" /> | ||
| 406 | <linearGradient | ||
| 407 | inkscape:collect="always" | ||
| 408 | xlink:href="#linearGradient2553" | ||
| 409 | id="linearGradient3379" | ||
| 410 | gradientUnits="userSpaceOnUse" | ||
| 411 | x1="33.431" | ||
| 412 | y1="31.965" | ||
| 413 | x2="21.748" | ||
| 414 | y2="11.781" /> | ||
| 415 | <radialGradient | ||
| 416 | inkscape:collect="always" | ||
| 417 | xlink:href="#radialGradient8668" | ||
| 418 | id="radialGradient3381" | ||
| 419 | gradientUnits="userSpaceOnUse" | ||
| 420 | gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)" | ||
| 421 | cx="24.837" | ||
| 422 | cy="36.421" | ||
| 423 | r="15.645" /> | ||
| 424 | <linearGradient | ||
| 425 | inkscape:collect="always" | ||
| 426 | xlink:href="#linearGradient6971" | ||
| 427 | id="linearGradient3383" | ||
| 428 | gradientUnits="userSpaceOnUse" | ||
| 429 | gradientTransform="translate(51.972416,1005.3761)" | ||
| 430 | x1="28.061" | ||
| 431 | y1="31.431" | ||
| 432 | x2="28.061" | ||
| 433 | y2="36.437" /> | ||
| 434 | </defs> | ||
| 435 | <sodipodi:namedview | ||
| 436 | id="base" | ||
| 437 | pagecolor="#ffffff" | ||
| 438 | bordercolor="#666666" | ||
| 439 | borderopacity="1.0" | ||
| 440 | inkscape:pageopacity="0.0" | ||
| 441 | inkscape:pageshadow="2" | ||
| 442 | inkscape:zoom="5.6" | ||
| 443 | inkscape:cx="113.76169" | ||
| 444 | inkscape:cy="-12.107928" | ||
| 445 | inkscape:document-units="px" | ||
| 446 | inkscape:current-layer="layer1" | ||
| 447 | showgrid="false" | ||
| 448 | inkscape:window-width="1920" | ||
| 449 | inkscape:window-height="1028" | ||
| 450 | inkscape:window-x="-8" | ||
| 451 | inkscape:window-y="-8" | ||
| 452 | inkscape:window-maximized="1" /> | ||
| 453 | <metadata | ||
| 454 | id="metadata3832"> | ||
| 455 | <rdf:RDF> | ||
| 456 | <cc:Work | ||
| 457 | rdf:about=""> | ||
| 458 | <dc:format>image/svg+xml</dc:format> | ||
| 459 | <dc:type | ||
| 460 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 461 | <dc:title></dc:title> | ||
| 462 | <dc:creator> | ||
| 463 | <cc:Agent> | ||
| 464 | <dc:title>T.Hofmeister</dc:title> | ||
| 465 | </cc:Agent> | ||
| 466 | </dc:creator> | ||
| 467 | </cc:Work> | ||
| 468 | </rdf:RDF> | ||
| 469 | </metadata> | ||
| 470 | <g | ||
| 471 | inkscape:label="Ebene 1" | ||
| 472 | inkscape:groupmode="layer" | ||
| 473 | id="layer1" | ||
| 474 | transform="translate(0,-1007.3622)"> | ||
| 475 | <g | ||
| 476 | id="g3385"> | ||
| 477 | <g | ||
| 478 | transform="matrix(0.87964671,0,0,1,-44.027424,-2)" | ||
| 479 | id="g3255"> | ||
| 480 | <g | ||
| 481 | id="layer2" | ||
| 482 | transform="translate(51.972416,1005.3761)"> | ||
| 483 | <g | ||
| 484 | id="g5022" | ||
| 485 | transform="matrix(0.024114,0,0,0.019292,45.49,41.752)"> | ||
| 486 | <rect | ||
| 487 | id="rect4173" | ||
| 488 | style="opacity:0.40206;color:#000000;fill:url(#linearGradient3361)" | ||
| 489 | height="478.35999" | ||
| 490 | width="1339.6" | ||
| 491 | y="-150.7" | ||
| 492 | x="-1559.3" /> | ||
| 493 | <path | ||
| 494 | inkscape:connector-curvature="0" | ||
| 495 | id="path5058" | ||
| 496 | style="opacity:0.40206;color:#000000;fill:url(#radialGradient3363)" | ||
| 497 | 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" /> | ||
| 498 | <path | ||
| 499 | inkscape:connector-curvature="0" | ||
| 500 | id="path5018" | ||
| 501 | style="opacity:0.40206;color:#000000;fill:url(#radialGradient3365)" | ||
| 502 | 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" /> | ||
| 503 | </g> | ||
| 504 | <path | ||
| 505 | style="fill:none;stroke:#535353;stroke-width:2;stroke-linecap:round;stroke-linejoin:round" | ||
| 506 | inkscape:connector-curvature="0" | ||
| 507 | id="path4196" | ||
| 508 | 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" /> | ||
| 509 | <path | ||
| 510 | style="fill:url(#linearGradient3367);fill-rule:evenodd" | ||
| 511 | inkscape:connector-curvature="0" | ||
| 512 | id="path4170" | ||
| 513 | 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" /> | ||
| 514 | <path | ||
| 515 | style="fill:url(#radialGradient3369);fill-rule:evenodd" | ||
| 516 | inkscape:connector-curvature="0" | ||
| 517 | id="path3093" | ||
| 518 | 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" /> | ||
| 519 | <rect | ||
| 520 | id="rect4174" | ||
| 521 | style="color:#000000;fill:url(#linearGradient3371);fill-rule:evenodd" | ||
| 522 | height="5.5625" | ||
| 523 | width="17.625" | ||
| 524 | y="36.299" | ||
| 525 | x="7.8579998" /> | ||
| 526 | <path | ||
| 527 | style="opacity:0.81142997;fill:url(#linearGradient3373);fill-rule:evenodd" | ||
| 528 | inkscape:connector-curvature="0" | ||
| 529 | id="path4194" | ||
| 530 | 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" /> | ||
| 531 | <path | ||
| 532 | style="fill:#ffffff;fill-rule:evenodd" | ||
| 533 | inkscape:connector-curvature="0" | ||
| 534 | id="path4201" | ||
| 535 | 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" /> | ||
| 536 | <path | ||
| 537 | inkscape:connector-curvature="0" | ||
| 538 | id="path4211" | ||
| 539 | style="opacity:0.69142995;color:#000000;fill:url(#linearGradient3375);fill-rule:evenodd" | ||
| 540 | 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" /> | ||
| 541 | <path | ||
| 542 | inkscape:connector-curvature="0" | ||
| 543 | id="path4224" | ||
| 544 | style="color:#000000;fill:#ffffff;fill-opacity:0.45762999;fill-rule:evenodd" | ||
| 545 | 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" | ||
| 546 | transform="translate(0.088388,5.3018)" /> | ||
| 547 | <path | ||
| 548 | inkscape:connector-curvature="0" | ||
| 549 | id="path4226" | ||
| 550 | style="color:#000000;fill:#ffffff;fill-opacity:0.45762999;fill-rule:evenodd" | ||
| 551 | 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" | ||
| 552 | transform="translate(33.967,5.2134)" /> | ||
| 553 | <path | ||
| 554 | style="fill:none;stroke:url(#linearGradient3377);stroke-linecap:round;stroke-linejoin:round" | ||
| 555 | inkscape:connector-curvature="0" | ||
| 556 | id="path4252" | ||
| 557 | 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" /> | ||
| 558 | <path | ||
| 559 | style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999" | ||
| 560 | inkscape:connector-curvature="0" | ||
| 561 | id="path4282" | ||
| 562 | d="m 40.5,36.554 v 5.021" /> | ||
| 563 | <path | ||
| 564 | style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999" | ||
| 565 | inkscape:connector-curvature="0" | ||
| 566 | id="path4284" | ||
| 567 | d="m 38.5,36.614 v 5.021" /> | ||
| 568 | <path | ||
| 569 | style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999" | ||
| 570 | inkscape:connector-curvature="0" | ||
| 571 | id="path4286" | ||
| 572 | d="m 36.5,36.614 v 5.021" /> | ||
| 573 | <path | ||
| 574 | style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999" | ||
| 575 | inkscape:connector-curvature="0" | ||
| 576 | id="path4288" | ||
| 577 | d="m 34.5,36.614 v 5.021" /> | ||
| 578 | <path | ||
| 579 | style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999" | ||
| 580 | inkscape:connector-curvature="0" | ||
| 581 | id="path4290" | ||
| 582 | d="m 32.5,36.614 v 5.021" /> | ||
| 583 | <path | ||
| 584 | style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-opacity:0.42372999" | ||
| 585 | inkscape:connector-curvature="0" | ||
| 586 | id="path4292" | ||
| 587 | d="m 30.5,36.614 v 5.021" /> | ||
| 588 | <path | ||
| 589 | style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square" | ||
| 590 | inkscape:connector-curvature="0" | ||
| 591 | id="path4294" | ||
| 592 | d="m 39.5,36.604 v 5.021" /> | ||
| 593 | <path | ||
| 594 | style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square" | ||
| 595 | inkscape:connector-curvature="0" | ||
| 596 | id="path4296" | ||
| 597 | d="m 37.5,36.664 v 5.021" /> | ||
| 598 | <path | ||
| 599 | style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square" | ||
| 600 | inkscape:connector-curvature="0" | ||
| 601 | id="path4298" | ||
| 602 | d="m 35.5,36.664 v 5.021" /> | ||
| 603 | <path | ||
| 604 | style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square" | ||
| 605 | inkscape:connector-curvature="0" | ||
| 606 | id="path4300" | ||
| 607 | d="m 33.5,36.664 v 5.021" /> | ||
| 608 | <path | ||
| 609 | style="opacity:0.09714302;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square" | ||
| 610 | inkscape:connector-curvature="0" | ||
| 611 | id="path4302" | ||
| 612 | d="m 31.5,36.664 v 5.021" /> | ||
| 613 | <path | ||
| 614 | style="opacity:0.43999999;fill:#ffffff;fill-rule:evenodd" | ||
| 615 | inkscape:connector-curvature="0" | ||
| 616 | id="path4572" | ||
| 617 | d="m 7.875,36.312 v 5.532 H 20.438 L 8.219,41.5 7.875,36.312 z" /> | ||
| 618 | <path | ||
| 619 | inkscape:connector-curvature="0" | ||
| 620 | id="path2545" | ||
| 621 | style="opacity:0.20571002;color:#000000;fill:url(#linearGradient3379);fill-rule:evenodd" | ||
| 622 | 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" | ||
| 623 | transform="matrix(1.0378,0,0,1.0607,-1.6329,3.0304)" /> | ||
| 624 | </g> | ||
| 625 | <path | ||
| 626 | 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" | ||
| 627 | style="opacity:0.14118;color:#000000;fill:url(#radialGradient3381);fill-rule:evenodd" | ||
| 628 | id="path8660" | ||
| 629 | inkscape:connector-curvature="0" /> | ||
| 630 | <rect | ||
| 631 | x="56.535915" | ||
| 632 | y="1035.6741" | ||
| 633 | width="39.248001" | ||
| 634 | height="12.278" | ||
| 635 | ry="1.625" | ||
| 636 | rx="1.625" | ||
| 637 | display="block" | ||
| 638 | style="color:#000000;fill:url(#linearGradient3383);stroke:#7d7d7d;stroke-linecap:round;display:block" | ||
| 639 | id="rect6951" /> | ||
| 640 | <rect | ||
| 641 | x="58.972416" | ||
| 642 | y="1038.3761" | ||
| 643 | width="16" | ||
| 644 | height="7" | ||
| 645 | ry="0" | ||
| 646 | display="block" | ||
| 647 | style="opacity:0.59658999;color:#000000;fill:#7d7d7d;display:block" | ||
| 648 | id="rect6953" /> | ||
| 649 | <rect | ||
| 650 | display="block" | ||
| 651 | height="9" | ||
| 652 | x="75.97242" | ||
| 653 | y="1037.3761" | ||
| 654 | width="1" | ||
| 655 | style="color:#000000;display:block" | ||
| 656 | id="rect6957" /> | ||
| 657 | </g> | ||
| 658 | <path | ||
| 659 | sodipodi:nodetypes="cccccccc" | ||
| 660 | inkscape:connector-curvature="0" | ||
| 661 | id="path1432" | ||
| 662 | style="color:#000000;fill:#a9a9a9;stroke:#000000;stroke-width:0.48586071;display:block" | ||
| 663 | 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" | ||
| 664 | display="block" /> | ||
| 665 | <rect | ||
| 666 | y="1007.8514" | ||
| 667 | x="0.20883489" | ||
| 668 | height="44.57473" | ||
| 669 | width="44.57473" | ||
| 670 | id="rect3032" | ||
| 671 | 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" /> | ||
| 672 | </g> | ||
| 673 | </g> | ||
| 674 | </svg> | ||
| @@ -1,550 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 9 | xmlns="http://www.w3.org/2000/svg" | ||
| 10 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
| 11 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 13 | width="45" | ||
| 14 | height="45" | ||
| 15 | id="svg3827" | ||
| 16 | version="1.1" | ||
| 17 | inkscape:version="0.48.3.1 r9886" | ||
| 18 | sodipodi:docname="start-script.svg"> | ||
| 19 | <defs | ||
| 20 | id="defs3829"> | ||
| 21 | <radialGradient | ||
| 22 | r="15.645" | ||
| 23 | cy="36.421" | ||
| 24 | cx="24.837" | ||
| 25 | gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)" | ||
| 26 | gradientUnits="userSpaceOnUse" | ||
| 27 | id="radialGradient3253" | ||
| 28 | xlink:href="#radialGradient8668" | ||
| 29 | inkscape:collect="always" /> | ||
| 30 | <linearGradient | ||
| 31 | gradientTransform="translate(51.972416,1005.3761)" | ||
| 32 | y2="36.437" | ||
| 33 | x2="28.061" | ||
| 34 | y1="31.431" | ||
| 35 | x1="28.061" | ||
| 36 | gradientUnits="userSpaceOnUse" | ||
| 37 | id="linearGradient3239" | ||
| 38 | xlink:href="#linearGradient6971" | ||
| 39 | inkscape:collect="always" /> | ||
| 40 | <radialGradient | ||
| 41 | id="radialGradient5031" | ||
| 42 | xlink:href="#linearGradient5060" | ||
| 43 | gradientUnits="userSpaceOnUse" | ||
| 44 | cy="486.65" | ||
| 45 | cx="605.71" | ||
| 46 | gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)" | ||
| 47 | r="117.14" /> | ||
| 48 | <linearGradient | ||
| 49 | id="linearGradient5060"> | ||
| 50 | <stop | ||
| 51 | id="stop5062" | ||
| 52 | offset="0" /> | ||
| 53 | <stop | ||
| 54 | id="stop5064" | ||
| 55 | stop-opacity="0" | ||
| 56 | offset="1" /> | ||
| 57 | </linearGradient> | ||
| 58 | <radialGradient | ||
| 59 | id="radialGradient5029" | ||
| 60 | xlink:href="#linearGradient5060" | ||
| 61 | gradientUnits="userSpaceOnUse" | ||
| 62 | cy="486.65" | ||
| 63 | cx="605.71" | ||
| 64 | gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)" | ||
| 65 | r="117.14" /> | ||
| 66 | <linearGradient | ||
| 67 | id="linearGradient5027" | ||
| 68 | x1="302.86" | ||
| 69 | gradientUnits="userSpaceOnUse" | ||
| 70 | y1="366.65" | ||
| 71 | gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)" | ||
| 72 | x2="302.86" | ||
| 73 | y2="609.51"> | ||
| 74 | <stop | ||
| 75 | id="stop5050" | ||
| 76 | stop-opacity="0" | ||
| 77 | offset="0" /> | ||
| 78 | <stop | ||
| 79 | id="stop5056" | ||
| 80 | offset=".5" /> | ||
| 81 | <stop | ||
| 82 | id="stop5052" | ||
| 83 | stop-opacity="0" | ||
| 84 | offset="1" /> | ||
| 85 | </linearGradient> | ||
| 86 | <radialGradient | ||
| 87 | id="radialGradient4997" | ||
| 88 | gradientUnits="userSpaceOnUse" | ||
| 89 | cy="6.4577" | ||
| 90 | cx="23.447" | ||
| 91 | gradientTransform="matrix(-1.3145,-0.010063,-0.01023,1.3362,46.221,-4.9099)" | ||
| 92 | r="19.062"> | ||
| 93 | <stop | ||
| 94 | id="stop4993" | ||
| 95 | stop-color="#fff" | ||
| 96 | offset="0" /> | ||
| 97 | <stop | ||
| 98 | id="stop4995" | ||
| 99 | stop-color="#fff" | ||
| 100 | stop-opacity="0" | ||
| 101 | offset="1" /> | ||
| 102 | </radialGradient> | ||
| 103 | <linearGradient | ||
| 104 | id="linearGradient1764" | ||
| 105 | x1="33.06" | ||
| 106 | gradientUnits="userSpaceOnUse" | ||
| 107 | y1="27.394" | ||
| 108 | gradientTransform="matrix(0.91411,0,0,0.91411,-3.8687,-2.7069)" | ||
| 109 | x2="12.624" | ||
| 110 | y2="12.584"> | ||
| 111 | <stop | ||
| 112 | id="stop2189" | ||
| 113 | stop-color="#fff" | ||
| 114 | offset="0" /> | ||
| 115 | <stop | ||
| 116 | id="stop2191" | ||
| 117 | stop-color="#fff" | ||
| 118 | stop-opacity="0" | ||
| 119 | offset="1" /> | ||
| 120 | </linearGradient> | ||
| 121 | <radialGradient | ||
| 122 | id="radialGradient8668" | ||
| 123 | gradientUnits="userSpaceOnUse" | ||
| 124 | cy="36.421" | ||
| 125 | cx="24.837" | ||
| 126 | gradientTransform="matrix(1,0,0,0.53672,0,16.873)" | ||
| 127 | r="15.645"> | ||
| 128 | <stop | ||
| 129 | id="stop8664" | ||
| 130 | offset="0" /> | ||
| 131 | <stop | ||
| 132 | id="stop8666" | ||
| 133 | stop-opacity="0" | ||
| 134 | offset="1" /> | ||
| 135 | </radialGradient> | ||
| 136 | <linearGradient | ||
| 137 | id="linearGradient4209" | ||
| 138 | x1="7.0625" | ||
| 139 | gradientUnits="userSpaceOnUse" | ||
| 140 | x2="24.688" | ||
| 141 | gradientTransform="translate(0.79549,3.7992)" | ||
| 142 | y1="35.281" | ||
| 143 | y2="35.281"> | ||
| 144 | <stop | ||
| 145 | id="stop4186" | ||
| 146 | stop-color="#838383" | ||
| 147 | offset="0" /> | ||
| 148 | <stop | ||
| 149 | id="stop4188" | ||
| 150 | stop-color="#bbb" | ||
| 151 | stop-opacity="0" | ||
| 152 | offset="1" /> | ||
| 153 | </linearGradient> | ||
| 154 | <linearGradient | ||
| 155 | id="linearGradient4234" | ||
| 156 | x1="7.6046" | ||
| 157 | gradientUnits="userSpaceOnUse" | ||
| 158 | x2="36.183" | ||
| 159 | gradientTransform="translate(0,5.125)" | ||
| 160 | y1="28.481" | ||
| 161 | y2="40.944"> | ||
| 162 | <stop | ||
| 163 | id="stop4230" | ||
| 164 | stop-color="#bbb" | ||
| 165 | offset="0" /> | ||
| 166 | <stop | ||
| 167 | id="stop4232" | ||
| 168 | stop-color="#9f9f9f" | ||
| 169 | offset="1" /> | ||
| 170 | </linearGradient> | ||
| 171 | <linearGradient | ||
| 172 | id="linearGradient4242" | ||
| 173 | x1="12.277" | ||
| 174 | gradientUnits="userSpaceOnUse" | ||
| 175 | x2="12.222" | ||
| 176 | gradientTransform="translate(0,5.125)" | ||
| 177 | y1="37.206" | ||
| 178 | y2="33.759"> | ||
| 179 | <stop | ||
| 180 | id="stop4238" | ||
| 181 | stop-color="#eee" | ||
| 182 | offset="0" /> | ||
| 183 | <stop | ||
| 184 | id="stop4240" | ||
| 185 | stop-color="#eee" | ||
| 186 | stop-opacity="0" | ||
| 187 | offset="1" /> | ||
| 188 | </linearGradient> | ||
| 189 | <radialGradient | ||
| 190 | id="radialGradient4250" | ||
| 191 | gradientUnits="userSpaceOnUse" | ||
| 192 | cy="2.9585" | ||
| 193 | cx="15.571" | ||
| 194 | gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)" | ||
| 195 | r="20.936"> | ||
| 196 | <stop | ||
| 197 | id="stop4246" | ||
| 198 | stop-color="#e4e4e4" | ||
| 199 | offset="0" /> | ||
| 200 | <stop | ||
| 201 | id="stop4248" | ||
| 202 | stop-color="#d3d3d3" | ||
| 203 | offset="1" /> | ||
| 204 | </radialGradient> | ||
| 205 | <linearGradient | ||
| 206 | id="linearGradient4260" | ||
| 207 | x1="12.378" | ||
| 208 | gradientUnits="userSpaceOnUse" | ||
| 209 | x2="44.096" | ||
| 210 | gradientTransform="translate(0,5.125)" | ||
| 211 | y1="4.4331" | ||
| 212 | y2="47.621"> | ||
| 213 | <stop | ||
| 214 | id="stop4256" | ||
| 215 | stop-color="#fff" | ||
| 216 | offset="0" /> | ||
| 217 | <stop | ||
| 218 | id="stop4258" | ||
| 219 | stop-color="#fff" | ||
| 220 | stop-opacity="0" | ||
| 221 | offset="1" /> | ||
| 222 | </linearGradient> | ||
| 223 | <linearGradient | ||
| 224 | id="linearGradient4272" | ||
| 225 | x1="23.688" | ||
| 226 | gradientUnits="userSpaceOnUse" | ||
| 227 | x2="23.688" | ||
| 228 | gradientTransform="translate(0,5.125)" | ||
| 229 | y1="11.319" | ||
| 230 | y2="26.357"> | ||
| 231 | <stop | ||
| 232 | id="stop4276" | ||
| 233 | stop-color="#fff" | ||
| 234 | stop-opacity=".2549" | ||
| 235 | offset="0" /> | ||
| 236 | <stop | ||
| 237 | id="stop4278" | ||
| 238 | stop-color="#fff" | ||
| 239 | offset="1" /> | ||
| 240 | </linearGradient> | ||
| 241 | <linearGradient | ||
| 242 | id="linearGradient2553" | ||
| 243 | y2="11.781" | ||
| 244 | gradientUnits="userSpaceOnUse" | ||
| 245 | y1="31.965" | ||
| 246 | x2="21.748" | ||
| 247 | x1="33.431"> | ||
| 248 | <stop | ||
| 249 | id="stop2557" | ||
| 250 | stop-color="#fff" | ||
| 251 | offset="0" /> | ||
| 252 | <stop | ||
| 253 | id="stop2561" | ||
| 254 | stop-color="#e6e6e6" | ||
| 255 | offset=".5" /> | ||
| 256 | <stop | ||
| 257 | id="stop2563" | ||
| 258 | stop-color="#fff" | ||
| 259 | offset=".75" /> | ||
| 260 | <stop | ||
| 261 | id="stop2565" | ||
| 262 | stop-color="#e1e1e1" | ||
| 263 | offset=".84167" /> | ||
| 264 | <stop | ||
| 265 | id="stop2559" | ||
| 266 | stop-color="#fff" | ||
| 267 | offset="1" /> | ||
| 268 | </linearGradient> | ||
| 269 | <linearGradient | ||
| 270 | id="linearGradient6907" | ||
| 271 | y2="16.743" | ||
| 272 | gradientUnits="userSpaceOnUse" | ||
| 273 | y1="15.868" | ||
| 274 | x2="8.8953" | ||
| 275 | x1="14.752"> | ||
| 276 | <stop | ||
| 277 | id="stop6903" | ||
| 278 | stop-color="#3465a4" | ||
| 279 | offset="0" /> | ||
| 280 | <stop | ||
| 281 | id="stop6905" | ||
| 282 | stop-color="#3465a4" | ||
| 283 | stop-opacity="0" | ||
| 284 | offset="1" /> | ||
| 285 | </linearGradient> | ||
| 286 | <linearGradient | ||
| 287 | id="linearGradient6931" | ||
| 288 | y2="21.118" | ||
| 289 | gradientUnits="userSpaceOnUse" | ||
| 290 | y1="18.25" | ||
| 291 | x2="7" | ||
| 292 | x1="12.25"> | ||
| 293 | <stop | ||
| 294 | id="stop6927" | ||
| 295 | stop-color="#204a87" | ||
| 296 | offset="0" /> | ||
| 297 | <stop | ||
| 298 | id="stop6929" | ||
| 299 | stop-color="#204a87" | ||
| 300 | stop-opacity="0" | ||
| 301 | offset="1" /> | ||
| 302 | </linearGradient> | ||
| 303 | <linearGradient | ||
| 304 | id="linearGradient6971" | ||
| 305 | y2="36.437" | ||
| 306 | gradientUnits="userSpaceOnUse" | ||
| 307 | y1="31.431" | ||
| 308 | x2="28.061" | ||
| 309 | x1="28.061"> | ||
| 310 | <stop | ||
| 311 | id="stop6967" | ||
| 312 | stop-color="#ddd" | ||
| 313 | offset="0" /> | ||
| 314 | <stop | ||
| 315 | id="stop6969" | ||
| 316 | stop-color="#fdfdfd" | ||
| 317 | offset="1" /> | ||
| 318 | </linearGradient> | ||
| 319 | <linearGradient | ||
| 320 | inkscape:collect="always" | ||
| 321 | xlink:href="#linearGradient5027" | ||
| 322 | id="linearGradient3248" | ||
| 323 | gradientUnits="userSpaceOnUse" | ||
| 324 | gradientTransform="matrix(2.7744,0,0,1.9697,-1892.2,-872.89)" | ||
| 325 | x1="302.86" | ||
| 326 | y1="366.65" | ||
| 327 | x2="302.86" | ||
| 328 | y2="609.51" /> | ||
| 329 | <radialGradient | ||
| 330 | inkscape:collect="always" | ||
| 331 | xlink:href="#linearGradient5060" | ||
| 332 | id="radialGradient3250" | ||
| 333 | gradientUnits="userSpaceOnUse" | ||
| 334 | gradientTransform="matrix(2.7744,0,0,1.9697,-1891.6,-872.89)" | ||
| 335 | cx="605.71" | ||
| 336 | cy="486.65" | ||
| 337 | r="117.14" /> | ||
| 338 | <radialGradient | ||
| 339 | inkscape:collect="always" | ||
| 340 | xlink:href="#linearGradient5060" | ||
| 341 | id="radialGradient3252" | ||
| 342 | gradientUnits="userSpaceOnUse" | ||
| 343 | gradientTransform="matrix(-2.7744,0,0,1.9697,112.76,-872.89)" | ||
| 344 | cx="605.71" | ||
| 345 | cy="486.65" | ||
| 346 | r="117.14" /> | ||
| 347 | <linearGradient | ||
| 348 | inkscape:collect="always" | ||
| 349 | xlink:href="#linearGradient4234" | ||
| 350 | id="linearGradient3254" | ||
| 351 | gradientUnits="userSpaceOnUse" | ||
| 352 | gradientTransform="translate(0,5.125)" | ||
| 353 | x1="7.6046" | ||
| 354 | y1="28.481" | ||
| 355 | x2="36.183" | ||
| 356 | y2="40.944" /> | ||
| 357 | <radialGradient | ||
| 358 | inkscape:collect="always" | ||
| 359 | xlink:href="#radialGradient4250" | ||
| 360 | id="radialGradient3256" | ||
| 361 | gradientUnits="userSpaceOnUse" | ||
| 362 | gradientTransform="matrix(1.2862,0.7817,-0.71078,1.1696,-2.3543,0.24814)" | ||
| 363 | cx="15.571" | ||
| 364 | cy="2.9585" | ||
| 365 | r="20.936" /> | ||
| 366 | <linearGradient | ||
| 367 | inkscape:collect="always" | ||
| 368 | xlink:href="#linearGradient4209" | ||
| 369 | id="linearGradient3258" | ||
| 370 | gradientUnits="userSpaceOnUse" | ||
| 371 | gradientTransform="translate(0.79549,3.7992)" | ||
| 372 | x1="7.0625" | ||
| 373 | y1="35.281" | ||
| 374 | x2="24.688" | ||
| 375 | y2="35.281" /> | ||
| 376 | <linearGradient | ||
| 377 | inkscape:collect="always" | ||
| 378 | xlink:href="#linearGradient4242" | ||
| 379 | id="linearGradient3260" | ||
| 380 | gradientUnits="userSpaceOnUse" | ||
| 381 | gradientTransform="translate(0,5.125)" | ||
| 382 | x1="12.277" | ||
| 383 | y1="37.206" | ||
| 384 | x2="12.222" | ||
| 385 | y2="33.759" /> | ||
| 386 | <linearGradient | ||
| 387 | inkscape:collect="always" | ||
| 388 | xlink:href="#linearGradient4272" | ||
| 389 | id="linearGradient3262" | ||
| 390 | gradientUnits="userSpaceOnUse" | ||
| 391 | gradientTransform="translate(0,5.125)" | ||
| 392 | x1="23.688" | ||
| 393 | y1="11.319" | ||
| 394 | x2="23.688" | ||
| 395 | y2="26.357" /> | ||
| 396 | <linearGradient | ||
| 397 | inkscape:collect="always" | ||
| 398 | xlink:href="#linearGradient4260" | ||
| 399 | id="linearGradient3264" | ||
| 400 | gradientUnits="userSpaceOnUse" | ||
| 401 | gradientTransform="translate(0,5.125)" | ||
| 402 | x1="12.378" | ||
| 403 | y1="4.4331" | ||
| 404 | x2="44.096" | ||
| 405 | y2="47.621" /> | ||
| 406 | <linearGradient | ||
| 407 | inkscape:collect="always" | ||
| 408 | xlink:href="#linearGradient2553" | ||
| 409 | id="linearGradient3266" | ||
| 410 | gradientUnits="userSpaceOnUse" | ||
| 411 | x1="33.431" | ||
| 412 | y1="31.965" | ||
| 413 | x2="21.748" | ||
| 414 | y2="11.781" /> | ||
| 415 | <radialGradient | ||
| 416 | inkscape:collect="always" | ||
| 417 | xlink:href="#radialGradient8668" | ||
| 418 | id="radialGradient3268" | ||
| 419 | gradientUnits="userSpaceOnUse" | ||
| 420 | gradientTransform="matrix(1.1302,0,0,-0.40769251,48.062716,1046.2254)" | ||
| 421 | cx="24.837" | ||
| 422 | cy="36.421" | ||
| 423 | r="15.645" /> | ||
| 424 | <linearGradient | ||
| 425 | inkscape:collect="always" | ||
| 426 | xlink:href="#linearGradient6971" | ||
| 427 | id="linearGradient3270" | ||
| 428 | gradientUnits="userSpaceOnUse" | ||
| 429 | gradientTransform="translate(51.972416,1005.3761)" | ||
| 430 | x1="28.061" | ||
| 431 | y1="31.431" | ||
| 432 | x2="28.061" | ||
| 433 | y2="36.437" /> | ||
| 434 | </defs> | ||
| 435 | <sodipodi:namedview | ||
| 436 | id="base" | ||
| 437 | pagecolor="#ffffff" | ||
| 438 | bordercolor="#666666" | ||
| 439 | borderopacity="1.0" | ||
| 440 | inkscape:pageopacity="0.0" | ||
| 441 | inkscape:pageshadow="2" | ||
| 442 | inkscape:zoom="22.4" | ||
| 443 | inkscape:cx="44.04179" | ||
| 444 | inkscape:cy="22.346221" | ||
| 445 | inkscape:document-units="px" | ||
| 446 | inkscape:current-layer="layer1" | ||
| 447 | showgrid="false" | ||
| 448 | inkscape:window-width="1680" | ||
| 449 | inkscape:window-height="997" | ||
| 450 | inkscape:window-x="-8" | ||
| 451 | inkscape:window-y="21" | ||
| 452 | inkscape:window-maximized="1" /> | ||
| 453 | <metadata | ||
| 454 | id="metadata3832"> | ||
| 455 | <rdf:RDF> | ||
| 456 | <cc:Work | ||
| 457 | rdf:about=""> | ||
| 458 | <dc:format>image/svg+xml</dc:format> | ||
| 459 | <dc:type | ||
| 460 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 461 | <dc:title /> | ||
| 462 | <dc:creator> | ||
| 463 | <cc:Agent> | ||
| 464 | <dc:title>Maximillian Merlin</dc:title> | ||
| 465 | </cc:Agent> | ||
| 466 | </dc:creator> | ||
| 467 | </cc:Work> | ||
| 468 | </rdf:RDF> | ||
| 469 | </metadata> | ||
| 470 | <g | ||
| 471 | inkscape:label="Ebene 1" | ||
| 472 | inkscape:groupmode="layer" | ||
| 473 | id="layer1" | ||
| 474 | transform="translate(0,-1007.3622)"> | ||
| 475 | <g | ||
| 476 | id="layer1-7" | ||
| 477 | transform="matrix(-0.25019951,0,0,0.28877175,123.44112,917.40972)" | ||
| 478 | style="fill:#696969"> | ||
| 479 | <g | ||
| 480 | id="g3257" | ||
| 481 | transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)" | ||
| 482 | style="fill:#696969"> | ||
| 483 | <path | ||
| 484 | id="path3224" | ||
| 485 | 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" | ||
| 486 | style="fill:#696969;fill-rule:evenodd" | ||
| 487 | inkscape:connector-curvature="0" /> | ||
| 488 | <path | ||
| 489 | id="path3237" | ||
| 490 | d="m 531.39,275.61 23.34,-4.6" | ||
| 491 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 492 | inkscape:connector-curvature="0" /> | ||
| 493 | <path | ||
| 494 | id="path3243" | ||
| 495 | d="m 532.1,280.91 22.27,-2.83" | ||
| 496 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 497 | inkscape:connector-curvature="0" /> | ||
| 498 | <path | ||
| 499 | id="path3247" | ||
| 500 | d="m 531.92,285.86 22.89,-1.95" | ||
| 501 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 502 | inkscape:connector-curvature="0" /> | ||
| 503 | <path | ||
| 504 | id="path3249" | ||
| 505 | d="m 530.15,292.84 24.22,-2.12" | ||
| 506 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 507 | inkscape:connector-curvature="0" /> | ||
| 508 | <path | ||
| 509 | id="path3251" | ||
| 510 | d="m 529.45,297.53 22.98,-0.8" | ||
| 511 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 512 | inkscape:connector-curvature="0" /> | ||
| 513 | <path | ||
| 514 | id="path3253" | ||
| 515 | d="m 528.65,304.24 22.45,-2.56" | ||
| 516 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 517 | inkscape:connector-curvature="0" /> | ||
| 518 | <path | ||
| 519 | id="path3255" | ||
| 520 | d="m 527.5,309.37 22.81,-1.77" | ||
| 521 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 522 | inkscape:connector-curvature="0" /> | ||
| 523 | </g> | ||
| 524 | </g> | ||
| 525 | <rect | ||
| 526 | 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" | ||
| 527 | id="rect3032" | ||
| 528 | width="44.57473" | ||
| 529 | height="44.57473" | ||
| 530 | x="0.18852967" | ||
| 531 | y="1007.5989" /> | ||
| 532 | <rect | ||
| 533 | 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" | ||
| 534 | id="rect3032-4" | ||
| 535 | width="44.57473" | ||
| 536 | height="44.57473" | ||
| 537 | x="84.498352" | ||
| 538 | y="1050.0748" /> | ||
| 539 | <g | ||
| 540 | id="run-arrow" | ||
| 541 | transform="translate(-46.607143,-3.5714285)" | ||
| 542 | inkscape:label="#run-arrow"> | ||
| 543 | <path | ||
| 544 | 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" | ||
| 545 | id="arrow-rect" | ||
| 546 | inkscape:connector-curvature="0" | ||
| 547 | style="fill:#d3d3d3;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.77974033;stroke-linecap:round;stroke-linejoin:round" /> | ||
| 548 | </g> | ||
| 549 | </g> | ||
| 550 | </svg> | ||
| @@ -1,163 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
| 6 | xmlns:cc="http://creativecommons.org/ns#" | ||
| 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
| 8 | xmlns:svg="http://www.w3.org/2000/svg" | ||
| 9 | xmlns="http://www.w3.org/2000/svg" | ||
| 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 12 | width="45" | ||
| 13 | height="45" | ||
| 14 | id="svg3827" | ||
| 15 | version="1.1" | ||
| 16 | inkscape:version="0.48.1 r9760" | ||
| 17 | sodipodi:docname="stop-script.svg"> | ||
| 18 | <defs | ||
| 19 | id="defs3829" /> | ||
| 20 | <sodipodi:namedview | ||
| 21 | id="base" | ||
| 22 | pagecolor="#ffffff" | ||
| 23 | bordercolor="#666666" | ||
| 24 | borderopacity="1.0" | ||
| 25 | inkscape:pageopacity="0.0" | ||
| 26 | inkscape:pageshadow="2" | ||
| 27 | inkscape:zoom="5.6" | ||
| 28 | inkscape:cx="15.598703" | ||
| 29 | inkscape:cy="22.861751" | ||
| 30 | inkscape:document-units="px" | ||
| 31 | inkscape:current-layer="layer1" | ||
| 32 | showgrid="false" | ||
| 33 | inkscape:window-width="1920" | ||
| 34 | inkscape:window-height="1028" | ||
| 35 | inkscape:window-x="-8" | ||
| 36 | inkscape:window-y="-8" | ||
| 37 | inkscape:window-maximized="1" /> | ||
| 38 | <metadata | ||
| 39 | id="metadata3832"> | ||
| 40 | <rdf:RDF> | ||
| 41 | <cc:Work | ||
| 42 | rdf:about=""> | ||
| 43 | <dc:format>image/svg+xml</dc:format> | ||
| 44 | <dc:type | ||
| 45 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
| 46 | <dc:title /> | ||
| 47 | <dc:creator> | ||
| 48 | <cc:Agent> | ||
| 49 | <dc:title>Maximillian Merlin</dc:title> | ||
| 50 | </cc:Agent> | ||
| 51 | </dc:creator> | ||
| 52 | </cc:Work> | ||
| 53 | </rdf:RDF> | ||
| 54 | </metadata> | ||
| 55 | <g | ||
| 56 | inkscape:label="Ebene 1" | ||
| 57 | inkscape:groupmode="layer" | ||
| 58 | id="layer1" | ||
| 59 | transform="translate(0,-1007.3622)"> | ||
| 60 | <g | ||
| 61 | id="layer1-7" | ||
| 62 | transform="matrix(-0.25019951,0,0,0.28877175,123.44112,917.40972)" | ||
| 63 | style="fill:#696969"> | ||
| 64 | <g | ||
| 65 | id="g3257" | ||
| 66 | transform="matrix(1.9175,0,0,1.9175,-607.19,-179.09)" | ||
| 67 | style="fill:#696969"> | ||
| 68 | <path | ||
| 69 | id="path3224" | ||
| 70 | 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" | ||
| 71 | style="fill:#696969;fill-rule:evenodd" | ||
| 72 | inkscape:connector-curvature="0" /> | ||
| 73 | <path | ||
| 74 | id="path3237" | ||
| 75 | d="m 531.39,275.61 23.34,-4.6" | ||
| 76 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 77 | inkscape:connector-curvature="0" /> | ||
| 78 | <path | ||
| 79 | id="path3243" | ||
| 80 | d="m 532.1,280.91 22.27,-2.83" | ||
| 81 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 82 | inkscape:connector-curvature="0" /> | ||
| 83 | <path | ||
| 84 | id="path3247" | ||
| 85 | d="m 531.92,285.86 22.89,-1.95" | ||
| 86 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 87 | inkscape:connector-curvature="0" /> | ||
| 88 | <path | ||
| 89 | id="path3249" | ||
| 90 | d="m 530.15,292.84 24.22,-2.12" | ||
| 91 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 92 | inkscape:connector-curvature="0" /> | ||
| 93 | <path | ||
| 94 | id="path3251" | ||
| 95 | d="m 529.45,297.53 22.98,-0.8" | ||
| 96 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 97 | inkscape:connector-curvature="0" /> | ||
| 98 | <path | ||
| 99 | id="path3253" | ||
| 100 | d="m 528.65,304.24 22.45,-2.56" | ||
| 101 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 102 | inkscape:connector-curvature="0" /> | ||
| 103 | <path | ||
| 104 | id="path3255" | ||
| 105 | d="m 527.5,309.37 22.81,-1.77" | ||
| 106 | style="fill:#696969;stroke:#000000;stroke-width:1px" | ||
| 107 | inkscape:connector-curvature="0" /> | ||
| 108 | </g> | ||
| 109 | </g> | ||
| 110 | <rect | ||
| 111 | 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" | ||
| 112 | id="rect3032" | ||
| 113 | width="44.57473" | ||
| 114 | height="44.57473" | ||
| 115 | x="0.18852967" | ||
| 116 | y="1007.5989" /> | ||
| 117 | <g | ||
| 118 | id="stop" | ||
| 119 | transform="matrix(0.08804464,0,0,0.0856179,29.060719,1033.5397)"> | ||
| 120 | <g | ||
| 121 | id="g3004"> | ||
| 122 | <path | ||
| 123 | 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" | ||
| 124 | id="stop_octagon" | ||
| 125 | inkscape:connector-curvature="0" | ||
| 126 | style="fill:#e81108" /> | ||
| 127 | </g> | ||
| 128 | <g | ||
| 129 | id="g3007" | ||
| 130 | transform="scale(0.95,0.95)"> | ||
| 131 | <path | ||
| 132 | 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" | ||
| 133 | id="stop_octagon_1_" | ||
| 134 | inkscape:connector-curvature="0" | ||
| 135 | style="fill:none;stroke:#ffffff;stroke-width:5" /> | ||
| 136 | </g> | ||
| 137 | <g | ||
| 138 | id="g3010" | ||
| 139 | transform="scale(1,1.45)"> | ||
| 140 | <g | ||
| 141 | id="g3012" | ||
| 142 | style="fill:#ffffff;enable-background:new"> | ||
| 143 | <path | ||
| 144 | id="path3014" | ||
| 145 | 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" | ||
| 146 | inkscape:connector-curvature="0" /> | ||
| 147 | <path | ||
| 148 | id="path3016" | ||
| 149 | 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" | ||
| 150 | inkscape:connector-curvature="0" /> | ||
| 151 | <path | ||
| 152 | id="path3018" | ||
| 153 | 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" | ||
| 154 | inkscape:connector-curvature="0" /> | ||
| 155 | <path | ||
| 156 | id="path3020" | ||
| 157 | 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" | ||
| 158 | inkscape:connector-curvature="0" /> | ||
| 159 | </g> | ||
| 160 | </g> | ||
| 161 | </g> | ||
| 162 | </g> | ||
| 163 | </svg> | ||
| @@ -2745,8 +2745,6 @@ void Application::keyPressEvent(QKeyEvent* event) { · 2744 unmodified lines | |||
| 2745 | case Qt::Key_S: | 2745 | case Qt::Key_S: |
| 2746 | if (isShifted && isMeta && !isOption) { | 2746 | if (isShifted && isMeta && !isOption) { |
| 2747 | Menu::getInstance()->triggerOption(MenuOption::SuppressShortTimings); | 2747 | Menu::getInstance()->triggerOption(MenuOption::SuppressShortTimings); |
| 2748 | } else if (isOption && !isShifted && !isMeta) { | ||
| 2749 | Menu::getInstance()->triggerOption(MenuOption::ScriptEditor); | ||
| 2750 | } else if (!isOption && !isShifted && isMeta) { | 2748 | } else if (!isOption && !isShifted && isMeta) { |
| 2751 | takeSnapshot(true); | 2749 | takeSnapshot(true); |
| 2752 | } | 2750 | } |
| @@ -117,11 +117,6 @@ Menu::Menu() { · 116 unmodified lines | |||
| 117 | scriptEngines.data(), SLOT(reloadAllScripts()), | 117 | scriptEngines.data(), SLOT(reloadAllScripts()), |
| 118 | QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); | 118 | QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); |
| 119 | 119 | ||
| 120 | // Edit > Scripts Editor... [advanced] | ||
| 121 | addActionToQMenuAndActionHash(editMenu, MenuOption::ScriptEditor, Qt::ALT | Qt::Key_S, | ||
| 122 | dialogsManager.data(), SLOT(showScriptEditor()), | ||
| 123 | QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); | ||
| 124 | |||
| 125 | // Edit > Console... [advanced] | 120 | // Edit > Console... [advanced] |
| 126 | addActionToQMenuAndActionHash(editMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, | 121 | addActionToQMenuAndActionHash(editMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, |
| 127 | DependencyManager::get<StandAloneJSConsole>().data(), | 122 | DependencyManager::get<StandAloneJSConsole>().data(), |
| @@ -166,7 +166,6 @@ namespace MenuOption { · 165 unmodified lines | |||
| 166 | const QString RunningScripts = "Running Scripts..."; | 166 | const QString RunningScripts = "Running Scripts..."; |
| 167 | const QString RunClientScriptTests = "Run Client Script Tests"; | 167 | const QString RunClientScriptTests = "Run Client Script Tests"; |
| 168 | const QString RunTimingTests = "Run Timing Tests"; | 168 | const QString RunTimingTests = "Run Timing Tests"; |
| 169 | const QString ScriptEditor = "Script Editor..."; | ||
| 170 | const QString ScriptedMotorControl = "Enable Scripted Motor Control"; | 169 | const QString ScriptedMotorControl = "Enable Scripted Motor Control"; |
| 171 | const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; | 170 | const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; |
| 172 | const QString SendWrongProtocolVersion = "Send wrong protocol version"; | 171 | const QString SendWrongProtocolVersion = "Send wrong protocol version"; |
| @@ -26,7 +26,6 @@ · 25 unmodified lines | |||
| 26 | #include "LoginDialog.h" | 26 | #include "LoginDialog.h" |
| 27 | #include "OctreeStatsDialog.h" | 27 | #include "OctreeStatsDialog.h" |
| 28 | #include "PreferencesDialog.h" | 28 | #include "PreferencesDialog.h" |
| 29 | #include "ScriptEditorWindow.h" | ||
| 30 | #include "UpdateDialog.h" | 29 | #include "UpdateDialog.h" |
| 31 | 30 | ||
| 32 | template<typename T> | 31 | template<typename T> |
| @@ -120,12 +119,6 @@ void DialogsManager::hmdToolsClosed() { · 87 unmodified lines | |||
| 120 | } | 119 | } |
| 121 | } | 120 | } |
| 122 | 121 | ||
| 123 | void DialogsManager::showScriptEditor() { | ||
| 124 | maybeCreateDialog(_scriptEditor); | ||
| 125 | _scriptEditor->show(); | ||
| 126 | _scriptEditor->raise(); | ||
| 127 | } | ||
| 128 | |||
| 129 | void DialogsManager::showTestingResults() { | 122 | void DialogsManager::showTestingResults() { |
| 130 | if (!_testingDialog) { | 123 | if (!_testingDialog) { |
| 131 | _testingDialog = new TestingDialog(qApp->getWindow()); | 124 | _testingDialog = new TestingDialog(qApp->getWindow()); |
| @@ -50,7 +50,6 @@ public slots: · 49 unmodified lines | |||
| 50 | void octreeStatsDetails(); | 50 | void octreeStatsDetails(); |
| 51 | void lodTools(); | 51 | void lodTools(); |
| 52 | void hmdTools(bool showTools); | 52 | void hmdTools(bool showTools); |
| 53 | void showScriptEditor(); | ||
| 54 | void showDomainConnectionDialog(); | 53 | void showDomainConnectionDialog(); |
| 55 | void showTestingResults(); | 54 | void showTestingResults(); |
| 56 | 55 | ||
| @@ -78,7 +77,6 @@ private: · 21 unmodified lines | |||
| 78 | QPointer<HMDToolsDialog> _hmdToolsDialog; | 77 | QPointer<HMDToolsDialog> _hmdToolsDialog; |
| 79 | QPointer<LodToolsDialog> _lodToolsDialog; | 78 | QPointer<LodToolsDialog> _lodToolsDialog; |
| 80 | QPointer<OctreeStatsDialog> _octreeStatsDialog; | 79 | QPointer<OctreeStatsDialog> _octreeStatsDialog; |
| 81 | QPointer<ScriptEditorWindow> _scriptEditor; | ||
| 82 | QPointer<TestingDialog> _testingDialog; | 80 | QPointer<TestingDialog> _testingDialog; |
| 83 | QPointer<DomainConnectionDialog> _domainConnectionDialog; | 81 | QPointer<DomainConnectionDialog> _domainConnectionDialog; |
| 84 | }; | 82 | }; |
| @@ -1,111 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptEditBox.cpp | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/30/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #include "ScriptEditBox.h" | ||
| 13 | |||
| 14 | #include <QPainter> | ||
| 15 | #include <QTextBlock> | ||
| 16 | |||
| 17 | #include "ScriptLineNumberArea.h" | ||
| 18 | |||
| 19 | ScriptEditBox::ScriptEditBox(QWidget* parent) : | ||
| 20 | QPlainTextEdit(parent) | ||
| 21 | { | ||
| 22 | _scriptLineNumberArea = new ScriptLineNumberArea(this); | ||
| 23 | |||
| 24 | connect(this, &ScriptEditBox::blockCountChanged, this, &ScriptEditBox::updateLineNumberAreaWidth); | ||
| 25 | connect(this, &ScriptEditBox::updateRequest, this, &ScriptEditBox::updateLineNumberArea); | ||
| 26 | connect(this, &ScriptEditBox::cursorPositionChanged, this, &ScriptEditBox::highlightCurrentLine); | ||
| 27 | |||
| 28 | updateLineNumberAreaWidth(0); | ||
| 29 | highlightCurrentLine(); | ||
| 30 | } | ||
| 31 | |||
| 32 | int ScriptEditBox::lineNumberAreaWidth() { | ||
| 33 | int digits = 1; | ||
| 34 | const int SPACER_PIXELS = 3; | ||
| 35 | const int BASE_TEN = 10; | ||
| 36 | int max = qMax(1, blockCount()); | ||
| 37 | while (max >= BASE_TEN) { | ||
| 38 | max /= BASE_TEN; | ||
| 39 | digits++; | ||
| 40 | } | ||
| 41 | return SPACER_PIXELS + fontMetrics().width(QLatin1Char('H')) * digits; | ||
| 42 | } | ||
| 43 | |||
| 44 | void ScriptEditBox::updateLineNumberAreaWidth(int blockCount) { | ||
| 45 | setViewportMargins(lineNumberAreaWidth(), 0, 0, 0); | ||
| 46 | } | ||
| 47 | |||
| 48 | void ScriptEditBox::updateLineNumberArea(const QRect& rect, int deltaY) { | ||
| 49 | if (deltaY) { | ||
| 50 | _scriptLineNumberArea->scroll(0, deltaY); | ||
| 51 | } else { | ||
| 52 | _scriptLineNumberArea->update(0, rect.y(), _scriptLineNumberArea->width(), rect.height()); | ||
| 53 | } | ||
| 54 | |||
| 55 | if (rect.contains(viewport()->rect())) { | ||
| 56 | updateLineNumberAreaWidth(0); | ||
| 57 | } | ||
| 58 | } | ||
| 59 | |||
| 60 | void ScriptEditBox::resizeEvent(QResizeEvent* event) { | ||
| 61 | QPlainTextEdit::resizeEvent(event); | ||
| 62 | |||
| 63 | QRect localContentsRect = contentsRect(); | ||
| 64 | _scriptLineNumberArea->setGeometry(QRect(localContentsRect.left(), localContentsRect.top(), lineNumberAreaWidth(), | ||
| 65 | localContentsRect.height())); | ||
| 66 | } | ||
| 67 | |||
| 68 | void ScriptEditBox::highlightCurrentLine() { | ||
| 69 | QList<QTextEdit::ExtraSelection> extraSelections; | ||
| 70 | |||
| 71 | if (!isReadOnly()) { | ||
| 72 | QTextEdit::ExtraSelection selection; | ||
| 73 | |||
| 74 | QColor lineColor = QColor(Qt::gray).lighter(); | ||
| 75 | |||
| 76 | selection.format.setBackground(lineColor); | ||
| 77 | selection.format.setProperty(QTextFormat::FullWidthSelection, true); | ||
| 78 | selection.cursor = textCursor(); | ||
| 79 | selection.cursor.clearSelection(); | ||
| 80 | extraSelections.append(selection); | ||
| 81 | } | ||
| 82 | |||
| 83 | setExtraSelections(extraSelections); | ||
| 84 | } | ||
| 85 | |||
| 86 | void ScriptEditBox::lineNumberAreaPaintEvent(QPaintEvent* event) | ||
| 87 | { | ||
| 88 | QPainter painter(_scriptLineNumberArea); | ||
| 89 | painter.fillRect(event->rect(), Qt::lightGray); | ||
| 90 | QTextBlock block = firstVisibleBlock(); | ||
| 91 | int blockNumber = block.blockNumber(); | ||
| 92 | int top = (int) blockBoundingGeometry(block).translated(contentOffset()).top(); | ||
| 93 | int bottom = top + (int) blockBoundingRect(block).height(); | ||
| 94 | |||
| 95 | while (block.isValid() && top <= event->rect().bottom()) { | ||
| 96 | if (block.isVisible() && bottom >= event->rect().top()) { | ||
| 97 | QFont font = painter.font(); | ||
| 98 | font.setBold(this->textCursor().blockNumber() == block.blockNumber()); | ||
| 99 | painter.setFont(font); | ||
| 100 | QString number = QString::number(blockNumber + 1); | ||
| 101 | painter.setPen(Qt::black); | ||
| 102 | painter.drawText(0, top, _scriptLineNumberArea->width(), fontMetrics().height(), | ||
| 103 | Qt::AlignRight, number); | ||
| 104 | } | ||
| 105 | |||
| 106 | block = block.next(); | ||
| 107 | top = bottom; | ||
| 108 | bottom = top + (int) blockBoundingRect(block).height(); | ||
| 109 | blockNumber++; | ||
| 110 | } | ||
| 111 | } | ||
| @@ -1,38 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptEditBox.h | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/30/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #ifndef hifi_ScriptEditBox_h | ||
| 13 | #define hifi_ScriptEditBox_h | ||
| 14 | |||
| 15 | #include <QPlainTextEdit> | ||
| 16 | |||
| 17 | class ScriptEditBox : public QPlainTextEdit { | ||
| 18 | Q_OBJECT | ||
| 19 | |||
| 20 | public: | ||
| 21 | ScriptEditBox(QWidget* parent = NULL); | ||
| 22 | |||
| 23 | void lineNumberAreaPaintEvent(QPaintEvent* event); | ||
| 24 | int lineNumberAreaWidth(); | ||
| 25 | |||
| 26 | protected: | ||
| 27 | void resizeEvent(QResizeEvent* event) override; | ||
| 28 | |||
| 29 | private slots: | ||
| 30 | void updateLineNumberAreaWidth(int blockCount); | ||
| 31 | void highlightCurrentLine(); | ||
| 32 | void updateLineNumberArea(const QRect& rect, int deltaY); | ||
| 33 | |||
| 34 | private: | ||
| 35 | QWidget* _scriptLineNumberArea; | ||
| 36 | }; | ||
| 37 | |||
| 38 | #endif // hifi_ScriptEditBox_h | ||
| @@ -1,256 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptEditorWidget.cpp | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/14/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #include "ui_scriptEditorWidget.h" | ||
| 13 | #include "ScriptEditorWidget.h" | ||
| 14 | #include "ScriptEditorWindow.h" | ||
| 15 | |||
| 16 | #include <QGridLayout> | ||
| 17 | #include <QFileDialog> | ||
| 18 | #include <QFrame> | ||
| 19 | #include <QLayoutItem> | ||
| 20 | #include <QMainWindow> | ||
| 21 | #include <QMessageBox> | ||
| 22 | #include <QPalette> | ||
| 23 | #include <QScrollBar> | ||
| 24 | #include <QSizePolicy> | ||
| 25 | #include <QTimer> | ||
| 26 | #include <QWidget> | ||
| 27 | |||
| 28 | #include <ScriptEngines.h> | ||
| 29 | #include <NetworkAccessManager.h> | ||
| 30 | #include <OffscreenUi.h> | ||
| 31 | |||
| 32 | #include "Application.h" | ||
| 33 | #include "ScriptHighlighting.h" | ||
| 34 | |||
| 35 | ScriptEditorWidget::ScriptEditorWidget() : | ||
| 36 | _scriptEditorWidgetUI(new Ui::ScriptEditorWidget), | ||
| 37 | _scriptEngine(NULL), | ||
| 38 | _isRestarting(false), | ||
| 39 | _isReloading(false) | ||
| 40 | { | ||
| 41 | setAttribute(Qt::WA_DeleteOnClose); | ||
| 42 | |||
| 43 | _scriptEditorWidgetUI->setupUi(this); | ||
| 44 | |||
| 45 | connect(_scriptEditorWidgetUI->scriptEdit->document(), &QTextDocument::modificationChanged, this, | ||
| 46 | &ScriptEditorWidget::scriptModified); | ||
| 47 | connect(_scriptEditorWidgetUI->scriptEdit->document(), &QTextDocument::contentsChanged, this, | ||
| 48 | &ScriptEditorWidget::onScriptModified); | ||
| 49 | |||
| 50 | // remove the title bar (see the Qt docs on setTitleBarWidget) | ||
| 51 | setTitleBarWidget(new QWidget()); | ||
| 52 | QFontMetrics fm(_scriptEditorWidgetUI->scriptEdit->font()); | ||
| 53 | _scriptEditorWidgetUI->scriptEdit->setTabStopWidth(fm.width('0') * 4); | ||
| 54 | // We create a new ScriptHighligting QObject and provide it with a parent so this is NOT a memory leak. | ||
| 55 | new ScriptHighlighting(_scriptEditorWidgetUI->scriptEdit->document()); | ||
| 56 | QTimer::singleShot(0, _scriptEditorWidgetUI->scriptEdit, SLOT(setFocus())); | ||
| 57 | |||
| 58 | _console = new JSConsole(this); | ||
| 59 | _console->setFixedHeight(CONSOLE_HEIGHT); | ||
| 60 | _scriptEditorWidgetUI->verticalLayout->addWidget(_console); | ||
| 61 | connect(_scriptEditorWidgetUI->clearButton, &QPushButton::clicked, _console, &JSConsole::clear); | ||
| 62 | } | ||
| 63 | |||
| 64 | ScriptEditorWidget::~ScriptEditorWidget() { | ||
| 65 | delete _scriptEditorWidgetUI; | ||
| 66 | delete _console; | ||
| 67 | } | ||
| 68 | |||
| 69 | void ScriptEditorWidget::onScriptModified() { | ||
| 70 | if(_scriptEditorWidgetUI->onTheFlyCheckBox->isChecked() && isModified() && isRunning() && !_isReloading) { | ||
| 71 | _isRestarting = true; | ||
| 72 | setRunning(false); | ||
| 73 | // Script is restarted once current script instance finishes. | ||
| 74 | } | ||
| 75 | } | ||
| 76 | |||
| 77 | void ScriptEditorWidget::onScriptFinished(const QString& scriptPath) { | ||
| 78 | _scriptEngine = NULL; | ||
| 79 | _console->setScriptEngine(NULL); | ||
| 80 | if (_isRestarting) { | ||
| 81 | _isRestarting = false; | ||
| 82 | setRunning(true); | ||
| 83 | } | ||
| 84 | } | ||
| 85 | |||
| 86 | bool ScriptEditorWidget::isModified() { | ||
| 87 | return _scriptEditorWidgetUI->scriptEdit->document()->isModified(); | ||
| 88 | } | ||
| 89 | |||
| 90 | bool ScriptEditorWidget::isRunning() { | ||
| 91 | return (_scriptEngine != NULL) ? _scriptEngine->isRunning() : false; | ||
| 92 | } | ||
| 93 | |||
| 94 | bool ScriptEditorWidget::setRunning(bool run) { | ||
| 95 | if (run && isModified() && !save()) { | ||
| 96 | return false; | ||
| 97 | } | ||
| 98 | |||
| 99 | if (_scriptEngine != NULL) { | ||
| 100 | disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); | ||
| 101 | disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); | ||
| 102 | disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); | ||
| 103 | } | ||
| 104 | |||
| 105 | auto scriptEngines = DependencyManager::get<ScriptEngines>(); | ||
| 106 | if (run) { | ||
| 107 | const QString& scriptURLString = QUrl(_currentScript).toString(); | ||
| 108 | // Reload script so that an out of date copy is not retrieved from the cache | ||
| 109 | _scriptEngine = scriptEngines->loadScript(scriptURLString, true, true, false, true); | ||
| 110 | connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); | ||
| 111 | connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); | ||
| 112 | connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); | ||
| 113 | } else { | ||
| 114 | connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); | ||
| 115 | const QString& scriptURLString = QUrl(_currentScript).toString(); | ||
| 116 | scriptEngines->stopScript(scriptURLString); | ||
| 117 | _scriptEngine = NULL; | ||
| 118 | } | ||
| 119 | _console->setScriptEngine(_scriptEngine); | ||
| 120 | return true; | ||
| 121 | } | ||
| 122 | |||
| 123 | bool ScriptEditorWidget::saveFile(const QString &scriptPath) { | ||
| 124 | QFile file(scriptPath); | ||
| 125 | if (!file.open(QFile::WriteOnly | QFile::Text)) { | ||
| 126 | OffscreenUi::warning(this, tr("Interface"), tr("Cannot write script %1:\n%2.").arg(scriptPath) | ||
| 127 | .arg(file.errorString())); | ||
| 128 | return false; | ||
| 129 | } | ||
| 130 | |||
| 131 | QTextStream out(&file); | ||
| 132 | out << _scriptEditorWidgetUI->scriptEdit->toPlainText(); | ||
| 133 | file.close(); | ||
| 134 | |||
| 135 | setScriptFile(scriptPath); | ||
| 136 | return true; | ||
| 137 | } | ||
| 138 | |||
| 139 | void ScriptEditorWidget::loadFile(const QString& scriptPath) { | ||
| 140 | QUrl url(scriptPath); | ||
| 141 | |||
| 142 | // if the scheme length is one or lower, maybe they typed in a file, let's try | ||
| 143 | const int WINDOWS_DRIVE_LETTER_SIZE = 1; | ||
| 144 | if (url.scheme().size() <= WINDOWS_DRIVE_LETTER_SIZE) { | ||
| 145 | QFile file(scriptPath); | ||
| 146 | if (!file.open(QFile::ReadOnly | QFile::Text)) { | ||
| 147 | OffscreenUi::warning(this, tr("Interface"), tr("Cannot read script %1:\n%2.").arg(scriptPath) | ||
| 148 | .arg(file.errorString())); | ||
| 149 | return; | ||
| 150 | } | ||
| 151 | QTextStream in(&file); | ||
| 152 | _scriptEditorWidgetUI->scriptEdit->setPlainText(in.readAll()); | ||
| 153 | file.close(); | ||
| 154 | setScriptFile(scriptPath); | ||
| 155 | |||
| 156 | if (_scriptEngine != NULL) { | ||
| 157 | disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); | ||
| 158 | disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); | ||
| 159 | disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); | ||
| 160 | } | ||
| 161 | } else { | ||
| 162 | QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); | ||
| 163 | QNetworkRequest networkRequest = QNetworkRequest(url); | ||
| 164 | networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); | ||
| 165 | networkRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); | ||
| 166 | QNetworkReply* reply = networkAccessManager.get(networkRequest); | ||
| 167 | qDebug() << "Downloading included script at" << scriptPath; | ||
| 168 | QEventLoop loop; | ||
| 169 | QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); | ||
| 170 | loop.exec(); | ||
| 171 | _scriptEditorWidgetUI->scriptEdit->setPlainText(reply->readAll()); | ||
| 172 | delete reply; | ||
| 173 | |||
| 174 | if (!saveAs()) { | ||
| 175 | static_cast<ScriptEditorWindow*>(this->parent()->parent()->parent())->terminateCurrentTab(); | ||
| 176 | } | ||
| 177 | } | ||
| 178 | const QString& scriptURLString = QUrl(_currentScript).toString(); | ||
| 179 | _scriptEngine = DependencyManager::get<ScriptEngines>()->getScriptEngine(scriptURLString); | ||
| 180 | if (_scriptEngine != NULL) { | ||
| 181 | connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); | ||
| 182 | connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); | ||
| 183 | connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); | ||
| 184 | } | ||
| 185 | _console->setScriptEngine(_scriptEngine); | ||
| 186 | } | ||
| 187 | |||
| 188 | bool ScriptEditorWidget::save() { | ||
| 189 | return _currentScript.isEmpty() ? saveAs() : saveFile(_currentScript); | ||
| 190 | } | ||
| 191 | |||
| 192 | bool ScriptEditorWidget::saveAs() { | ||
| 193 | auto scriptEngines = DependencyManager::get<ScriptEngines>(); | ||
| 194 | QString fileName = QFileDialog::getSaveFileName(this, tr("Save script"), | ||
| 195 | qApp->getPreviousScriptLocation(), | ||
| 196 | tr("JavaScript Files (*.js)")); | ||
| 197 | if (!fileName.isEmpty()) { | ||
| 198 | qApp->setPreviousScriptLocation(fileName); | ||
| 199 | return saveFile(fileName); | ||
| 200 | } else { | ||
| 201 | return false; | ||
| 202 | } | ||
| 203 | } | ||
| 204 | |||
| 205 | void ScriptEditorWidget::setScriptFile(const QString& scriptPath) { | ||
| 206 | _currentScript = scriptPath; | ||
| 207 | _currentScriptModified = QFileInfo(_currentScript).lastModified(); | ||
| 208 | _scriptEditorWidgetUI->scriptEdit->document()->setModified(false); | ||
| 209 | setWindowModified(false); | ||
| 210 | |||
| 211 | emit scriptnameChanged(); | ||
| 212 | } | ||
| 213 | |||
| 214 | bool ScriptEditorWidget::questionSave() { | ||
| 215 | if (_scriptEditorWidgetUI->scriptEdit->document()->isModified()) { | ||
| 216 | QMessageBox::StandardButton button = OffscreenUi::warning(this, tr("Interface"), | ||
| 217 | tr("The script has been modified.\nDo you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard | | ||
| 218 | QMessageBox::Cancel, QMessageBox::Save); | ||
| 219 | return button == QMessageBox::Save ? save() : (button == QMessageBox::Discard); | ||
| 220 | } | ||
| 221 | return true; | ||
| 222 | } | ||
| 223 | |||
| 224 | void ScriptEditorWidget::onWindowActivated() { | ||
| 225 | if (!_isReloading) { | ||
| 226 | _isReloading = true; | ||
| 227 | |||
| 228 | QDateTime fileStamp = QFileInfo(_currentScript).lastModified(); | ||
| 229 | if (fileStamp > _currentScriptModified) { | ||
| 230 | bool doReload = false; | ||
| 231 | auto window = static_cast<ScriptEditorWindow*>(this->parent()->parent()->parent()); | ||
| 232 | window->inModalDialog = true; | ||
| 233 | if (window->autoReloadScripts() | ||
| 234 | || OffscreenUi::question(this, tr("Reload Script"), | ||
| 235 | tr("The following file has been modified outside of the Interface editor:") + "\n" + _currentScript + "\n" | ||
| 236 | + (isModified() | ||
| 237 | ? tr("Do you want to reload it and lose the changes you've made in the Interface editor?") | ||
| 238 | : tr("Do you want to reload it?")), | ||
| 239 | QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { | ||
| 240 | doReload = true; | ||
| 241 | } | ||
| 242 | window->inModalDialog = false; | ||
| 243 | if (doReload) { | ||
| 244 | loadFile(_currentScript); | ||
| 245 | if (_scriptEditorWidgetUI->onTheFlyCheckBox->isChecked() && isRunning()) { | ||
| 246 | _isRestarting = true; | ||
| 247 | setRunning(false); | ||
| 248 | // Script is restarted once current script instance finishes. | ||
| 249 | } | ||
| 250 | } else { | ||
| 251 | _currentScriptModified = fileStamp; // Asked and answered. Don't ask again until the external file is changed again. | ||
| 252 | } | ||
| 253 | } | ||
| 254 | _isReloading = false; | ||
| 255 | } | ||
| 256 | } | ||
| @@ -1,64 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptEditorWidget.h | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/14/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #ifndef hifi_ScriptEditorWidget_h | ||
| 13 | #define hifi_ScriptEditorWidget_h | ||
| 14 | |||
| 15 | #include <QDockWidget> | ||
| 16 | |||
| 17 | #include "JSConsole.h" | ||
| 18 | #include "ScriptEngine.h" | ||
| 19 | |||
| 20 | namespace Ui { | ||
| 21 | class ScriptEditorWidget; | ||
| 22 | } | ||
| 23 | |||
| 24 | class ScriptEditorWidget : public QDockWidget { | ||
| 25 | Q_OBJECT | ||
| 26 | |||
| 27 | public: | ||
| 28 | ScriptEditorWidget(); | ||
| 29 | ~ScriptEditorWidget(); | ||
| 30 | |||
| 31 | bool isModified(); | ||
| 32 | bool isRunning(); | ||
| 33 | bool setRunning(bool run); | ||
| 34 | bool saveFile(const QString& scriptPath); | ||
| 35 | void loadFile(const QString& scriptPath); | ||
| 36 | void setScriptFile(const QString& scriptPath); | ||
| 37 | bool save(); | ||
| 38 | bool saveAs(); | ||
| 39 | bool questionSave(); | ||
| 40 | const QString getScriptName() const { return _currentScript; }; | ||
| 41 | |||
| 42 | signals: | ||
| 43 | void runningStateChanged(); | ||
| 44 | void scriptnameChanged(); | ||
| 45 | void scriptModified(); | ||
| 46 | |||
| 47 | public slots: | ||
| 48 | void onWindowActivated(); | ||
| 49 | |||
| 50 | private slots: | ||
| 51 | void onScriptModified(); | ||
| 52 | void onScriptFinished(const QString& scriptName); | ||
| 53 | |||
| 54 | private: | ||
| 55 | JSConsole* _console; | ||
| 56 | Ui::ScriptEditorWidget* _scriptEditorWidgetUI; | ||
| 57 | ScriptEngine* _scriptEngine; | ||
| 58 | QString _currentScript; | ||
| 59 | QDateTime _currentScriptModified; | ||
| 60 | bool _isRestarting; | ||
| 61 | bool _isReloading; | ||
| 62 | }; | ||
| 63 | |||
| 64 | #endif // hifi_ScriptEditorWidget_h | ||
| @@ -1,259 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptEditorWindow.cpp | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/14/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #include <QFileDialog> | ||
| 13 | |||
| 14 | #include "ui_scriptEditorWindow.h" | ||
| 15 | #include "ScriptEditorWindow.h" | ||
| 16 | #include "ScriptEditorWidget.h" | ||
| 17 | |||
| 18 | #include <QGridLayout> | ||
| 19 | #include <QtCore/QSignalMapper> | ||
| 20 | #include <QFrame> | ||
| 21 | #include <QLayoutItem> | ||
| 22 | #include <QMainWindow> | ||
| 23 | #include <QMessageBox> | ||
| 24 | #include <QPalette> | ||
| 25 | #include <QScrollBar> | ||
| 26 | #include <QShortcut> | ||
| 27 | #include <QSizePolicy> | ||
| 28 | #include <QTimer> | ||
| 29 | #include <QWidget> | ||
| 30 | |||
| 31 | #include <ScriptEngines.h> | ||
| 32 | #include "Application.h" | ||
| 33 | #include "PathUtils.h" | ||
| 34 | |||
| 35 | ScriptEditorWindow::ScriptEditorWindow(QWidget* parent) : | ||
| 36 | QWidget(parent), | ||
| 37 | _ScriptEditorWindowUI(new Ui::ScriptEditorWindow), | ||
| 38 | _loadMenu(new QMenu), | ||
| 39 | _saveMenu(new QMenu) | ||
| 40 | { | ||
| 41 | setAttribute(Qt::WA_DeleteOnClose); | ||
| 42 | |||
| 43 | _ScriptEditorWindowUI->setupUi(this); | ||
| 44 | |||
| 45 | this->setWindowFlags(Qt::Tool); | ||
| 46 | addScriptEditorWidget("New script"); | ||
| 47 | connect(_loadMenu, &QMenu::aboutToShow, this, &ScriptEditorWindow::loadMenuAboutToShow); | ||
| 48 | _ScriptEditorWindowUI->loadButton->setMenu(_loadMenu); | ||
| 49 | |||
| 50 | _saveMenu->addAction("Save as..", this, SLOT(saveScriptAsClicked()), Qt::CTRL | Qt::SHIFT | Qt::Key_S); | ||
| 51 | |||
| 52 | _ScriptEditorWindowUI->saveButton->setMenu(_saveMenu); | ||
| 53 | |||
| 54 | connect(new QShortcut(QKeySequence("Ctrl+N"), this), &QShortcut::activated, this, &ScriptEditorWindow::newScriptClicked); | ||
| 55 | connect(new QShortcut(QKeySequence("Ctrl+S"), this), &QShortcut::activated, this,&ScriptEditorWindow::saveScriptClicked); | ||
| 56 | connect(new QShortcut(QKeySequence("Ctrl+O"), this), &QShortcut::activated, this, &ScriptEditorWindow::loadScriptClicked); | ||
| 57 | connect(new QShortcut(QKeySequence("F5"), this), &QShortcut::activated, this, &ScriptEditorWindow::toggleRunScriptClicked); | ||
| 58 | |||
| 59 | _ScriptEditorWindowUI->loadButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/load-script.svg"))); | ||
| 60 | _ScriptEditorWindowUI->newButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/new-script.svg"))); | ||
| 61 | _ScriptEditorWindowUI->saveButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/save-script.svg"))); | ||
| 62 | _ScriptEditorWindowUI->toggleRunButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/start-script.svg"))); | ||
| 63 | } | ||
| 64 | |||
| 65 | ScriptEditorWindow::~ScriptEditorWindow() { | ||
| 66 | delete _ScriptEditorWindowUI; | ||
| 67 | } | ||
| 68 | |||
| 69 | void ScriptEditorWindow::setRunningState(bool run) { | ||
| 70 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { | ||
| 71 | static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->setRunning(run); | ||
| 72 | } | ||
| 73 | this->updateButtons(); | ||
| 74 | } | ||
| 75 | |||
| 76 | void ScriptEditorWindow::updateButtons() { | ||
| 77 | bool isRunning = _ScriptEditorWindowUI->tabWidget->currentIndex() != -1 && | ||
| 78 | static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning(); | ||
| 79 | _ScriptEditorWindowUI->toggleRunButton->setEnabled(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1); | ||
| 80 | _ScriptEditorWindowUI->toggleRunButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + ((isRunning ? | ||
| 81 | "icons/stop-script.svg" : "icons/start-script.svg"))))); | ||
| 82 | } | ||
| 83 | |||
| 84 | void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) { | ||
| 85 | addScriptEditorWidget("loading...")->loadFile(scriptName); | ||
| 86 | updateButtons(); | ||
| 87 | } | ||
| 88 | |||
| 89 | void ScriptEditorWindow::loadScriptClicked() { | ||
| 90 | QString scriptName = QFileDialog::getOpenFileName(this, tr("Interface"), | ||
| 91 | qApp->getPreviousScriptLocation(), | ||
| 92 | tr("JavaScript Files (*.js)")); | ||
| 93 | if (!scriptName.isEmpty()) { | ||
| 94 | qApp->setPreviousScriptLocation(scriptName); | ||
| 95 | addScriptEditorWidget("loading...")->loadFile(scriptName); | ||
| 96 | updateButtons(); | ||
| 97 | } | ||
| 98 | } | ||
| 99 | |||
| 100 | void ScriptEditorWindow::loadMenuAboutToShow() { | ||
| 101 | _loadMenu->clear(); | ||
| 102 | QStringList runningScripts = DependencyManager::get<ScriptEngines>()->getRunningScripts(); | ||
| 103 | if (runningScripts.count() > 0) { | ||
| 104 | QSignalMapper* signalMapper = new QSignalMapper(this); | ||
| 105 | foreach (const QString& runningScript, runningScripts) { | ||
| 106 | QAction* runningScriptAction = new QAction(runningScript, _loadMenu); | ||
| 107 | connect(runningScriptAction, SIGNAL(triggered()), signalMapper, SLOT(map())); | ||
| 108 | signalMapper->setMapping(runningScriptAction, runningScript); | ||
| 109 | _loadMenu->addAction(runningScriptAction); | ||
| 110 | } | ||
| 111 | connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(loadScriptMenu(const QString&))); | ||
| 112 | } else { | ||
| 113 | QAction* naAction = new QAction("(no running scripts)", _loadMenu); | ||
| 114 | naAction->setDisabled(true); | ||
| 115 | _loadMenu->addAction(naAction); | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | void ScriptEditorWindow::newScriptClicked() { | ||
| 120 | addScriptEditorWidget(QString("New script")); | ||
| 121 | } | ||
| 122 | |||
| 123 | void ScriptEditorWindow::toggleRunScriptClicked() { | ||
| 124 | this->setRunningState(!(_ScriptEditorWindowUI->tabWidget->currentIndex() !=-1 | ||
| 125 | && static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning())); | ||
| 126 | } | ||
| 127 | |||
| 128 | void ScriptEditorWindow::saveScriptClicked() { | ||
| 129 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { | ||
| 130 | ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget | ||
| 131 | ->currentWidget()); | ||
| 132 | currentScriptWidget->save(); | ||
| 133 | } | ||
| 134 | } | ||
| 135 | |||
| 136 | void ScriptEditorWindow::saveScriptAsClicked() { | ||
| 137 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { | ||
| 138 | ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget | ||
| 139 | ->currentWidget()); | ||
| 140 | currentScriptWidget->saveAs(); | ||
| 141 | } | ||
| 142 | } | ||
| 143 | |||
| 144 | ScriptEditorWidget* ScriptEditorWindow::addScriptEditorWidget(QString title) { | ||
| 145 | ScriptEditorWidget* newScriptEditorWidget = new ScriptEditorWidget(); | ||
| 146 | connect(newScriptEditorWidget, &ScriptEditorWidget::scriptnameChanged, this, &ScriptEditorWindow::updateScriptNameOrStatus); | ||
| 147 | connect(newScriptEditorWidget, &ScriptEditorWidget::scriptModified, this, &ScriptEditorWindow::updateScriptNameOrStatus); | ||
| 148 | connect(newScriptEditorWidget, &ScriptEditorWidget::runningStateChanged, this, &ScriptEditorWindow::updateButtons); | ||
| 149 | connect(this, &ScriptEditorWindow::windowActivated, newScriptEditorWidget, &ScriptEditorWidget::onWindowActivated); | ||
| 150 | _ScriptEditorWindowUI->tabWidget->addTab(newScriptEditorWidget, title); | ||
| 151 | _ScriptEditorWindowUI->tabWidget->setCurrentWidget(newScriptEditorWidget); | ||
| 152 | newScriptEditorWidget->setUpdatesEnabled(true); | ||
| 153 | newScriptEditorWidget->adjustSize(); | ||
| 154 | return newScriptEditorWidget; | ||
| 155 | } | ||
| 156 | |||
| 157 | void ScriptEditorWindow::tabSwitched(int tabIndex) { | ||
| 158 | this->updateButtons(); | ||
| 159 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { | ||
| 160 | ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget | ||
| 161 | ->currentWidget()); | ||
| 162 | QString modifiedStar = (currentScriptWidget->isModified() ? "*" : ""); | ||
| 163 | if (currentScriptWidget->getScriptName().length() > 0) { | ||
| 164 | this->setWindowTitle("Script Editor [" + currentScriptWidget->getScriptName() + modifiedStar + "]"); | ||
| 165 | } else { | ||
| 166 | this->setWindowTitle("Script Editor [New script" + modifiedStar + "]"); | ||
| 167 | } | ||
| 168 | } else { | ||
| 169 | this->setWindowTitle("Script Editor"); | ||
| 170 | } | ||
| 171 | } | ||
| 172 | |||
| 173 | void ScriptEditorWindow::tabCloseRequested(int tabIndex) { | ||
| 174 | if (ignoreCloseForModal(nullptr)) { | ||
| 175 | return; | ||
| 176 | } | ||
| 177 | ScriptEditorWidget* closingScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget | ||
| 178 | ->widget(tabIndex)); | ||
| 179 | if(closingScriptWidget->questionSave()) { | ||
| 180 | _ScriptEditorWindowUI->tabWidget->removeTab(tabIndex); | ||
| 181 | } | ||
| 182 | } | ||
| 183 | |||
| 184 | // If this operating system window causes a qml overlay modal dialog (which might not even be seen by the user), closing this window | ||
| 185 | // will crash the code that was waiting on the dialog result. So that code whousl set inModalDialog to true while the question is up. | ||
| 186 | // This code will not be necessary when switch out all operating system windows for qml overlays. | ||
| 187 | bool ScriptEditorWindow::ignoreCloseForModal(QCloseEvent* event) { | ||
| 188 | if (!inModalDialog) { | ||
| 189 | return false; | ||
| 190 | } | ||
| 191 | // Deliberately not using OffscreenUi, so that the dialog is seen. | ||
| 192 | QMessageBox::information(this, tr("Interface"), tr("There is a modal dialog that must be answered before closing."), | ||
| 193 | QMessageBox::Discard, QMessageBox::Discard); | ||
| 194 | if (event) { | ||
| 195 | event->ignore(); // don't close | ||
| 196 | } | ||
| 197 | return true; | ||
| 198 | } | ||
| 199 | |||
| 200 | void ScriptEditorWindow::closeEvent(QCloseEvent *event) { | ||
| 201 | if (ignoreCloseForModal(event)) { | ||
| 202 | return; | ||
| 203 | } | ||
| 204 | bool unsaved_docs_warning = false; | ||
| 205 | for (int i = 0; i < _ScriptEditorWindowUI->tabWidget->count(); i++){ | ||
| 206 | if(static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->widget(i))->isModified()){ | ||
| 207 | unsaved_docs_warning = true; | ||
| 208 | break; | ||
| 209 | } | ||
| 210 | } | ||
| 211 | |||
| 212 | if (!unsaved_docs_warning || QMessageBox::warning(this, tr("Interface"), | ||
| 213 | tr("There are some unsaved scripts, are you sure you want to close the editor? Changes will be lost!"), | ||
| 214 | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Discard) { | ||
| 215 | event->accept(); | ||
| 216 | } else { | ||
| 217 | event->ignore(); | ||
| 218 | } | ||
| 219 | } | ||
| 220 | |||
| 221 | void ScriptEditorWindow::updateScriptNameOrStatus() { | ||
| 222 | ScriptEditorWidget* source = static_cast<ScriptEditorWidget*>(QObject::sender()); | ||
| 223 | QString modifiedStar = (source->isModified()? "*" : ""); | ||
| 224 | if (source->getScriptName().length() > 0) { | ||
| 225 | for (int i = 0; i < _ScriptEditorWindowUI->tabWidget->count(); i++){ | ||
| 226 | if (_ScriptEditorWindowUI->tabWidget->widget(i) == source) { | ||
| 227 | _ScriptEditorWindowUI->tabWidget->setTabText(i, modifiedStar + QFileInfo(source->getScriptName()).fileName()); | ||
| 228 | _ScriptEditorWindowUI->tabWidget->setTabToolTip(i, source->getScriptName()); | ||
| 229 | } | ||
| 230 | } | ||
| 231 | } | ||
| 232 | |||
| 233 | if (_ScriptEditorWindowUI->tabWidget->currentWidget() == source) { | ||
| 234 | if (source->getScriptName().length() > 0) { | ||
| 235 | this->setWindowTitle("Script Editor [" + source->getScriptName() + modifiedStar + "]"); | ||
| 236 | } else { | ||
| 237 | this->setWindowTitle("Script Editor [New script" + modifiedStar + "]"); | ||
| 238 | } | ||
| 239 | } | ||
| 240 | } | ||
| 241 | |||
| 242 | void ScriptEditorWindow::terminateCurrentTab() { | ||
| 243 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { | ||
| 244 | _ScriptEditorWindowUI->tabWidget->removeTab(_ScriptEditorWindowUI->tabWidget->currentIndex()); | ||
| 245 | this->raise(); | ||
| 246 | } | ||
| 247 | } | ||
| 248 | |||
| 249 | bool ScriptEditorWindow::autoReloadScripts() { | ||
| 250 | return _ScriptEditorWindowUI->autoReloadCheckBox->isChecked(); | ||
| 251 | } | ||
| 252 | |||
| 253 | bool ScriptEditorWindow::event(QEvent* event) { | ||
| 254 | if (event->type() == QEvent::WindowActivate) { | ||
| 255 | emit windowActivated(); | ||
| 256 | } | ||
| 257 | return QWidget::event(event); | ||
| 258 | } | ||
| 259 | |||
| @@ -1,64 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptEditorWindow.h | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/14/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #ifndef hifi_ScriptEditorWindow_h | ||
| 13 | #define hifi_ScriptEditorWindow_h | ||
| 14 | |||
| 15 | #include "ScriptEditorWidget.h" | ||
| 16 | |||
| 17 | namespace Ui { | ||
| 18 | class ScriptEditorWindow; | ||
| 19 | } | ||
| 20 | |||
| 21 | class ScriptEditorWindow : public QWidget { | ||
| 22 | Q_OBJECT | ||
| 23 | |||
| 24 | public: | ||
| 25 | ScriptEditorWindow(QWidget* parent = nullptr); | ||
| 26 | ~ScriptEditorWindow(); | ||
| 27 | |||
| 28 | void terminateCurrentTab(); | ||
| 29 | bool autoReloadScripts(); | ||
| 30 | |||
| 31 | bool inModalDialog { false }; | ||
| 32 | bool ignoreCloseForModal(QCloseEvent* event); | ||
| 33 | |||
| 34 | signals: | ||
| 35 | void windowActivated(); | ||
| 36 | |||
| 37 | protected: | ||
| 38 | void closeEvent(QCloseEvent* event) override; | ||
| 39 | virtual bool event(QEvent* event) override; | ||
| 40 | |||
| 41 | private: | ||
| 42 | Ui::ScriptEditorWindow* _ScriptEditorWindowUI; | ||
| 43 | QMenu* _loadMenu; | ||
| 44 | QMenu* _saveMenu; | ||
| 45 | |||
| 46 | ScriptEditorWidget* addScriptEditorWidget(QString title); | ||
| 47 | void setRunningState(bool run); | ||
| 48 | void setScriptName(const QString& scriptName); | ||
| 49 | |||
| 50 | private slots: | ||
| 51 | void loadScriptMenu(const QString& scriptName); | ||
| 52 | void loadScriptClicked(); | ||
| 53 | void newScriptClicked(); | ||
| 54 | void toggleRunScriptClicked(); | ||
| 55 | void saveScriptClicked(); | ||
| 56 | void saveScriptAsClicked(); | ||
| 57 | void loadMenuAboutToShow(); | ||
| 58 | void tabSwitched(int tabIndex); | ||
| 59 | void tabCloseRequested(int tabIndex); | ||
| 60 | void updateScriptNameOrStatus(); | ||
| 61 | void updateButtons(); | ||
| 62 | }; | ||
| 63 | |||
| 64 | #endif // hifi_ScriptEditorWindow_h | ||
| @@ -1,28 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptLineNumberArea.cpp | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/30/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #include "ScriptLineNumberArea.h" | ||
| 13 | |||
| 14 | #include "ScriptEditBox.h" | ||
| 15 | |||
| 16 | ScriptLineNumberArea::ScriptLineNumberArea(ScriptEditBox* scriptEditBox) : | ||
| 17 | QWidget(scriptEditBox) | ||
| 18 | { | ||
| 19 | _scriptEditBox = scriptEditBox; | ||
| 20 | } | ||
| 21 | |||
| 22 | QSize ScriptLineNumberArea::sizeHint() const { | ||
| 23 | return QSize(_scriptEditBox->lineNumberAreaWidth(), 0); | ||
| 24 | } | ||
| 25 | |||
| 26 | void ScriptLineNumberArea::paintEvent(QPaintEvent* event) { | ||
| 27 | _scriptEditBox->lineNumberAreaPaintEvent(event); | ||
| 28 | } | ||
| @@ -1,32 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptLineNumberArea.h | ||
| 3 | // interface/src/ui | ||
| 4 | // | ||
| 5 | // Created by Thijs Wenker on 4/30/14. | ||
| 6 | // Copyright 2014 High Fidelity, Inc. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #ifndef hifi_ScriptLineNumberArea_h | ||
| 13 | #define hifi_ScriptLineNumberArea_h | ||
| 14 | |||
| 15 | #include <QWidget> | ||
| 16 | |||
| 17 | class ScriptEditBox; | ||
| 18 | |||
| 19 | class ScriptLineNumberArea : public QWidget { | ||
| 20 | |||
| 21 | public: | ||
| 22 | ScriptLineNumberArea(ScriptEditBox* scriptEditBox); | ||
| 23 | QSize sizeHint() const override; | ||
| 24 | |||
| 25 | protected: | ||
| 26 | void paintEvent(QPaintEvent* event) override; | ||
| 27 | |||
| 28 | private: | ||
| 29 | ScriptEditBox* _scriptEditBox; | ||
| 30 | }; | ||
| 31 | |||
| 32 | #endif // hifi_ScriptLineNumberArea_h | ||
| @@ -1,49 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptsTableWidget.cpp | ||
| 3 | // interface | ||
| 4 | // | ||
| 5 | // Created by Mohammed Nafees on 04/03/2014. | ||
| 6 | // Copyright (c) 2014 High Fidelity, Inc. All rights reserved. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #include <QDebug> | ||
| 13 | #include <QHeaderView> | ||
| 14 | #include <QKeyEvent> | ||
| 15 | #include <QPainter> | ||
| 16 | |||
| 17 | #include "ScriptsTableWidget.h" | ||
| 18 | |||
| 19 | ScriptsTableWidget::ScriptsTableWidget(QWidget* parent) : | ||
| 20 | QTableWidget(parent) { | ||
| 21 | verticalHeader()->setVisible(false); | ||
| 22 | horizontalHeader()->setVisible(false); | ||
| 23 | setShowGrid(false); | ||
| 24 | setSelectionMode(QAbstractItemView::NoSelection); | ||
| 25 | setEditTriggers(QAbstractItemView::NoEditTriggers); | ||
| 26 | setStyleSheet("QTableWidget { border: none; background: transparent; color: #333333; } QToolTip { color: #000000; background: #f9f6e4; padding: 2px; }"); | ||
| 27 | setToolTipDuration(200); | ||
| 28 | setWordWrap(true); | ||
| 29 | setGeometry(0, 0, parent->width(), parent->height()); | ||
| 30 | } | ||
| 31 | |||
| 32 | void ScriptsTableWidget::paintEvent(QPaintEvent* event) { | ||
| 33 | QPainter painter(viewport()); | ||
| 34 | painter.setPen(QColor::fromRgb(225, 225, 225)); // #e1e1e1 | ||
| 35 | |||
| 36 | int y = 0; | ||
| 37 | for (int i = 0; i < rowCount(); i++) { | ||
| 38 | painter.drawLine(5, rowHeight(i) + y, width(), rowHeight(i) + y); | ||
| 39 | y += rowHeight(i); | ||
| 40 | } | ||
| 41 | painter.end(); | ||
| 42 | |||
| 43 | QTableWidget::paintEvent(event); | ||
| 44 | } | ||
| 45 | |||
| 46 | void ScriptsTableWidget::keyPressEvent(QKeyEvent* event) { | ||
| 47 | // Ignore keys so they will propagate correctly | ||
| 48 | event->ignore(); | ||
| 49 | } | ||
| @@ -1,28 +0,0 @@ | |||
| 1 | // | ||
| 2 | // ScriptsTableWidget.h | ||
| 3 | // interface | ||
| 4 | // | ||
| 5 | // Created by Mohammed Nafees on 04/03/2014. | ||
| 6 | // Copyright (c) 2014 High Fidelity, Inc. All rights reserved. | ||
| 7 | // | ||
| 8 | // Distributed under the Apache License, Version 2.0. | ||
| 9 | // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | ||
| 10 | // | ||
| 11 | |||
| 12 | #ifndef hifi__ScriptsTableWidget_h | ||
| 13 | #define hifi__ScriptsTableWidget_h | ||
| 14 | |||
| 15 | #include <QDebug> | ||
| 16 | #include <QTableWidget> | ||
| 17 | |||
| 18 | class ScriptsTableWidget : public QTableWidget { | ||
| 19 | Q_OBJECT | ||
| 20 | public: | ||
| 21 | explicit ScriptsTableWidget(QWidget* parent); | ||
| 22 | |||
| 23 | protected: | ||
| 24 | virtual void paintEvent(QPaintEvent* event) override; | ||
| 25 | virtual void keyPressEvent(QKeyEvent* event) override; | ||
| 26 | }; | ||
| 27 | |||
| 28 | #endif // hifi__ScriptsTableWidget_h | ||
| @@ -1,142 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <ui version="4.0"> | ||
| 3 | <class>ScriptEditorWidget</class> | ||
| 4 | <widget class="QDockWidget" name="ScriptEditorWidget"> | ||
| 5 | <property name="geometry"> | ||
| 6 | <rect> | ||
| 7 | <x>0</x> | ||
| 8 | <y>0</y> | ||
| 9 | <width>691</width> | ||
| 10 | <height>549</height> | ||
| 11 | </rect> | ||
| 12 | </property> | ||
| 13 | <property name="sizePolicy"> | ||
| 14 | <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
| 15 | <horstretch>0</horstretch> | ||
| 16 | <verstretch>0</verstretch> | ||
| 17 | </sizepolicy> | ||
| 18 | </property> | ||
| 19 | <property name="minimumSize"> | ||
| 20 | <size> | ||
| 21 | <width>690</width> | ||
| 22 | <height>328</height> | ||
| 23 | </size> | ||
| 24 | </property> | ||
| 25 | <property name="styleSheet"> | ||
| 26 | <string notr="true">font-family: Helvetica, Arial, sans-serif;</string> | ||
| 27 | </property> | ||
| 28 | <property name="features"> | ||
| 29 | <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set> | ||
| 30 | </property> | ||
| 31 | <property name="allowedAreas"> | ||
| 32 | <set>Qt::NoDockWidgetArea</set> | ||
| 33 | </property> | ||
| 34 | <property name="windowTitle"> | ||
| 35 | <string>Edit Script</string> | ||
| 36 | </property> | ||
| 37 | <widget class="QWidget" name="dockWidgetContents"> | ||
| 38 | <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,1"> | ||
| 39 | <property name="spacing"> | ||
| 40 | <number>0</number> | ||
| 41 | </property> | ||
| 42 | <property name="leftMargin"> | ||
| 43 | <number>0</number> | ||
| 44 | </property> | ||
| 45 | <property name="topMargin"> | ||
| 46 | <number>0</number> | ||
| 47 | </property> | ||
| 48 | <property name="rightMargin"> | ||
| 49 | <number>0</number> | ||
| 50 | </property> | ||
| 51 | <property name="bottomMargin"> | ||
| 52 | <number>0</number> | ||
| 53 | </property> | ||
| 54 | <item> | ||
| 55 | <widget class="ScriptEditBox" name="scriptEdit"> | ||
| 56 | <property name="font"> | ||
| 57 | <font> | ||
| 58 | <family>Courier</family> | ||
| 59 | <pointsize>-1</pointsize> | ||
| 60 | <weight>50</weight> | ||
| 61 | <italic>false</italic> | ||
| 62 | <bold>false</bold> | ||
| 63 | </font> | ||
| 64 | </property> | ||
| 65 | <property name="styleSheet"> | ||
| 66 | <string notr="true">font: 16px "Courier";</string> | ||
| 67 | </property> | ||
| 68 | </widget> | ||
| 69 | </item> | ||
| 70 | <item> | ||
| 71 | <layout class="QHBoxLayout" name="horizontalLayout"> | ||
| 72 | <property name="spacing"> | ||
| 73 | <number>0</number> | ||
| 74 | </property> | ||
| 75 | <property name="leftMargin"> | ||
| 76 | <number>0</number> | ||
| 77 | </property> | ||
| 78 | <property name="topMargin"> | ||
| 79 | <number>0</number> | ||
| 80 | </property> | ||
| 81 | <item> | ||
| 82 | <widget class="QLabel" name="label"> | ||
| 83 | <property name="sizePolicy"> | ||
| 84 | <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> | ||
| 85 | <horstretch>0</horstretch> | ||
| 86 | <verstretch>0</verstretch> | ||
| 87 | </sizepolicy> | ||
| 88 | </property> | ||
| 89 | <property name="styleSheet"> | ||
| 90 | <string notr="true">font: 13px "Helvetica","Arial","sans-serif";</string> | ||
| 91 | </property> | ||
| 92 | <property name="text"> | ||
| 93 | <string>Debug Log:</string> | ||
| 94 | </property> | ||
| 95 | </widget> | ||
| 96 | </item> | ||
| 97 | <item> | ||
| 98 | <widget class="QCheckBox" name="onTheFlyCheckBox"> | ||
| 99 | <property name="font"> | ||
| 100 | <font> | ||
| 101 | <family>Helvetica,Arial,sans-serif</family> | ||
| 102 | <pointsize>-1</pointsize> | ||
| 103 | <weight>50</weight> | ||
| 104 | <italic>false</italic> | ||
| 105 | <bold>false</bold> | ||
| 106 | </font> | ||
| 107 | </property> | ||
| 108 | <property name="styleSheet"> | ||
| 109 | <string notr="true">font: 13px "Helvetica","Arial","sans-serif";</string> | ||
| 110 | </property> | ||
| 111 | <property name="text"> | ||
| 112 | <string>Run on the fly (Careful: Any valid change made to the code will run immediately) </string> | ||
| 113 | </property> | ||
| 114 | </widget> | ||
| 115 | </item> | ||
| 116 | <item> | ||
| 117 | <widget class="QPushButton" name="clearButton"> | ||
| 118 | <property name="text"> | ||
| 119 | <string>Clear</string> | ||
| 120 | </property> | ||
| 121 | <property name="iconSize"> | ||
| 122 | <size> | ||
| 123 | <width>16</width> | ||
| 124 | <height>16</height> | ||
| 125 | </size> | ||
| 126 | </property> | ||
| 127 | </widget> | ||
| 128 | </item> | ||
| 129 | </layout> | ||
| 130 | </item> | ||
| 131 | </layout> | ||
| 132 | </widget> | ||
| 133 | </widget> | ||
| 134 | <customwidgets> | ||
| 135 | <customwidget> | ||
| 136 | <class>ScriptEditBox</class> | ||
| 137 | <extends>QTextEdit</extends> | ||
| 138 | <header>ui/ScriptEditBox.h</header> | ||
| 139 | </customwidget> | ||
| 140 | </customwidgets> | ||
| 141 | <resources/> | ||
| 142 | </ui> | ||
| @@ -1,324 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <ui version="4.0"> | ||
| 3 | <class>ScriptEditorWindow</class> | ||
| 4 | <widget class="QWidget" name="ScriptEditorWindow"> | ||
| 5 | <property name="windowModality"> | ||
| 6 | <enum>Qt::NonModal</enum> | ||
| 7 | </property> | ||
| 8 | <property name="geometry"> | ||
| 9 | <rect> | ||
| 10 | <x>0</x> | ||
| 11 | <y>0</y> | ||
| 12 | <width>780</width> | ||
| 13 | <height>717</height> | ||
| 14 | </rect> | ||
| 15 | </property> | ||
| 16 | <property name="minimumSize"> | ||
| 17 | <size> | ||
| 18 | <width>400</width> | ||
| 19 | <height>250</height> | ||
| 20 | </size> | ||
| 21 | </property> | ||
| 22 | <property name="windowTitle"> | ||
| 23 | <string>Script Editor</string> | ||
| 24 | </property> | ||
| 25 | <property name="styleSheet"> | ||
| 26 | <string notr="true">font-family: Helvetica, Arial, sans-serif;</string> | ||
| 27 | </property> | ||
| 28 | <layout class="QVBoxLayout" name="verticalLayout"> | ||
| 29 | <property name="spacing"> | ||
| 30 | <number>0</number> | ||
| 31 | </property> | ||
| 32 | <property name="leftMargin"> | ||
| 33 | <number>0</number> | ||
| 34 | </property> | ||
| 35 | <property name="topMargin"> | ||
| 36 | <number>0</number> | ||
| 37 | </property> | ||
| 38 | <property name="rightMargin"> | ||
| 39 | <number>0</number> | ||
| 40 | </property> | ||
| 41 | <property name="bottomMargin"> | ||
| 42 | <number>0</number> | ||
| 43 | </property> | ||
| 44 | <item> | ||
| 45 | <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0,0"> | ||
| 46 | <property name="spacing"> | ||
| 47 | <number>3</number> | ||
| 48 | </property> | ||
| 49 | <property name="sizeConstraint"> | ||
| 50 | <enum>QLayout::SetNoConstraint</enum> | ||
| 51 | </property> | ||
| 52 | <property name="leftMargin"> | ||
| 53 | <number>0</number> | ||
| 54 | </property> | ||
| 55 | <property name="topMargin"> | ||
| 56 | <number>0</number> | ||
| 57 | </property> | ||
| 58 | <item> | ||
| 59 | <widget class="QToolButton" name="newButton"> | ||
| 60 | <property name="toolTip"> | ||
| 61 | <string>New Script (Ctrl+N)</string> | ||
| 62 | </property> | ||
| 63 | <property name="text"> | ||
| 64 | <string>New</string> | ||
| 65 | </property> | ||
| 66 | <property name="iconSize"> | ||
| 67 | <size> | ||
| 68 | <width>32</width> | ||
| 69 | <height>32</height> | ||
| 70 | </size> | ||
| 71 | </property> | ||
| 72 | </widget> | ||
| 73 | </item> | ||
| 74 | <item> | ||
| 75 | <widget class="QToolButton" name="loadButton"> | ||
| 76 | <property name="minimumSize"> | ||
| 77 | <size> | ||
| 78 | <width>30</width> | ||
| 79 | <height>0</height> | ||
| 80 | </size> | ||
| 81 | </property> | ||
| 82 | <property name="baseSize"> | ||
| 83 | <size> | ||
| 84 | <width>25</width> | ||
| 85 | <height>0</height> | ||
| 86 | </size> | ||
| 87 | </property> | ||
| 88 | <property name="toolTip"> | ||
| 89 | <string>Load Script (Ctrl+O)</string> | ||
| 90 | </property> | ||
| 91 | <property name="text"> | ||
| 92 | <string>Load</string> | ||
| 93 | </property> | ||
| 94 | <property name="iconSize"> | ||
| 95 | <size> | ||
| 96 | <width>32</width> | ||
| 97 | <height>32</height> | ||
| 98 | </size> | ||
| 99 | </property> | ||
| 100 | <property name="checkable"> | ||
| 101 | <bool>false</bool> | ||
| 102 | </property> | ||
| 103 | <property name="popupMode"> | ||
| 104 | <enum>QToolButton::MenuButtonPopup</enum> | ||
| 105 | </property> | ||
| 106 | <property name="toolButtonStyle"> | ||
| 107 | <enum>Qt::ToolButtonIconOnly</enum> | ||
| 108 | </property> | ||
| 109 | </widget> | ||
| 110 | </item> | ||
| 111 | <item> | ||
| 112 | <widget class="QToolButton" name="saveButton"> | ||
| 113 | <property name="minimumSize"> | ||
| 114 | <size> | ||
| 115 | <width>30</width> | ||
| 116 | <height>0</height> | ||
| 117 | </size> | ||
| 118 | </property> | ||
| 119 | <property name="baseSize"> | ||
| 120 | <size> | ||
| 121 | <width>32</width> | ||
| 122 | <height>0</height> | ||
| 123 | </size> | ||
| 124 | </property> | ||
| 125 | <property name="focusPolicy"> | ||
| 126 | <enum>Qt::NoFocus</enum> | ||
| 127 | </property> | ||
| 128 | <property name="contextMenuPolicy"> | ||
| 129 | <enum>Qt::NoContextMenu</enum> | ||
| 130 | </property> | ||
| 131 | <property name="toolTip"> | ||
| 132 | <string>Save Script (Ctrl+S)</string> | ||
| 133 | </property> | ||
| 134 | <property name="text"> | ||
| 135 | <string>Save</string> | ||
| 136 | </property> | ||
| 137 | <property name="iconSize"> | ||
| 138 | <size> | ||
| 139 | <width>32</width> | ||
| 140 | <height>32</height> | ||
| 141 | </size> | ||
| 142 | </property> | ||
| 143 | <property name="autoRepeatDelay"> | ||
| 144 | <number>316</number> | ||
| 145 | </property> | ||
| 146 | <property name="popupMode"> | ||
| 147 | <enum>QToolButton::MenuButtonPopup</enum> | ||
| 148 | </property> | ||
| 149 | </widget> | ||
| 150 | </item> | ||
| 151 | <item> | ||
| 152 | <widget class="QToolButton" name="toggleRunButton"> | ||
| 153 | <property name="toolTip"> | ||
| 154 | <string>Toggle Run Script (F5)</string> | ||
| 155 | </property> | ||
| 156 | <property name="text"> | ||
| 157 | <string>Run/Stop</string> | ||
| 158 | </property> | ||
| 159 | <property name="iconSize"> | ||
| 160 | <size> | ||
| 161 | <width>32</width> | ||
| 162 | <height>32</height> | ||
| 163 | </size> | ||
| 164 | </property> | ||
| 165 | </widget> | ||
| 166 | </item> | ||
| 167 | <item> | ||
| 168 | <spacer name="horizontalSpacer"> | ||
| 169 | <property name="orientation"> | ||
| 170 | <enum>Qt::Horizontal</enum> | ||
| 171 | </property> | ||
| 172 | <property name="sizeHint" stdset="0"> | ||
| 173 | <size> | ||
| 174 | <width>40</width> | ||
| 175 | <height>20</height> | ||
| 176 | </size> | ||
| 177 | </property> | ||
| 178 | </spacer> | ||
| 179 | </item> | ||
| 180 | <item> | ||
| 181 | <widget class="QCheckBox" name="autoReloadCheckBox"> | ||
| 182 | <property name="styleSheet"> | ||
| 183 | <string notr="true">font: 13px "Helvetica","Arial","sans-serif";</string> | ||
| 184 | </property> | ||
| 185 | <property name="text"> | ||
| 186 | <string>Automatically reload externally changed files</string> | ||
| 187 | </property> | ||
| 188 | </widget> | ||
| 189 | </item> | ||
| 190 | </layout> | ||
| 191 | </item> | ||
| 192 | <item> | ||
| 193 | <widget class="QTabWidget" name="tabWidget"> | ||
| 194 | <property name="enabled"> | ||
| 195 | <bool>true</bool> | ||
| 196 | </property> | ||
| 197 | <property name="minimumSize"> | ||
| 198 | <size> | ||
| 199 | <width>250</width> | ||
| 200 | <height>80</height> | ||
| 201 | </size> | ||
| 202 | </property> | ||
| 203 | <property name="tabPosition"> | ||
| 204 | <enum>QTabWidget::West</enum> | ||
| 205 | </property> | ||
| 206 | <property name="tabShape"> | ||
| 207 | <enum>QTabWidget::Triangular</enum> | ||
| 208 | </property> | ||
| 209 | <property name="currentIndex"> | ||
| 210 | <number>-1</number> | ||
| 211 | </property> | ||
| 212 | <property name="elideMode"> | ||
| 213 | <enum>Qt::ElideNone</enum> | ||
| 214 | </property> | ||
| 215 | <property name="tabsClosable"> | ||
| 216 | <bool>true</bool> | ||
| 217 | </property> | ||
| 218 | <property name="movable"> | ||
| 219 | <bool>true</bool> | ||
| 220 | </property> | ||
| 221 | </widget> | ||
| 222 | </item> | ||
| 223 | </layout> | ||
| 224 | </widget> | ||
| 225 | <resources/> | ||
| 226 | <connections> | ||
| 227 | <connection> | ||
| 228 | <sender>saveButton</sender> | ||
| 229 | <signal>clicked()</signal> | ||
| 230 | <receiver>ScriptEditorWindow</receiver> | ||
| 231 | <slot>saveScriptClicked()</slot> | ||
| 232 | <hints> | ||
| 233 | <hint type="sourcelabel"> | ||
| 234 | <x>236</x> | ||
| 235 | <y>10</y> | ||
| 236 | </hint> | ||
| 237 | <hint type="destinationlabel"> | ||
| 238 | <x>199</x> | ||
| 239 | <y>264</y> | ||
| 240 | </hint> | ||
| 241 | </hints> | ||
| 242 | </connection> | ||
| 243 | <connection> | ||
| 244 | <sender>toggleRunButton</sender> | ||
| 245 | <signal>clicked()</signal> | ||
| 246 | <receiver>ScriptEditorWindow</receiver> | ||
| 247 | <slot>toggleRunScriptClicked()</slot> | ||
| 248 | <hints> | ||
| 249 | <hint type="sourcelabel"> | ||
| 250 | <x>330</x> | ||
| 251 | <y>10</y> | ||
| 252 | </hint> | ||
| 253 | <hint type="destinationlabel"> | ||
| 254 | <x>199</x> | ||
| 255 | <y>264</y> | ||
| 256 | </hint> | ||
| 257 | </hints> | ||
| 258 | </connection> | ||
| 259 | <connection> | ||
| 260 | <sender>newButton</sender> | ||
| 261 | <signal>clicked()</signal> | ||
| 262 | <receiver>ScriptEditorWindow</receiver> | ||
| 263 | <slot>newScriptClicked()</slot> | ||
| 264 | <hints> | ||
| 265 | <hint type="sourcelabel"> | ||
| 266 | <x>58</x> | ||
| 267 | <y>10</y> | ||
| 268 | </hint> | ||
| 269 | <hint type="destinationlabel"> | ||
| 270 | <x>199</x> | ||
| 271 | <y>264</y> | ||
| 272 | </hint> | ||
| 273 | </hints> | ||
| 274 | </connection> | ||
| 275 | <connection> | ||
| 276 | <sender>loadButton</sender> | ||
| 277 | <signal>clicked()</signal> | ||
| 278 | <receiver>ScriptEditorWindow</receiver> | ||
| 279 | <slot>loadScriptClicked()</slot> | ||
| 280 | <hints> | ||
| 281 | <hint type="sourcelabel"> | ||
| 282 | <x>85</x> | ||
| 283 | <y>10</y> | ||
| 284 | </hint> | ||
| 285 | <hint type="destinationlabel"> | ||
| 286 | <x>199</x> | ||
| 287 | <y>264</y> | ||
| 288 | </hint> | ||
| 289 | </hints> | ||
| 290 | </connection> | ||
| 291 | <connection> | ||
| 292 | <sender>tabWidget</sender> | ||
| 293 | <signal>currentChanged(int)</signal> | ||
| 294 | <receiver>ScriptEditorWindow</receiver> | ||
| 295 | <slot>tabSwitched(int)</slot> | ||
| 296 | <hints> | ||
| 297 | <hint type="sourcelabel"> | ||
| 298 | <x>352</x> | ||
| 299 | <y>360</y> | ||
| 300 | </hint> | ||
| 301 | <hint type="destinationlabel"> | ||
| 302 | <x>352</x> | ||
| 303 | <y>340</y> | ||
| 304 | </hint> | ||
| 305 | </hints> | ||
| 306 | </connection> | ||
| 307 | <connection> | ||
| 308 | <sender>tabWidget</sender> | ||
| 309 | <signal>tabCloseRequested(int)</signal> | ||
| 310 | <receiver>ScriptEditorWindow</receiver> | ||
| 311 | <slot>tabCloseRequested(int)</slot> | ||
| 312 | <hints> | ||
| 313 | <hint type="sourcelabel"> | ||
| 314 | <x>352</x> | ||
| 315 | <y>360</y> | ||
| 316 | </hint> | ||
| 317 | <hint type="destinationlabel"> | ||
| 318 | <x>352</x> | ||
| 319 | <y>340</y> | ||
| 320 | </hint> | ||
| 321 | </hints> | ||
| 322 | </connection> | ||
| 323 | </connections> | ||
| 324 | </ui> | ||