Estensioni dipendenti dal contesto

Finora abbiamo assunto, tutte le estensioni sono sempre significative e tutte inserite nel menu principale. Tuttavia, alcune estensioni sono significative solo (o in aggiunta) in un determinato contesto. Ad esempio un'estensione per esportare i contenuti di un dispositivo grafico X11 di R è ovviamente più utile, se inserita nel menu di un dispositivo X11, non nella barra dei menu principale. Inoltre, un'estensione di questo tipo dovrebbe conoscere il numero di dispositivo sul quale dovrebbe operare, senza che questo debba essere richiesto all'utente.

Chiamiamo tali estensioni dipendenti dal contesto. Di conseguenza, nel file .pluginmap, non sono (o non solo) posizionati nell'elemento <hierarchy> principale ma piuttosto in un elemento <context>. Finora sono supportati solo due contesti diversi (ne arriveranno altri in seguito): x11 e importazione di file. Ci occuperemo di questi a turno. Anche se siete interessati solo al contesto di importazione, leggete anche la sezione sul contesto x11, poiché è leggermente più elaborata.

Contesto del dispositivo X11

Per utilizzare un'estensione nel contesto di un dispositivo x11, ovvero posizionarla nella barra dei menu della finestra che si apre quando si invoca x11() nella console, bisogna prima dichiararlo come di consueto nel file .pluginmap:

<document [...]>
        <components>
                [...]
                <component id="my_x11_plugin" file="my_x11_plugin.xml" label="Un'estensione del contesto X11"/>
                [...]
        </components>
                

Tuttavia, non è necessario definirla nella gerarchia (è possibile, se è anche significativa come estensione di livello superiore):

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

Invece, aggiungere una definizione del contesto «x11» e aggiungerla ai menu:

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

Nella sezione logica del xml dell'estensione, ora è possibile dichiarare due proprietà <external>: devnum e context. context (se dichiarato) sarà impostato su "x11" quando l'estensione viene invocata in questo contesto. devnum sarà impostato sul numero del dispositivo grafico su cui operare. E questo è tutto.

Importa contesto di dati

Prima di leggere questa sezione, assicurarsi di leggere la sezione sul contesto del dispositivo X11, poiché ciò spiega i concetti di base.

Il contesto "import" viene utilizzato per dichiarare le estensioni di filtro dei file di importazione. Basta inserirli in un contesto con id=""import" nel file .pluginmap . Tuttavia, c'è un'ulteriore svolta quando si dichiarano queste estensioni: per offrire una finestra unificata per la selezione dei file per tutti i tipi di file supportati, è necessario dichiarare un'ulteriore informazione sul componente:

<document [...]>
        <components>
                [...]
                <component id="mia_estensione_xyz_importazione" file="mia_estensione_xyz_importazione.xml" label="Importa  file XYZ">
                        <attribute id="format" value="*.xyz *.zyx" label="File di dati XYZ"/>
                </component>
                [...]
        </components>
        <hierarchy>
                [...]
        </hierarchy>
        <context id="import">
                [...]
                <menu id="import">
                        [...]
                        <entry id="mia_estensione_xyz_importazione"/>
                </menu>
        </context>
        [...]
</document>
                

La riga dell'attributo indica semplicemente che le estensioni associate ai file XYZ sono *.xyz o *.zyx e che il filtro dovrebbe essere etichettato come «file di dati XYZ» nella finestra di selezione dei file.

È possibile dichiarare due proprietà <external> nella propria estensione. filename sarà impostato sul nome del file selezionato e context sarà impostato su "import".