Vala + GTK + 3 en Granite (waarden opslaan in dconf)

Programmeren in Vala en GTK +, we hebben ons allemaal wel eens afgevraagd hoe we een applicatie geschreven in Vala en GTK + in staat kunnen stellen om de status van de parameters van de venstergrootte en andere op te slaan? Het zijn van deze typische gevallen die we gebruiken gschema's om deze waarden op te slaan (deze bekende applicatie dconf-editor) die deze schema's grafisch beheert.

Nu laat ik u zien hoe u dit in eenvoudige stappen en zonder complicaties kunt doen met de klasse Granite.Services.Settings uit de Granite-bibliotheek.

Wat hebben we nodig?

Eerst hebben we de GTK +, Granite en Vala bibliotheken nodig om onze code te compileren. Om dit te doen in Ubuntu / ElementaryOS gebruiken we het commando:

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

En we hebben ook elke teksteditor nodig die Vala / GTK + syntaxis en XML ondersteunt, zoals Scratch Text Editor (ElementaryOS standaard), GEdit, Sublime Text + Plugins, etc.

De code

Hier zijn de voorbeeldbestanden. Voor een beter begrip laat ik de code in PASTE staan ​​met opmerkingen erin:

hoofd.vala
zelfstudie.vala
instellingen.vala
org.zelfstudie.gschema.xml

Toelichtingen

Het schemabestand, of het XML moet zijn en ORG.APLICACION.GSCHEMA.XML moet heten. Dat wil zeggen, zowel de ORG als GSCHEMA.XML moeten aanwezig zijn om dconf te laten herkennen als een schema. Bovendien moeten deze diagrammen naar de route worden gekopieerd:

/usr/share/glib-2.0/schemas/

en ze moeten worden gecompileerd zodat DCONF ze kan gebruiken, hiervoor voeren we het commando uit:

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

Compileren

Om ons programma te compileren, moeten we de volgende opdracht starten in een terminal:

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

En voer het binaire bestand uit met het commando:

./main

Conclusies

Het is een van de beste methoden om de staat van onze APP op te slaan in GSCHEMA met GLIB. Elke vraag die ik graag beantwoord.

Hier is een screenshot van mijn Ubuntu en het voorbeeld:

snap-tutorial


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Raul P. zei

    Goed artikel, een paar GTK-tutorials in C ++ zijn niet slecht. De dingen zijn veel veranderd, de officiële GTK-site beveelt boeken uit 2002 aan, ik maakte de fout om het te kopen.

    DevHelp helpt meer dan welk boek dan ook.

    1.    Raul P. zei

      Sorry, ik bedoelde C, niet C ++. Als ik de codeblokken open, kies ik altijd "A project in C ++", maar ik programmeer in C.

  2.   bedreiging zei

    Goede tutor, ik zou het graag willen weten en ik weet dat dit niet het geval is, maar in werkelijkheid heb ik mezelf genoeg koppen gegeven om deze aanpak te kunnen uitvoeren, ik moet de achtergrond en het inlogscherm aanpassen met een institutioneel beeld van waar ik werk in de teams van de gebruikers hebben ze een Venezolaanse distro genaamd Canaima, gebaseerd op Debian 7 Wheezy, gebruikers authenticeren via LDAP en meerdere gebruikers kunnen op dezelfde pc werken, dus het kan zijn dat er meerdere sessies zijn waarin ze moeten Als eigenaar van het behang worden de teams aangepast door het script om het werk van de technici te vergemakkelijken en vervolgens wordt het beleid geïnjecteerd door de puppetmaster-server.

    Ik heb het geprobeerd met gsettings maar het werkt alleen met de gebruiker die inlogt, blijkbaar slaat het de informatie op in een lokale database per gebruiker die ik nog niet heb bereikt, ik ben op zoek naar een configuratie die van toepassing is op het hele systeem en niet op een enkele gebruiker.

    Het is vermeldenswaard dat de afbeelding voortdurend verandert vanwege nationale datums en om een ​​andere reden, dus het is niet alleen een afbeelding, ze worden door de poppenspeler naar elke klant geüpload.

    Ik heb geen idee of zoiets op mijn geval kan worden toegepast.
    Groeten.