Vala + GTK + 3 și Granit (salvați valorile în dconf)

Programând în Vala și GTK+, cu toții ne vom fi întrebat la un moment dat: cum să facem ca o aplicație scrisă în Vala și GTK+ să poată salva stările parametrilor dimensiunii ferestrei și așa mai departe? Sunt unul dintre aceste cazuri tipice pe care le folosim gscheme pentru a salva aceste valori (această aplicație binecunoscută dconf-editor) care gestionează grafic aceste scheme.

Acum vă arăt cum să faceți acest lucru în pași simpli și fără complicații folosind clasa Granite.Services.Settings din biblioteca Granite.

De ce avem nevoie?

În primul rând, trebuie să avem bibliotecile GTK+, Granite și Vala instalate pentru a putea compila codul nostru. Pentru a face acest lucru în Ubuntu/ElementaryOS, folosim comanda:

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

Și vom avea nevoie, de asemenea, de orice editor de text care acceptă Vala/GTK+ și sintaxa XML, cum ar fi Scratch Text Editor (ElementaryOS implicit), GEdit, Sublime Text + Plugins etc.

Codul

Mai jos sunt fișierele Exemple. Pentru o mai bună înțelegere las codul în PASTE cu comentarii în ele:

principal.vala
tutorial.vala
setari.vala
org.tutorial.gschema.xml

Explicații

Fișierul Schema, dacă sau dacă, trebuie să fie XML și să se numească ORG.APPLICATION.GSCHEMA.XML. Adică, atât ORG, cât și GSCHEMA.XML trebuie să fie acolo pentru ca dconf să-l recunoască ca schemă. În plus, aceste diagrame trebuie copiate pe traseu:

/usr/share/glib-2.0/schemas/

și trebuie să fie compilate pentru ca DCONF să le preia, pentru a face acest lucru executăm comanda:

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

Compilare

Pentru a compila programul nostru trebuie să rulăm următoarea comandă într-un terminal:

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

Și rulați binarul cu comanda:

./main

Concluzii

Este una dintre cele mai bune metode de a salva starea aplicației noastre în GSCHEMA folosind GLIB. Orice tip de intrebare la care voi raspunde cu placere.

Aici vă las o captură de ecran cu Ubuntu-ul meu și exemplul:

snap-TUtorial


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Raul P. el a spus

    Bun articol, unele tutoriale GTK în C++ nu strica. Lucrurile s-au schimbat foarte mult, site-ul oficial GTK recomandă cărți din 2002, am făcut greșeala să o cumpăr.

    DevHelp ajută mai mult decât orice carte.

    1.    Raul P. el a spus

      Îmi pare rău, mă refeream la C, nu la C++. Când deschid blocuri de cod, aleg întotdeauna „Un proiect în C++”, dar programez în C.

  2.   ameninţare el a spus

    Bun tutorial, as vrea sa stiu si stiu ca nu este relevant, dar in realitate am avut o multime de lovituri in cap pentru a putea realiza acest demers, trebuie sa personalizez fundalul si ecranul de autentificare cu o imagine institutionala. de unde lucrez în echipele utilizatorilor, au o distribuție venezueleană numită Canaima, bazată pe Debian 7 Wheezy, utilizatorii se autentifică prin LDAP și mai mulți utilizatori pot lucra pe același PC, așa că poate fi cazul să fie mai multe sesiuni în care trebuie să deții tapetul, computerele sunt personalizate prin script pentru a facilita munca tehnicienilor și apoi politicile sunt injectate de serverul puppetmaster.

    Am încercat cu gsettings dar funcționează doar cu utilizatorul care se loghează, se pare că salvează informațiile într-o bază de date locală pe utilizator ceea ce nu am realizat încă, caut o configurație care să se aplice la întregul sistem și nu la un singur utilizator.

    De menționat este faptul că imaginea se schimbă constant din cauza datelor naționale și a oricărui alt motiv, deci nu este doar o imagine, acestea sunt încărcate de păpușarul fiecărui client.

    Nu am idee dacă ceva de genul acesta poate fi aplicat în cazul meu.
    Salutări.