Poglavje 3. Ustvarjanje menijskih vnosov

Ko ustvarite nov vtičnik, morate povedati RKWard o tem. Torej, prva stvar, ki jo morate narediti, je napisati datoteko .pluginmap (ali spremenite obstoječo). Oblika zapisa .pluginmap je XML. Vodil vas bom skozi primer (seveda se prepričajte, da imate RKWard konfiguriran za nalaganje vašega .pluginmap -- NastavitveKonfiguriraj RKWard Vtičniki):

Namig

Ko preberete to poglavje, si oglejte tudi paket rkwarddev. Zagotavlja nekaj R funkcij za ustvarjanje večine RKWard-jevih XML oznak za vas.

<!DOCTYPE rkpluginmap>
        

Tip dokumenta se v resnici ne interpretira, vendar ga vseeno nastavite na "rkpluginmap".

<document base_prefix="" namespace="myplugins" id="mypluginmap">
        

Atribut base_prefix je mogoče uporabiti, če so vsi vaši vtičniki v skupnem imeniku. V bistvu lahko ta imenik izpustite iz spodaj navedenih imen datotek. To je varno pustiti pri "".

Kot boste videli spodaj, vsi vtičniki dobijo edinstven identifikator, id. imenski prostor je način za organiziranje teh ID-jev in zmanjšanje možnosti, da bi po nesreči ustvarili podvojeni identifikator. Interno se v bistvu imenski prostor in nato :: doda pred vse identifikatorje, ki jih podate v tem .pluginmap. Na splošno, če nameravate distribuirati svoje vtičnike v paketu R, je dobro uporabiti ime paketa kot parameter namespace. Vtičniki, dobavljeni z uradno RKWard distribucijo imajo namespace="rkward".

Atribut id ni obvezen, vendar navedba ID-ja za vaš .pluginmap drugim ljudem omogoča, da njihovi .pluginmap-ji samodejno naložijo vaš .pluginmap (glejte razdelek o odvisnostih).

<komponente>
        

Komponente? Ali ne govorimo o vtičnikih? Da, vendar v prihodnosti vtičniki ne bodo nič več kot poseben razred komponent. Tukaj torej registriramo vse komponente/vtičnike pri RKWard. Poglejmo primer vnosa:

<component type="standard" id="t_test_two_vars" file="t_test_two_vars.xml" label="t-test dveh spremenljivk" />
        

Najprej atribut type: to za zdaj pustite na »standard«. Nadaljnje vrste še niso implementirane. id, ki smo ga že nakazali. Vsaka komponenta mora dobiti edinstven (v svojem imenskem prostoru) identifikator. Izberite tisto, ki je zlahka prepoznavna. Izogibajte se presledkom in kakršnim koli posebnim znakom. Ti zaenkrat niso prepovedani, vendar imajo lahko poseben pomen. Z atributom file določite, kje se nahaja opis dejanskega vtičnika. To je glede na imenik datoteka .pluginmap in base_prefix zgoraj. Na koncu dajte komponenti oznako. Ta oznaka bo prikazana povsod, kjer je vtičnik nameščen v meniju (ali v prihodnosti morda tudi na drugih mestih).

Običajno bo datoteka .pluginmap vsebovala več komponent, zato je tukaj še nekaj:

<component type="standard" id="unimplemented_test" file="means/unimplemented.xml" />
                <component type="standard" id="fictional_t_test" file="means/ttests/fictional.xml" label="This is a fictional t-test" />
                <component type="standard" id="descriptive" file="descriptive.xml" label="Descriptive Statistics" />
                <component type="standard" id="corr_matrix" file="corr_matrix.xml" label="Correlation Matrix" />
                <component type="standard" id="simple_anova" file="simple_anova.xml" label="Simple Anova" />
        </components>
        

OK, to je bil prvi korak. RKWard zdaj ve, da ti vtičniki obstajajo. Toda kako jih priklicati? Umestiti jih je treba v hierarhijo menijev:

<hierarchy>
                <menu id="analysis" label="Analysis">
        

