Vala + GTK + 3 och Granite (spara värden i dconf)

Programmering i Vala och GTK +, vi har alla någonsin undrat hur man gör att en applikation skriven i Vala och GTK + kan spara tillstånden för fönsterstorleksparametrar och andra? De är av dessa typiska fall som vi använder gscheman för att spara dessa värden (den här välkända applikationen dconf-editor) som grafiskt hanterar dessa scheman.

Nu visar jag dig hur du gör det i enkla steg och utan komplikationer med Granite.Services.Settings-klassen från Granite-biblioteket.

Vad behöver vi?

Först måste vi ha GTK +, Granite och Vala-biblioteken installerade för att kunna sammanställa vår kod. För att göra detta i Ubuntu / ElementaryOS använder vi kommandot:

sudo apt-get install libgtk-3-dev libgranite-dev granite-demo valac

Och vi behöver också vilken textredigerare som stöder Vala / GTK + syntax och XML som Scratch Text Editor (ElementaryOS standard), GEdit, Sublime Text + Plugins, etc.

Koden

Här är exempelfilerna. För bättre förståelse lämnar jag koden i PASTE med kommentarer i dem:

main.vala
tutorial.vala
inställningar.vala
org.tutorial.gschema.xml

Förklaringar

Schemafilen, om eller om den måste vara XML och kallas ORG.APLICACION.GSCHEMA.XML. Det vill säga både ORG och GSCHEMA.XML måste finnas där för att dconf ska känna igen det som ett schema. Dessutom måste dessa diagram kopieras till rutten:

/usr/share/glib-2.0/schemas/

och de måste sammanställas för att DCONF ska kunna ta dem, för detta utför vi kommandot:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

Sammanställning

För att kompilera vårt program måste vi starta följande kommando i en terminal:

valac --pkg gtk+-3.0 --pkg granite main.vala tutorial.vala settings.vala

Och kör binärprogrammet med kommandot:

./main

Slutsatser

Det är en av de bästa metoderna för att spara tillståndet för vår APP i GSCHEMA med GLIB. Varje typ av frågor kommer jag gärna svara på.

Här är en skärmdump av mitt Ubuntu och exemplet:

snap-tutorial


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Raul P. sade

    Bra artikel, några GTK-självstudier i C ++ är inte dåliga. Saker har förändrats mycket, den officiella GTK-webbplatsen rekommenderar böcker från 2002, jag gjorde misstaget att köpa den.

    DevHelp hjälper mer än någon bok.

    1.    Raul P. sade

      Tyvärr menade jag C, inte C ++. När jag öppnar kodblockerna väljer jag alltid "Ett projekt i C ++", men jag programmerar i C.

  2.   hot sade

    Bra handledare, jag skulle vilja veta och jag vet att det inte är fallet, men i själva verket har jag gett mig tillräckligt stora slag för att kunna genomföra detta tillvägagångssätt, jag måste anpassa bakgrunden och inloggningsskärmen med en institutionell bild av var jag arbetar i användarnas team, de har en venezuelansk distro som heter Canaima, baserad på Debian 7 Wheezy, användare autentiserar via LDAP och flera användare kan arbeta på samma dator, så det kan vara så att det finns flera sessioner där de måste äga tapeten, är lagen anpassade av manuset för att underlätta teknikernas arbete och sedan injiceras policyn av puppetmaster-servern.

    Jag har försökt med gsettings men det fungerar bara med användaren som loggar in, tydligen sparar den informationen i en lokal databas per användare som jag ännu inte har uppnått, jag letar efter en konfiguration som gäller för hela systemet och inte för en enskild användare.

    Det är värt att nämna att bilden förändras ständigt på grund av nationella datum och av någon annan anledning, så det är inte bara en bild, de laddas upp av marionettmästaren till varje klient.

    Jag har ingen aning om något liknande kan tillämpas på mitt fall.
    Hälsningar.