Inbädda eller definiera ofullständiga insticksprogram

Vissa insticksprogram är inte fullständiga i sig själva, och i själva verket är plot_options använt som exempel ovan ett av dem. De har helt enkelt inte elementen i det grafiska användargränssnittet för att välja vissa viktiga värden. De är bara avsedda att använda inbäddade i andra insticksprogram.

Hur långt är insticksprogrammet plot_options ofullständigt? Jo, för vissa inställningsalternativ behöver det veta namnet på objekten eller uttrycken för x- och y-axlarna (i själva verket fungerar det bra om det har endera, men det behöver minst ett för att fungera som det ska). Dock har det inte någon mekanism för att välja objekten, eller mata in dem på något annat sätt. Så hur känner det då till dem?

I sektionen logic i insticksprogrammet plot_options finns ytterligare två rader, som inte behandlats ännu:

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

                [...]
        </logic>
        

Det definierar ytterligare två egenskaper i insticksprogrammet plot_options, vars enda syfte är att anslutas till några (ännu okända) egenskaper i det inbäddande insticksprogram. I insticksprogrammet plot_options är de två egenskaperna använda precis som vilka andra som helst, och det finns exempelvis anrop till getString("xvar") i JS-mallen i plot_options.

För det ofullständiga insticksprogrammet finns det inget sätt att veta var det inbäddas, och vad de relevanta inställningarna i det inbäddande insticksprogram heter. Vi måste alltså dessutom lägga till två ytterligare rader i det inbäddande insticksprogrammets sektion logic:

<logic>
                [...]

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

Det är principiellt ingenting nytt, vi har behandlat satsen <connect> i kapitlet om logik i det grafiska användargränssnittet. Man ansluter helt enkelt värdena i två varslots (benämnda "xvarslot" och "yvarslot" i exemplet) till de mottagande externa egenskaperna i det inbäddade insticksprogrammet. Det är allt. Allting annat hanteras automatiskt.