Kontekstno odvisni vtičniki

Doslej smo domnevali, da so vsi vtičniki vedno smiselni in vsi nameščeni v glavnem meniju. Vendar so nekateri vtičniki smiselni samo (ali dodatno) v določenem kontekstu. Na primer vtičnik za izvoz vsebine datoteke R Grafična naprava X11 je očitno najbolj uporabna, če jo postavite v meni naprave X11, ne v glavno menijsko vrstico. Prav tako mora tak vtičnik vedeti za številko naprave, na kateri naj deluje, ne da bi o tem vprašal uporabnika.

Takim vtičnikom pravimo, da so odvisni od konteksta. Skladno s tem v .pluginmap datoteko, niso (ali ne samo) postavljeni v glavno <hierarchy>, temveč v element <context>. Zaenkrat sta podprta samo dva različna konteksta (več jih bo na voljo pozneje): x11 in uvoz datotek. Te bomo obravnavali po vrsti. Tudi če vas zanima le uvozni kontekst, preberite tudi razdelek o kontekstu x11, saj je nekoliko bolj dodelan.

Kontekst naprave X11

Če želite uporabiti vtičnik v kontekstu naprave x11 – to pomeni, da ga postavite v menijsko vrstico okna, ki se prikaže, ko pokličete x11() v konzoli, ga najprej deklarirajte kot običajno v .pluginmap datoteki:

<document [...]>
        <components>
                [...]
                <component id="my_x11_plugin" file="my_x11_plugin.xml" label="An X11 context plugin"/>
                [...]
        </components>
                

Vendar vam ga ni treba definirati v hierarhiji (lahko, če jesmiseln tudi kot vtičnik najvišje ravni):

<hierarchy>
                [...]
        </hierarchy>
                

Namesto tega dodajte definicijo konteksta "x11" in jo dodajte v menije tja:

<context id="x11">
                [...]
                <menu id="edit">
                        [...]
                        <entry id="my_x11_plugin"/>
                </menu>
        </context>
</document>
                

V logičnem razdelku vtičnika xml lahko zdaj deklarirate dve lastnosti <external>: devnum in context. context (če je deklariran) bo nastavljen na »x11«, ko bo vtičnik priklican v tem kontekstu. devnum bo nastavljen na številko grafične naprave za delovanje. In to je vse.

Uvoz konteksta podatkov

Preden preberete ta razdelek, obvezno preberite razdelek o kontekstu naprave X11, saj pojasnjuje osnovne pojme.

Kontekst »import« se uporablja za deklaracijo vtičnikov filtrov za uvoz datotek. Preprosto jih postavite v kontekst z id="import" v datoteko .pluginmap. Vendar pa je pri deklaraciji teh vtičnikov še en dodaten zasuk: če želite ponuditi poenoteno pogovorno okno za izbiro datotek za vse podprte vrste datotek, morate deklarirati en dodaten bit informacij o svoji komponenti:

<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>
                

Vrstica atributa preprosto pravi, da so povezane pripone imena datotek za datoteke XYZ *.xyz ali *.zyx in da filter naj bo v pogovornem oknu za izbiro datoteke označen z Podatkovne datoteke XYZ.

V svojem vtičniku lahko deklarirate dve lastnosti <external>. filename bo nastavljen na izbrano ime datoteke, context pa bo nastavljen na "import".