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[ // ECMAScript code in this block // the top-level statement is only called once gui.addChangeCommand ("mode.string", "modeChanged ()"); // this function is called whenever the "mode" was changed modeChanged = function () { var varmode = (gui.getString ("mode.string") == "variable"); gui.setValue ("y.enabled", varmode); gui.setValue ("constant.enabled", !varmode); } ]]></script> </logic> <dialog label="T-Test"> [...]
La primera línia de codi li diu al RKWard que cridi a la funció modeChanged()
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>.
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.