Gsettings: Difference between revisions
Line 122: | Line 122: | ||
</pre> | </pre> | ||
==Näide 12. | ==Näide 12. Vahemikud, valikuid ja loetletud tüübid== | ||
<pre> | |||
<schemalist> | |||
<enum id="org.gtk.Test.myenum"> | |||
<value nick="first" value="1"/> | |||
<value nick="second" value="2"/> | |||
</enum> | |||
<flags id="org.gtk.Test.myflags"> | |||
<value nick="flag1" value="1"/> | |||
<value nick="flag2" value="2"/> | |||
<value nick="flag3" value="4"/> | |||
</flags> | |||
<schema id="org.gtk.Test"> | |||
<key name="key-with-range" type="i"> | |||
<range min="1" max="100"/> | |||
<default>10</default> | |||
</key> | |||
<key name="key-with-choices" type="s"> | |||
<choices> | |||
<choice value='Elisabeth'/> | |||
<choice value='Annabeth'/> | |||
<choice value='Joe'/> | |||
</choices> | |||
<aliases> | |||
<alias value='Anna' target='Annabeth'/> | |||
<alias value='Beth' target='Elisabeth'/> | |||
</aliases> | |||
<default>'Joe'</default> | |||
</key> | |||
<key name='enumerated-key' enum='org.gtk.Test.myenum'> | |||
<default>'first'</default> | |||
</key> | |||
<key name='flags-key' flags='org.gtk.Test.myflags'> | |||
<default>["flag1",flag2"]</default> | |||
</key> | |||
</schema> | |||
</schemalist> | |||
</pre> | |||
Revision as of 01:08, 3 December 2012
GSettings - on kõrgetasemeline rakendusliides, rakenduste jaoks.
Kirjeldus
GSettings on rakendusliides, mis võimaldab mugavalt salvestada ja väljavõtta rakendus seadeid.
Loeb ja kirjutab, ning võib pidada mitte-blokeeruvaks. Lugemine GSettings-us on väga kiire: on ligikaudu samas suurusjärgus (kuid aeglasem) kui GHashTable otsing. Kirjutamine on ka väga kiire juhtudel kui on vaja tagasi tuua eelnevalt salvestatud rakendusi, kuid võib olla ka väga kallis. Paljud taustaprogrammid (sh dconf) on laisk lähtestamine, mis tähendab, et kui kasutaja kasutab oma arvuti muutmata mingeid seadeid siis palju tööd saab vältida. Sest dconf, D-Busi teenust ei pea isegi alustama sel juhul. Sel põhjusel, peaks ainult GSettings ära muutma võtmed väljundi, mis selgitab kasutaja tegevust. Erilist tähelepanu tuleb pöörata, muudatustele, mis tehtud käivitamise ajal - näiteks algväärtuste määramisel. Sisseehitatud g_settings_bind () funktsiooni puhul peab olema ettevaatlik, et ta ei kirjutaks seadet, mis vastab signaalidele mis edasi teevad muudatusi, ja loovad vidinaid.
Kui loote GSettings skeemi, siis peate ära määrama võtmed seadetes , nende tüübid ja vaikeväärtused, samuti ka mõned muud andmed.
Tavaliselt skeem on fikseeritud tee, mis määrab ära kuhu seaded salvestatakse. Kuid skeeme saab ka "ümbersuunata", st ei pea ole fikseeritud tee. See on kasulik näiteks kui skeem kirjeldab "konto", ja sa tahad salvestada suvalise arvu kontosid.
Erinevalt teistest konfiguratsiooni süsteemidest (nagu GConf), GSettings ei piira võtmed põhitüüpe nagu stringid ja numbrid. GSettings salvestab väärtused nagu GVariant, ja võimaldab igale GVariantType võtmeid. Key nimed on piiratud väiketähede, numbrite ja "-". Lisaks nimed peavad algama väiketähega, ei tohi lõppeda '-', ja ei tohi sisaldada järjestikku kriipsusid.
Sarnaselt GConf, vaikeväärtusi GSettings skeemides saab lokaliseerida, kuid lokaliseeritud väärtused salvestatakse gettext kataloogidesse ja vaadata saa neid kui domeene, mis on kirjas gettext-domeeni atribuutides <schemalist> või <schema> elemendid ja kategooria, mis on täpsustatud l10n atribuut <key> elemendis.
GSettings kasutab skeeme kompaktses kahendvormis, mis on loodud glib-compile-schemas utiliidis. Skeemi sisend on XML-vormingus, mida kirjeldab järgmine DTD:
<!ELEMENT schemalist (schema|enum)* > <!ATTLIST schemalist gettext-domain #IMPLIED > <!ELEMENT schema (key|child|override)* > <!ATTLIST schema id CDATA #REQUIRED path CDATA #IMPLIED gettext-domain CDATA #IMPLIED extends CDATA #IMPLIED list-of CDATA #IMPLIED > <!-- enumerated and flags types --> <!-- each value element maps a nick to a numeric value --> <!ELEMENT enum (value*) > <!ATTLIST enum id CDATA #REQUIRED > <!ELEMENT flags (value*) > <!ATTLIST flags id CDATA #REQUIRED > <!ELEMENT value EMPTY > <!-- nick must be at least 2 characters long --> <!-- value must be parsable as a 32-bit integer --> <!ELEMENT value nick #REQUIRED value #REQUIRED > <!ELEMENT key (default|summary?|description?|range?|choices?|aliases?) > <!-- name can only contain lowercase letters, numbers and '-' --> <!-- type must be a GVariant type string --> <!-- enum must be the id of an enum type that has been defined earlier --> <!-- flags must be the id of a flags type that has been defined earlier --> <!-- exactly one of type, enum or flags must be given --> <!ATTLIST key name CDATA #REQUIRED type CDATA #IMPLIED enum CDATA #IMPLIED flags CDATA #IMPLIED > <!-- the default value is specified a a serialized GVariant, i.e. you have to include the quotes when specifying a string --> <!ELEMENT default (#PCDATA) > <!-- the presence of the l10n attribute marks a default value for translation, its value is the gettext category to use --> <!-- if context is present, it specifies msgctxt to use --> <!ATTLIST default l10n (messages|time) #IMPLIED context CDATA #IMPLIED > <!ELEMENT summary (#PCDATA) > <!ELEMENT description (#PCDATA) > <!-- range is only allowed for keys with numeric type --> <!ELEMENT range EMPTY > <!-- min and max must be parseable as values of the key type and min < max --> <!ATTLIST range min CDATA #REQUIRED max CDATA #REQUIRED > <!-- choices is only allowed for keys with string or string array type --> <!ELEMENT choices (choice+) > <!-- each choice element specifies one possible value --> <!ELEMENT choice EMPTY > <!ATTLIST choice value CDATA #REQUIRED > <!-- aliases is only allowed for keys with enumerated type or with choices --> <!ELEMENT aliases (alias+) > <!-- each alias element specifies an alias for one of the possible values --> <!ELEMENT alias EMPTY > <!ATTLIST alias value CDATA #REQUIRED > <!ELEMENT child EMPTY > <!ATTLIST child name CDATA #REQUIRED schema CDATA #REQUIRED > <!ELEMENT override (#PCDATA) > <!ATTLIST override name CDATA #REQUIRED l10n CDATA #IMPLIED context CDATA #IMPLIED >
glib-compile-schemas skeemide failid peavad olema laiendiga .gschema.xml
Skeemi käivitamisel identifitseeritakse ID (vastavalt ID atribuut <skeemi> element).Konventsiooni skeemi id-s kasutatakse punktiir nime, sarnane stiili on D-Busi kasutatakse, nt "org.gnome.SessionManager". Eriti siis, kui seadistatud on konkreetne teenus, mis omab D-Busi omadusi, D-Busi bus nimi ja skeemi id peaksid olema võrdsed. Sest skeemis, käsitletavad sätted ei tohiks ole seotud ühegi nime rakendus ID-ga ja ei tohi kasutada StudlyCaps, nt "org.gnome.font-teisendamine".
Lisaks GVariant tüübi, võtmed võivad olla tüüpide loetletud liigid. Neid saab kirjeldada <choice>, <enum> või <flags> elemente, vt näide 12, "Vahemikud, valikuid ja loetletud tüübid".Alusvara tüübist selline võti on string, kuid võite kasutada g_settings_get_enum (), g_settings_set_enum (), g_settings_get_flags (), g_settings_set_flags () juurdepääsu arvväärtused vastab stringi väärtus enum ja flags võtmed.
Näide 11. vaikimisi väärtused
<schemalist> <schema id="org.gtk.Test" path="/tests/" gettext-domain="test"> <key name="greeting" type="s"> <default l10n="messages">"Hello, earthlings"</default> <summary>A greeting</summary> <description> Greeting of the invading martians </description> </key> <key name="box" type="(ii)"> <default>(20,30)</default> </key> </schema> </schemalist>
Näide 12. Vahemikud, valikuid ja loetletud tüübid
<schemalist> <enum id="org.gtk.Test.myenum"> <value nick="first" value="1"/> <value nick="second" value="2"/> </enum> <flags id="org.gtk.Test.myflags"> <value nick="flag1" value="1"/> <value nick="flag2" value="2"/> <value nick="flag3" value="4"/> </flags> <schema id="org.gtk.Test"> <key name="key-with-range" type="i"> <range min="1" max="100"/> <default>10</default> </key> <key name="key-with-choices" type="s"> <choices> <choice value='Elisabeth'/> <choice value='Annabeth'/> <choice value='Joe'/> </choices> <aliases> <alias value='Anna' target='Annabeth'/> <alias value='Beth' target='Elisabeth'/> </aliases> <default>'Joe'</default> </key> <key name='enumerated-key' enum='org.gtk.Test.myenum'> <default>'first'</default> </key> <key name='flags-key' flags='org.gtk.Test.myflags'> <default>["flag1",flag2"]</default> </key> </schema> </schemalist>
Marek Lepla A32