Mentre connettere le proprietà come descritto sopra è spesso sufficiente, a volte è più flessibile o più conveniente utilizzare JS per creare script della logica della GUI. In questo modo, l'esempio sopra potrebbe essere riscritto come:
[...]
<code file="code.js"/>
'
<logic>
<script><![CDATA[
// [...] qualsiasi codice al livello superiore viene invocato una sola volta
gui.addChangeCommand("mode.string", function() {
// mentre questa funzione anonima sarà invocata ogni volta che «mode.string» cambia
var varmode = (gui.getString("mode.string") == "variable");
gui.setValue("y.enabled", varmode);
gui.setValue("constant.enabled", !varmode);
});
]]></script>
</logic>
<dialog label="T-Test">
[...]
Registra una funzione anonima da invocare ogni volta che cambia il valore della casella radio id=""mode". All'interno di questa funzione, definiamo una variabile helper "varmode" che è vera quando la modalità è "variabile", falsa perché è "costante". Quindi utilizziamo gui.setValue() per impostare le proprietà «enabled» di "y" e "constant", proprio come facevamo prima utilizzando le istruzioni <connect>.
Nota
Se la stessa funzione deve essere invocata per modifiche in più elementi, potete anche passare un array dei rispettivi id= a gui.addChangeCommmand(). Inoltre, per comodità, gui.addChangeCommmand() restituisce il suo secondo parametro, che è utile se volete fare riferimento a questa funzione altrove (ad esempio per invocarla una volta durante l'inizializzazione). Ad esempio:
let update = gui.addChangeCommand(["mode.string", "y.available"], function() {
// fai qualcosa a ogni cambiamento di mode.string o y.available
});
update(); // fai lo stesso una volta durante l'inizializzazione
L'approccio basato su script alla logica della GUI diventa particolarmente utile quando si desidera modificare l'opzione disponibile in base al tipo di oggetto che l'utente ha selezionato. Vedere la guida per le funzioni disponibili.
Notare che l'approccio basato su script alla GUI la logica può essere mischiata con le istruzioni <connect> e <convert>, se lo si desidera. Tenere inoltre presente che il tag <script> consente di specificare un nome di file di script in aggiunta o in alternativa all'incorporamento del codice dello script. In genere, tuttavia, è più conveniente incorporare il codice dello script come mostrato sopra.