Lògica de la IGU amb scripts

Sovint és suficient connectar les propietats tal com es descriu anteriorment, però de vegades és més flexible o més pràctic utilitzar JS per a crear scripts en la lògica de la IGU. D'aquesta manera, l'exemple anterior es podria reescriure com:

[...]
        <code file="code.js"/>
'
        <logic>
                <script><![CDATA[
                        // [...] any code at the top level is called only once
                        gui.addChangeCommand("mode.string", function() {
                                // while this anonymous function will be called, whenever "mode.string" changes
                                var varmode = (gui.getString("mode.string") == "variable");
                                gui.setValue("y.enabled", varmode);
                                gui.setValue("constant.enabled", !varmode);
                        });
                ]]></script>
        </logic>

        <dialog label="T-Test">
        [...]
        

Això registra una funció anònima que es cridarà, sempre que canviï el valor del quadre de botons d'opció id="mode". Dins d'aquesta funció, definim una variable d'ajuda "varmode" que és certa quan el mode és "variable", falsa quan és "constant". Després utilitzem gui.setValue() per a establir les propietats «enabled» de "y" i "constant", de la mateixa manera que abans vam fer servir sentències <connect>.

Nota

Si s'ha d'invocar la mateixa funció per a canvis en diversos elements, també podeu passar una matriu dels id= respectius a gui.addChangeCommmand(). A més, per comoditat, gui.addChangeCommmand() retorna el seu segon paràmetre, que és útil si voleu fer referència a aquesta funció a un altre lloc (p. ex. cridar-la una vegada durant la inicialització). P. ex.:

let update = gui.addChangeCommand(["mode.string", "y.available"], function() {
                // fa alguna cosa en cada canvi de mode.string o y.available
        });
        update(); // fa el mateix un cop durant la inicialització
        

L'enfocament amb scripts a la lògica de la IGU esdevé particularment útil quan voleu canviar l'opció disponible segons el tipus d'objecte que l'usuari ha seleccionat. Vegeu la referència per a les funcions disponibles.

Tingueu en compte que l'enfocament amb scripts a la lògica de la IGU es pot barrejar amb sentències <connect> i <convert> si voleu. Tingueu en compte també que l'etiqueta <script> permet especificar un nom de fitxer de script a més o com a alternativa a la inclusió del codi de script. Normalment la inclusió del codi de script tal com es mostra a dalt és més pràctic.