Incorporação/definição de plugins incompletos

Alguns plugins — e, aliás, o plot_options usado como exemplo acima é um deles — não são completos por si só. Eles simplesmente não têm os elementos de GUI para selecionar alguns valores importantes. Eles foram projetados para serem usados ​​apenas incorporados a outros plugins.

Até que ponto o plugin plot_options está incompleto? Bem, para algumas configurações de opções, ele precisa saber o nome dos objetos/expressões para os eixos x e y (na verdade, funcionará bem se tiver apenas um deles, mas precisa de pelo menos um para funcionar corretamente). No entanto, ele não possui um mecanismo para selecionar esses objetos ou inseri-los de qualquer outra forma. Então, como ele sabe sobre eles?

Na seção de lógica do plugin plot_options, existem duas linhas adicionais, ainda não abordadas:

<logic>
                <external id="xvar" />
                <external id="yvar" />

                [...]
        </logic>
        

Isso define duas propriedades adicionais no plugin plot_options, cujo único propósito é ser conectado a algumas propriedades (ainda desconhecidas) do plugin de incorporação. No plugin plot_options, essas duas propriedades são simplesmente usadas como quaisquer outras e, por exemplo, existem chamadas para getString("xvar") no modelo JS do plot_options.

Agora, para o plugin incompleto, não há como saber onde ele será incorporado e quais serão os nomes das configurações relevantes no plugin de incorporação. Portanto, precisamos adicionar duas linhas adicionais na seção de lógica do plugin de incorporação:

<logic>
                [...]

                <connect client="plotoptions.xvar" governor="xvarslot.available" />
                <connect client="plotoptions.yvar" governor="yvarslot.available" />
        </logic>
        

Em princípio, isso não é novidade; já abordamos as instruções <connect> no capítulo da seção de lógica da GUI. Basta conectar os valores em dois varlots (chamados "xvarslot" e "yvarslot" neste exemplo) às propriedades external receptoras do plugin incorporado. É só isso. Todo o resto é tratado automaticamente.