Poglavje 4. Definiranje GUI

Definiranje pogovornega okna

V prejšnjem poglavju ste videli, kako registrirati vtičnik v RKWard. Najpomembnejša sestavina je bila določitev poti do XML datoteko z opisom, kako je vtičnik dejansko videti. V tem poglavju se boste naučili, kako ustvariti to XML datoteko.

Namig

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

Še enkrat vas bomo popeljali skozi primer. Primer je (nekoliko poenostavljena) različica t-testa z dvema spremenljivkama.

<!DOCTYPE rkplugin>
        

Tip dokumenta še ni zares razložen. Vseeno ga nastavite na rkplugin.

<document>
        <code file="t_test_two_vars.js"/>
        

Vsi vtičniki ustvarijo neko kodo. Trenutno je edini način za to uporaba JS, kot je podrobno opisano v naslednjem poglavju. To določa, kje iskati kodo JS. Ime datoteke je relativno glede na imenik vtičnika XML.

<help file="t_test_two_vars.rkh"/>
        

Običajno je dobro, da za svoj vtičnik zagotovite tudi stran s pomočjo. Ime datoteke te strani s pomočjo je podano tukaj glede na imenik, vtičnik XML Pisanje strani s pomočjo je dokumentirano tukaj. Če ne zagotovite datoteke pomoči, izpustite to vrstico.

<dialog label="Two Variable t-Test">
        

Kot veste, imajo lahko vtičniki pogovorno okno ali vmesnik čarovnika ali oboje. Tukaj začnemo definirati pogovorni vmesnik. Atribut label določa napis pogovornega okna.

<tabbook>
                        <tab label="Basic settings">
        

GUI elemente je mogoče organizirati s knjigo zavihkov (tabbook). Tukaj definiramo tabbook kot prvi element v pogovornem oknu. Uporabite <tabbook>[...]</tabbook>, da definirate zavihek, nato pa za vsako stran v zavihku uporabite <tab>[...]</tab>. Atribut label v elementu <tab> vam omogoča, da določite napis za to stran knjige zavihkov.

<row id="main_settings_row">
        

Oznaki <row> in <column> določata postavitev GUI elementov. Tukaj pravite, da bi radi postavili nekaj elementov drug ob drugem (od leve proti desni). Atribut id ni nujno potreben, vendar ga bomo uporabili pozneje, ko bomo našemu vtičniku dodajali vmesnik čarovnika. Prvi element, ki ga postavite v vrstico, je:

<varselector id="vars"/>
        

S to preprosto oznako ustvarite seznam, s katerega lahko uporabnik izbere spremenljivke. Za ta element morate določiti id, zato RKWard ve, kako ga najti.

Pozor

V nizu id NE smete uporabiti pike (.).

<column>
        

Nato v vrstico ugnezdimo <column>. To pomeni, da bodo naslednji elementi postavljeni drug nad drugim (od zgoraj navzdol) in vsi bodo desno od <varselector>.

<varslot types="number" id="x" source="vars" required="true" label="compare"/>
                                                <varslot types="number" id="y" source="vars" required="true" label="against" i18n_context="compare against"/>
        

Ti elementi so protipostavka <varselector>. Predstavljajo reže (slots), v katere lahko uporabnik vstavi spremenljivke. Opazili boste, da je source nastavljen na isto vrednost kot id <varselector>. To pomeni, da bo vsak <varslot> prevzel svojo spremenljivko iz izbirnika spremenljivk. <varslot> morajo prav tako dobiti id. Lahko imajo label in so lahko nastavljeni na required. To pomeni, da gumb Pošlji ne bo omogočen, dokler <varslot> ne vsebuje veljavne vrednosti. Končno atribut type še ni interpretiran, vendar bo uporabljen za zagotavljanje, da bodo v <varslot> dovoljeni samo pravilni tipi spremenljivk.

Če se sprašujete o atributu i18n_context: To zagotavlja kontekst za pomoč pri pravilnem prevodu besede "against", ki se uporablja kot <varslot>' s oznako, vendar ne vpliva neposredno na funkcionalnost vtičnika. Več o tem v ločenem poglavju.

