Skip to content

Commit 5c8110d

Browse files
committed
Reduce calls to Thymio.setProgram, fixes #115
1 parent 3ef9054 commit 5c8110d

File tree

2 files changed

+34
-17
lines changed

2 files changed

+34
-17
lines changed

main.qml

+22-8
Original file line numberDiff line numberDiff line change
@@ -375,18 +375,32 @@ ApplicationWindow {
375375

376376
Thymio {
377377
id: thymio
378+
property bool playingOld : false
378379
property bool playing: false
379-
events: vplEditor ? vplEditor.compiler.output.events : {}
380-
source: playing ? vplEditor.compiler.output.script : ""
381380
onNodeChanged: playing = false
382381
onPlayingChanged: {
383-
vplEditor.compiler.execReset(playing);
384-
if (!playing) {
385-
setVariable("motor.left.target", 0);
386-
setVariable("motor.right.target", 0);
387-
} else {
388-
vplEditor.saveProgram(autosaveName);
382+
if (playing && !playingOld) {
383+
start();
384+
} else if (!playing && playingOld) {
385+
stop();
389386
}
387+
playingOld = playing;
388+
}
389+
function start() {
390+
vplEditor.saveProgram(autosaveName);
391+
vplEditor.compiler.execReset(true);
392+
var output = vplEditor.compiler.output;
393+
program = {
394+
events: output.events,
395+
source: output.script,
396+
};
397+
}
398+
function stop() {
399+
vplEditor.compiler.execReset(false);
400+
program = {
401+
events: {},
402+
source: "",
403+
};
390404
}
391405
onErrorChanged: if (error !== "") { vplEditor.compiler.output.error = error; }
392406
}

thymio-vpl2/Thymio.qml

+12-9
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ import Aseba 1.0
33
import Simulator 1.0
44

55
Item {
6-
property var variables: ({})
7-
property var events: ({})
8-
property string source: ""
9-
property string error: ""
10-
116
property var node: {
127
for (var i = 0; i < aseba.nodes.length; ++i) {
138
var node = aseba.nodes[i];
@@ -17,19 +12,27 @@ Item {
1712
}
1813
}
1914

15+
property var variables: ({})
16+
property var program: ({
17+
"events": {},
18+
"source": "",
19+
})
20+
property string error: ""
21+
2022
Simulator {
2123
id: simulator
2224
onSimulationCompleted: console.log(JSON.stringify(log));
2325
onNotify: console.log("Thymio said: " + level + " " + description + " " + arguments)
2426
}
2527

2628
onNodeChanged: {
27-
setVariables();
28-
setProgram();
29+
if (node) {
30+
setVariables();
31+
setProgram();
32+
}
2933
}
3034
onVariablesChanged: setVariables()
31-
onEventsChanged: setProgram()
32-
onSourceChanged: setProgram()
35+
onProgramChanged: setProgram()
3336

3437
function setVariables() {
3538
if (node) {

0 commit comments

Comments
 (0)