Fins ara hem assumit que tots els connectors sempre tenen sentit, i tots es col·loquen al menú principal. No obstant això, alguns connectors només tenen sentit (o addicionalment) en un context determinat. P. ex., un connector per a exportar el contingut d'un dispositiu gràfic X11 de l'R és òbviament el més útil quan es col·loca en el menú d'un dispositiu X11, no a la barra de menús principal. A més, aquest connector hauria de conèixer el número de dispositiu en què hauria d'operar, sense haver de preguntar-ho a l'usuari.
Anomenem aquests connectors dependents del context. Per tant, en el fitxer .pluginmap
no es col·loquen (o no només) en el <hierarchy> principal, sinó en un element <context>. Fins ara només s'admeten dos contextos diferents (després en vindran més): x11 i importació de fitxers. Ens ocuparem d'ells. Fins i tot si només esteu interessat en el context d'importació, llegiu també la secció sobre el context x11, ja que aquest és una mica més elaborat.
Per a utilitzar un connector en el context d'un dispositiu x11, que se situï a la barra de menús de la finestra que obteniu quan crideu x11()
a la consola, primer declareu-lo com de costum al fitxer .pluginmap
:
<document [...]> <components> [...] <component id="my_x11_plugin" file="my_x11_plugin.xml" label="An X11 context plugin"/> [...] </components>
No obstant això, no cal que el definiu a la jerarquia (podeu, si també té sentit com a connector de nivell superior):
<hierarchy> [...] </hierarchy>
En lloc d'això, afegiu una definició del context «x11», i afegiu-la als menús:
<context id="x11"> [...] <menu id="edit"> [...] <entry id="my_x11_plugin"/> </menu> </context> </document>
A la secció lògica de l'XML del connector, ara podeu declarar dues propietats <external>: devnum
i context
. El context
(si es declara) s'establirà a "x11"
quan s'invoqui el connector en aquest context. devnum
s'establirà al número del dispositiu gràfic on operar. I això és tot.
Abans de llegir aquesta secció, assegureu-vos de llegir la secció context del dispositiu X11, ja que explica els conceptes bàsics.
El context "import"
s'utilitza per a declarar els connectors del filtre de fitxers d'importació. Simplement col·loqueu-los en un context amb id=
"import"
al fitxer .pluginmap
. No obstant això, hi ha un aspecte addicional en declarar aquests connectors: per tal d'oferir un diàleg de selecció de fitxers unificat per a tots els tipus de fitxers admesos, cal declarar un bit addicional d'informació sobre el component:
<document [...]> <components> [...] <component id="my_xyz_import_plugin" file="my_xyz_import_plugin.xml" label="Import XYZ files"> <attribute id="format" value="*.xyz *.zyx" label="XYZ data files"/> </component> [...] </components> <hierarchy> [...] </hierarchy> <context id="import"> [...] <menu id="import"> [...] <entry id="my_xyz_import_plugin"/> </menu> </context> [...] </document>
La línia d'atribut simplement diu que les extensions associades del nom de fitxer per als fitxers XYZ són *.xyz
o *.zyx
, i que el filtre s'ha d'etiquetar amb «fitxers de dades XYZ» en el diàleg de selecció de fitxers.
Podeu declarar dues propietats <external> al connector. filename
establirà al nom de fitxer seleccionat, i context
s'establirà com "import"
.