Alcune estensioni - e in effetti, le plot_options usate sopra come esempio, sono una di queste - non sono complete da sole. Semplicemente non hanno elementi della GUI per selezionare alcuni valori importanti. Sono pensate per essere utilizzate solo integrate in altre estensioni.
In che misura l'estensione plot_options è incompleta? Bene, per alcune impostazioni delle opzioni, deve conoscere il nome degli oggetti/espressioni per gli assi x e y (in realtà andrà bene se ne ha solo uno, ma ha bisogno di almeno uno per funzionare correttamente). Tuttavia, non ha un meccanismo per selezionare quegli oggetti o inserirli in altro modo. Quindi come li conosce?
Nella sezione logica dell'estensione plot_options ci sono due righe aggiuntive, non ancora coperte:
<logic>
<external id="xvar" />
<external id="yvar" />
[...]
</logic>
Questo definisce due proprietà aggiuntive nell'estensione plot_options, il cui unico scopo è quello di essere collegato ad alcune proprietà (ancora sconosciute) dell'estensione di integrazione. Nell'estensione plot_options queste due proprietà sono semplicemente usate come qualsiasi altra, e per esempio ci sono chiamate a getString("xvar") nel modello JS di plot_options.
Ora, per l'estensione incompleta non c'è modo di sapere dove sarà integrata e come saranno chiamate le impostazioni rilevanti nell'estensione di integrazione. Quindi dobbiamo aggiungere anche due righe aggiuntive nella sezione logica dell'estensione di integrazione:
<logic>
[...]
<connect client="plotoptions.xvar" governor="xvarslot.available" />
<connect client="plotoptions.yvar" governor="yvarslot.available" />
</logic>
In linea di principio questa non è una novità, abbiamo trattato le istruzioni <connect> nel capitolo di logica della GUI. Connettere semplicemente i valori in due varslot (chiamati "xvarslot" e "yvarslot" in questo esempio) alle proprietà «esterne» riceventi dell'estensione incorporata. Questo è tutto. Tutto il resto viene gestito automaticamente.