Lógica da GUI com script

Embora conectar propriedades conforme descrito acima seja frequentemente suficiente, às vezes é mais flexível ou conveniente usar JS para programar a lógica da GUI. Dessa forma, o exemplo acima poderia ser reescrito como:

[...]
        <code file="code.js"/>
'
        <logic>
                <script><![CDATA[
                        // [...] qualquer código no nível superior é chamado apenas uma vez.
                        gui.addChangeCommand("mode.string", function() {
                                // enquanto esta função anônima será chamada sempre que "mode.string" mudar
                                var varmode = (gui.getString("mode.string") == "variable");
                                gui.setValue("y.enabled", varmode);
                                gui.setValue("constant.enabled", !varmode);
                        });
                ]]></script>
        </logic>

        <dialog label="Test t">
        [...]
        

Isso registra uma função anônima a ser chamada sempre que o valor da caixa de seleção id="mode" mudar. Dentro dessa função, definimos uma variável auxiliar "varmode" que é verdadeira quando o modo é "variable" e falsa quando é "constant". Em seguida, usamos gui.setValue() para definir as propriedades enabled de "y" e "constant", da mesma forma que fizemos usando as instruções <connect> anteriormente.

Nota

Se a mesma função precisar ser invocada para alterações em vários elementos, você também pode passar um array dos respectivos id=s para gui.addChangeCommand(). Além disso, para maior conveniência, gui.addChangeCommand() retorna seu segundo parâmetro, o que é útil se você quiser se referir a essa função em outro lugar (por exemplo, para gui.addChangeCommand() chamá-la uma vez durante a inicialização). Exemplo:

let update = gui.addChangeCommand(["mode.string", "y.available"], function() {
                // faz algo a cada mudança de modo.string ou y.disponível
        });
        update(); // faz o mesmo durante a inicialização
        

A abordagem com scripts para lógica da GUI torna-se particularmente útil quando você deseja alterar a opção disponível de acordo com o tipo de objeto que o usuário selecionou. Consulte a referência para obter as funções disponíveis.

Observe que a abordagem com script para a lógica da GUI pode ser combinada com instruções <connect> e <convert> se desejar. Observe também que a tag <script> permite especificar um nome de arquivo de script, além de ou como alternativa à inclusão do código de script. Normalmente, a inclusão do código de script, como mostrado acima, é mais conveniente.