<snippets> gebruiken

Waar met het includen van bestanden zoals in de vorige sectie aan bod kwam tamelijk veel mogelijk is, wordt het het nuttigst in combinatie met de <snippets>-opdracht. Snippets zijn kleinere secties die u kunt invoegen in een ander deel van het bestand. Een voorbeeld maakt dit het duidelijkst:

<document>
        <snippets>
                <snippet id="notitie">
                        <frame>
                                <text>
                Dit wordt op twee plaatsen in de GUI ingevoegd
                                </text>
                        </frame>
                </snippet>
        </snippets>
        <dialog label="test">
                <column>
                        <insert snippet="notitie"/>
                        [...]
                        <insert snippet="notitie"/>
                </column>
        </dialog>
</document>
        

Dus u definieert een snippet op een plaats bovenin het XML-bestand, en daarna <insert> (invoegen) u die op elke plaats die u wenst.

Hoewel dit voorbeeld op zichzelf niet bijster nuttig is, kunt u denken aan het combineren hiervan met een <include>d .xml-bestand. Merk op dat u in hetzelfde bestand ook snippets kunt plaatsen voor het .rkh-bestand. U <include> het bestand eenvoudig ook daar, en <insert> de relevante snippet:

<!-- Dit is een bestand genaamd "common_snippets.xml" -->
<document>
        <snippet id="common_opties">
                <spinbox id="iets" [...]/>
                [...]
        </snippet>
        <snippet id="common_notitie">
                <text>Een belangrijke notitie voor dit type plugin</text>
        </snippet>

        <snippet id="common_help">
                <setting id="iets">Dit doet iets</setting>
                [...]
        </snippet>
</document>
        
<!-- Dit is het .xml-bestand van de plugin -->
<document>
        <snippets>
                <!-- Importeer de common snippets -->
                <include file="common_snippets.xml"/>
        </snippets>

        <dialog label="test2">
                <insert snippet="common_notitie"/>
                <spinbox id="iets_plugin_specifiek" [...] />
                <insert snippet="common_opties"/>
        </dialog>
</document>
        

Gelijk aan inclusie in JS, is de omgekeerde aanpak vaak zelf nog nuttiger:

<!-- Dit is een bestand met de naam "common_layout.xml" -->
<document>
        <column>
                <insert snippet="notitie">
                [...]
                <insert snippet="plugin_parameters">
        </column>
        [...]
</document>
        
<!-- Dit is het .xml-bestand van de plugin -->
<document>
        <snippets>
                <snippet id="notitie">
                        <text>De notitie voor deze specifieke plugin</text>
                </snippet>

                <snippet id="plugin_parameters">
                        <frame label="Parameters specifiek voor deze plugin">
                                [...]
                        </frame>
                </snippet>
        </snippets>

        <dialog label="test3">
                <include file="common_layout.xml"/>
        </dialog>
</document>
        

Het is tenslotte ook mogelijk snippets <in te voegen> in andere snippets, als: a) ze niet in elkaar zijn genest, en b) de <snippets>-sectie bovenin het bestand is geplaatst (voordat een geneste snippet wordt ingevoegd); dit omdat <insert>-statements worden gelezen van boven naar beneden.