<radio id="hypothesis" label="using test hypothesis">
                                                        <option value="two.sided" label="Two-sided"/>
                                                        <option value="greater" label="First is greater"/>
                                                        <option value="less" label="Second is greater"/>
                                                </radio>
        

Tukaj določite skupino ekskluzivnih gumbov <radio>. Skupina ima label in id. Vsak <option> (gumb) ima oznako in mu je dodeljena vrednost. To je vrednost, ki jo element <radio> vrne, ko je izbrana možnost.

</column>
                                </row>
                        </tab>
        

Vsako oznako je treba zapreti. Vse elemente, ki smo jih želeli (dva <varslots> in <radio>) smo postavili v <column>. Vse želene elemente (<varselector> in <column> s temi elementi) postavimo v <row>. Vse elemente, ki smo jih želeli, smo postavili na prvo stran v <tabbook>. Nismo še končali z definiranjem <tabbook> (prihaja več strani), seveda pa je še več v <pogovornem oknu>. Toda ta posnetek zaslona je v bistvu to, kar smo naredili do zdaj:

t-Test plugin

Upoštevajte, da nismo določili Pošlji,Zapri itd. gumbi ali pogled kode. Ti elementi seustvarijo samodejno. Seveda pa moramo še definiratidrugo stran <tabbook>:

<tab label="Options">
                                <checkbox id="varequal" label="assume equal variances" value=", var.equal=TRUE"/>
        

Elementi bodo privzeto postavljeni od zgoraj navzdol kot v <column>. Ker je to tisto, kar želimo tukaj, nam ni treba izrecno navesti postavitve <row> ali <column>. Prvi element, ki ga definiramo, je potrditveno polje. Tako kot <radio><option> ima potrditveno polje oznako in vrednost. vrednost je tisto, kar se vrne, če je potrditveno polje potrjeno. Seveda potrditveno polje potrebuje tudi id.

<frame label="Confidence Interval" id="frame_conf_int">
        

Tukaj je še en element postavitve: Da bi signalizirali, da spodnja elementa spadata skupaj, narišemo <frame> (polje). Ta okvir ima lahko oznako (napis). Ker je okvir samo pasivni element postavitve, ne potrebuje id, vseeno pa ga definiramo tukaj, saj se bomo nanj sklicevali kasneje, ko bomo definirali dodatni vmesnik čarovnika.

<checkbox id="confint" label="print confidence interval" value="1" checked="true"/>
                                        <spinbox type="real" id="conflevel" label="confidence level" min="0" max="1" initial="0.95"/>
                                </frame>
        

Znotraj <frame> postavimo še en <checkbox> (z uporabo checked="true", znak, da mora biti potrditveno polje privzeto potrjeno), in <spinbox>. Spinbox uporabniku omogoča izbiro vrednosti med "min" in "max" s privzeto/začetno vrednostjo "0,95". Nastavitev type na "real" signalizira, da so realna števila sprejeta v nasprotju s type="integer", ki bi sprejel samo cela števila.

Opomba

Prav tako je mogoče in pogosto bolje, da se omogoči preverjanje samega <frame>, namesto dodajanja <checkbox> znotraj. Za podrobnosti si oglejte referenco. To tukaj ni storjeno zaradi ponazoritve.

</tab>
                </tabbook>
        </dialog>
        

To je vse za drugo stran <tabbook>, vse strani v <tabbook> in vse elemente v <pogovornem oknu>. Končali smo z definiranjem, kako je videti pogovorno okno.

</document>
        

Na koncu zapremo oznako <document> in to je to. GUI je definiran. Zdaj lahko shranite datoteko. Kako pa se R sintaksa ustvari iz GUI nastavitve? S tem se bomo ukvarjali v naslednjem poglavju. Najprej pa si bomo ogledali dodajanje vmesnika čarovnika in nekaj splošnih premislekov.