Hoewel het verbinden van eigenschappen, zoals hierboven beschreven, vaak voldoende is, is het soms flexibeler of eenvoudiger, de GUI-logica in een script te beschrijven. Op die manier kan het bovenstaande voorbeeld worden herschreven naar:
[...]
<code file="code.js"/>
'
<logic>
<script><![CDATA[
// [...] elke code bovenaan wordt slechts eenmaal aangeroepen
gui.addChangeCommand("mode.string", function() {
// terwijl deze anonieme functie aangeroepen zal worden, wanneer "mode.string" wijzigt
var varmode = (gui.getString("mode.string") == "variable");
gui.setValue("y.enabled", varmode);
gui.setValue("constant.enabled", !varmode);
});
]]></script>
</logic>
<dialog label="T-Test">
[...]
Dit registreert een anonieme functie om aangeroepen te worden wanneer de waarde van de parameter id="mode" in het keuzerondje verandert. In deze functie definiëren we een hulpvariabele "varmode" die true is wanneer de modus "variabele" is, en false als die "constante" is. Daarna gebruiken we gui.setValue() om de eigenschappen op “aan” te zetten van "y" en "constant", op precies dezelfde manier als we dat eerder deden met de <connect> statements.
Opmerking
Als dezelfde functie aangeroepen zou moeten worden voor wijzigingen in verschillende elementen, dan kunt u een array van de respectievelijke id='s doorgeven aan gui.addChangeCommmand(). Verder, voor het gemak, gui.addChangeCommmand() geeft zijn tweede parameter door, wat nuttig is, als u naar deze functie elders wilt verwijzen (bijv. om het eenmaal aan te roepen tijdens initialisatie). Bijv.:
let update = gui.addChangeCommand(["mode.string", "y.available"], function() {
// doe iets bij elke wijziging van mode.string of y.available
});
update(); // doe hetzelfde eenmaal tijdens initialisatie
Het maken van scripts voor de GUI-logica is bijzonder nuttig wanneer u de beschikbare optie wilt aanpassen aan het type object dat door de gebruiker wordt geselecteerd. Zie welke functies er zijn in de naslag.
Merk op dat dit maken van scripts voor de GUI-logica kan samengaan met de statements <connect> en <convert> als u dat wilt.Ook maakt de <script>-tag het mogelijk de bestandsnaam van een script op te geven naast, of in plaats van, het Inlinen (invoegen) van de scriptcode. Het inlinen, zoals hierboven, is echter gewoonlijk het eenvoudigst.