Takoj pod oznako <hierarchy> začnete opisovati, v kateri <meni> naj gredo vaši vtičniki. Z zgornjo vrstico v bistvu rečete, da mora biti vaš vtičnik v meniju Analysis (ne nujno neposredno tam, ampak v podmeniju). Meni Analysis je standarden v RKWard, zato ga dejansko ni treba ustvariti od začetka. Če pa še ne bi obstajal, bi mu z uporabo atributa label dali njegovo ime. Končno, id ponovno identificira ta <meni>. To je potrebno, zato je več .pluginmap datoteke lahko postavijo svoje vtičnike v iste menije. To storijo tako, da poiščejo <meni> z danim id. Če ID še ne obstaja, bo ustvarjen nov meni. V nasprotnem primeru bodo vnosi dodani v obstoječi meni.

<menu id="means" label="Means">
        

Tu je v bistvu ista stvar: zdaj definiramo podmeni v meniju Analysis. Imenoval se bo Means.

<menu id="ttests" label="t-tests">
        

In zadnja raven v hierarhiji menijev: podmeni podmenija Means.

<entry component="t_test_two_vars" />
        

Zdaj, končno, to je meni, v katerega želimo postaviti vtičnik. Oznaka <entry> signalizira, da je to pravzaprav prava stvar, namesto drugega podmenija. Atribut component se nanaša na id, ki ste ga dali zgornjemu vtičniku/komponenti.

<entry component="fictional_t_test" />
                                </menu>
                                <entry component="fictional_t_test" />
                        </menu>
                        <menu id="frequency" label="Frequency" index="2"/>
        

Če ste izgubili sled: To je še en podmeni v meniju Analysis. Oglejte si spodnji posnetek zaslona. Nekaj nevidnega, označenega z [...], bomo preskočili.

[...]
                        </menu>
                        <entry component="corr_matrix"/>
                        <entry component="descriptive"/>
                        <entry component="simple_anova"/>
                </menu>
        

To so zadnji vnosi, vidni na spodnjih posnetkih zaslona.

<menu id="plots" label="Plots">
                        [...]
                </menu>
        

Seveda lahko svoje vtičnike postavite tudi v menije, ki niso Analysis.

<menu id="file" label="File">
                        [...]
                </menu>
        

Tudi v standardnih menijih, kot je Datoteka. Vse kar potrebujete je pravilen id.

</hierarchy>        
</document>
        

Tako se to naredi. In ta posnetek zaslona prikazuje rezultat:

Menijska hierarhija, ustvarjena z zgoraj prikazano kodo

Zmedeni? Najlažji način za začetek je verjetno uporaba nekaterih obstoječih datotek.pluginmap, ki so priložene distribuciji, in jih prilagodite svojim potrebam. Če potrebujete pomoč, ne oklevajte in pišite na poštni seznam za razvoj.

Nadzor vrstnega reda vnosov v meniju

Privzeto bodo vsi elementi (vnosi/podmeniji) znotraj menija samodejno razvrščeni po abecedi. V nekaterih primerih boste morda želeli več nadzora. V tem primeru lahko elemente združite na naslednji način:

  • Skupine lahko določite znotraj katerega koli menija, kot je ta. Vsi elementi, ki pripadajo isti skupini, bodo združeni:

    <group id="somegroup"/>
                                    
  • Če želite, da je skupina vizualno ločena od drugih vnosov, uporabite:

    <group id="somegroup" separated="true"/>
                                    
  • Vnose, menije in skupine je mogoče dodati določeni skupini z uporabo:

    <entry component="..." group="somegroup"/>
                                    
  • Pravzaprav je možno tudi implicitno definirati skupine (brez ločilnih črt):

    <entry component="first" group="a"/>
                    <entry component="third"/>
                    <entry component="second" group="a"/>
                                    
  • Imena skupin so specifična za vsak meni. Skupina "a" v meniju "Data" na primer ni v nasprotju s skupino "a" v meniju "Analysis".

  • Najpogostejši primer uporabe je definiranje skupin na vrhu ali na dnu menija. Za to sta v vsakem meniju vnaprej določeni skupini "top" in "bottom".

  • Vnosi znotraj vsake skupine so razvrščeni po abecedi. Skupine se prikažejo po vrstnem redu deklaracije (razen če so dodane drugi skupini, seveda).

  • Meniji in vnosi brez specifikacije skupine prav tako logično tvorijo skupino ("").