History

Merge pull request #9945 from mnafees/21233

Chris Collins committed 9 years ago

Commit ea131512 parents b6d1113 c46052322 files · +0 −3053Browse files

Unified · Split

22 files
  1. interface/resources/icons/load-script.svg +0 −125
  2. interface/resources/icons/new-script.svg +0 −129
  3. interface/resources/icons/save-script.svg +0 −674
  4. interface/resources/icons/start-script.svg +0 −550
  5. interface/resources/icons/stop-script.svg +0 −163
  6. interface/src/Application.cpp +0 −2
  7. interface/src/Menu.cpp +0 −5
  8. interface/src/Menu.h +0 −1
  9. interface/src/ui/DialogsManager.cpp +0 −7
  10. interface/src/ui/DialogsManager.h +0 −2
  11. interface/src/ui/ScriptEditBox.cpp +0 −111
  12. interface/src/ui/ScriptEditBox.h +0 −38
  13. interface/src/ui/ScriptEditorWidget.cpp +0 −256
  14. interface/src/ui/ScriptEditorWidget.h +0 −64
  15. interface/src/ui/ScriptEditorWindow.cpp +0 −259
  16. interface/src/ui/ScriptEditorWindow.h +0 −64
  17. interface/src/ui/ScriptLineNumberArea.cpp +0 −28
  18. interface/src/ui/ScriptLineNumberArea.h +0 −32
  19. interface/src/ui/ScriptsTableWidget.cpp +0 −49
  20. interface/src/ui/ScriptsTableWidget.h +0 −28
  21. interface/ui/scriptEditorWidget.ui +0 −142
  22. interface/ui/scriptEditorWindow.ui +0 −324
interface/resources/icons/load-script.svg+0−125
@@ -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>
interface/resources/icons/new-script.svg+0−129
@@ -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>
interface/resources/icons/save-script.svg+0−674
@@ -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>
interface/resources/icons/start-script.svg+0−550
@@ -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>
interface/resources/icons/stop-script.svg+0−163
@@ -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>
interface/src/Application.cpp+0−2
@@ -2745,8 +2745,6 @@ void Application::keyPressEvent(QKeyEvent* event) { · 2744 unmodified lines
27452745 case Qt::Key_S:
27462746 if (isShifted && isMeta && !isOption) {
27472747 Menu::getInstance()->triggerOption(MenuOption::SuppressShortTimings);
2748− } else if (isOption && !isShifted && !isMeta) {
2749− Menu::getInstance()->triggerOption(MenuOption::ScriptEditor);
27502748 } else if (!isOption && !isShifted && isMeta) {
27512749 takeSnapshot(true);
27522750 }
interface/src/Menu.cpp+0−5
@@ -117,11 +117,6 @@ Menu::Menu() { · 116 unmodified lines
117117 scriptEngines.data(), SLOT(reloadAllScripts()),
118118 QAction::NoRole, UNSPECIFIED_POSITION, "Advanced");
119119
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−
125120 // Edit > Console... [advanced]
126121 addActionToQMenuAndActionHash(editMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J,
127122 DependencyManager::get<StandAloneJSConsole>().data(),
interface/src/Menu.h+0−1
@@ -166,7 +166,6 @@ namespace MenuOption { · 165 unmodified lines
166166 const QString RunningScripts = "Running Scripts...";
167167 const QString RunClientScriptTests = "Run Client Script Tests";
168168 const QString RunTimingTests = "Run Timing Tests";
169− const QString ScriptEditor = "Script Editor...";
170169 const QString ScriptedMotorControl = "Enable Scripted Motor Control";
171170 const QString SendWrongDSConnectVersion = "Send wrong DS connect version";
172171 const QString SendWrongProtocolVersion = "Send wrong protocol version";
interface/src/ui/DialogsManager.cpp+0−7
@@ -26,7 +26,6 @@ · 25 unmodified lines
2626 #include "LoginDialog.h"
2727 #include "OctreeStatsDialog.h"
2828 #include "PreferencesDialog.h"
29−#include "ScriptEditorWindow.h"
3029 #include "UpdateDialog.h"
3130
3231 template<typename T>
@@ -120,12 +119,6 @@ void DialogsManager::hmdToolsClosed() { · 87 unmodified lines
120119 }
121120 }
122121
123−void DialogsManager::showScriptEditor() {
124− maybeCreateDialog(_scriptEditor);
125− _scriptEditor->show();
126− _scriptEditor->raise();
127−}
128−
129122 void DialogsManager::showTestingResults() {
130123 if (!_testingDialog) {
131124 _testingDialog = new TestingDialog(qApp->getWindow());
interface/src/ui/DialogsManager.h+0−2
@@ -50,7 +50,6 @@ public slots: · 49 unmodified lines
5050 void octreeStatsDetails();
5151 void lodTools();
5252 void hmdTools(bool showTools);
53− void showScriptEditor();
5453 void showDomainConnectionDialog();
5554 void showTestingResults();
5655
@@ -78,7 +77,6 @@ private: · 21 unmodified lines
7877 QPointer<HMDToolsDialog> _hmdToolsDialog;
7978 QPointer<LodToolsDialog> _lodToolsDialog;
8079 QPointer<OctreeStatsDialog> _octreeStatsDialog;
81− QPointer<ScriptEditorWindow> _scriptEditor;
8280 QPointer<TestingDialog> _testingDialog;
8381 QPointer<DomainConnectionDialog> _domainConnectionDialog;
8482 };
interface/src/ui/ScriptEditBox.cpp+0−111
@@ -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−}
interface/src/ui/ScriptEditBox.h+0−38
@@ -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
interface/src/ui/ScriptEditorWidget.cpp+0−256
@@ -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−}
interface/src/ui/ScriptEditorWidget.h+0−64
@@ -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
interface/src/ui/ScriptEditorWindow.cpp+0−259
@@ -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−
interface/src/ui/ScriptEditorWindow.h+0−64
@@ -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
interface/src/ui/ScriptLineNumberArea.cpp+0−28
@@ -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−}
interface/src/ui/ScriptLineNumberArea.h+0−32
@@ -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
interface/src/ui/ScriptsTableWidget.cpp+0−49
@@ -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−}
interface/src/ui/ScriptsTableWidget.h+0−28
@@ -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
interface/ui/scriptEditorWidget.ui+0−142
@@ -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 &quot;Courier&quot;;</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 &quot;Helvetica&quot;,&quot;Arial&quot;,&quot;sans-serif&quot;;</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 &quot;Helvetica&quot;,&quot;Arial&quot;,&quot;sans-serif&quot;;</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>
interface/ui/scriptEditorWindow.ui+0−324
@@ -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 &quot;Helvetica&quot;,&quot;Arial&quot;,&quot;sans-serif&quot;;</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>