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:
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:
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.
Î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.
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.