Vala + GTK + 3 at Granite (i-save ang mga halaga sa dconf)

Programming sa Vala at GTK +, naisip nating lahat kung paano gumawa ng isang application na nakasulat sa Vala at GTK + upang mai-save ang mga estado ng mga parameter ng laki ng window at iba pa? Kasama sila sa mga karaniwang kaso na ginagamit namin gschemas upang mai-save ang mga halagang ito (ang kilalang application na ito dconf-editor) na graphic na namamahala sa mga scheme na ito.

Ipinapakita ko sa iyo kung paano ito gawin sa mga simpleng hakbang at walang mga komplikasyon gamit ang Granite.Services.Settings class mula sa Granite library.

Ano ang kailangan natin?

Una kailangan naming magkaroon ng mga aklatan ng GTK +, Granite at Vala upang mai-compile ang aming code. Upang gawin ito sa Ubuntu / ElementaryOS ginagamit namin ang utos:

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

At kakailanganin din namin ang anumang text editor na sumusuporta sa Vala / GTK + syntax at XML tulad ng Scratch Text Editor (ElementaryOS default), GEdit, Sublime Text + Plugins, atbp.

Ang code

Narito ang Mga halimbawang mga file. Para sa mas mahusay na pag-unawa iniiwan ko ang code sa PASTE na may mga komento sa kanila:

pangunahing.vala
tutorial.vala
setting.vala
org.tutorial.gschema.xml

Paliwanag

Ang file ng Schema, kung o kung dapat itong XML at tawaging ORG.APLICACION.GSCHEMA.XML. Iyon ay, kapwa ang ORG at GSCHEMA.XML ay dapat naroroon para makilala ito ng dconf bilang isang iskema. Bilang karagdagan, ang mga diagram na ito ay dapat kopyahin sa ruta:

/usr/share/glib-2.0/schemas/

at kailangan silang maiipon para sa DCONF na kunin sila, para dito isinasagawa namin ang utos:

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

Pag-iipon

Upang maipon ang aming programa kailangan naming ilunsad ang sumusunod na utos sa isang terminal:

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

At patakbuhin ang binary na may utos:

./main

Konklusyon

Ito ay isa sa mga pinakamahusay na pamamaraan upang mai-save ang estado ng aming APP sa GSCHEMA gamit ang GLIB. Anumang uri ng katanungan ay malugod kong sasagutin.

Narito ang isang screenshot ng aking Ubuntu at ang Halimbawa:

snap-TUtorial


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Raul P. dijo

    Magandang artikulo, ang ilang mga tutorial sa GTK sa C ++ ay hindi masama. Malaki ang pagbabago ng mga bagay, inirekomenda ng opisyal na site ng GTK ang mga libro mula noong 2002, nagkamali akong bilhin ito.

    Ang DevHelp ay tumutulong sa higit sa anumang libro.

    1.    Raul P. dijo

      Pasensya na ang ibig kong sabihin ay C, hindi C ++. Kapag binubuksan ko ang mga codeblocks, palagi kong pinipili ang "Isang proyekto sa C ++", ngunit program ko sa C.

  2.   magsapanganib dijo

    Mahusay na tagapagturo, nais kong malaman at alam kong hindi ito ang kaso, ngunit sa totoo lang binigyan ko ang aking sarili ng sapat na mga suntok ng ulo upang maisagawa ang pamamaraang ito, kailangan kong ipasadya ang background at ang login screen na may isang institusyonal. imahe ng kung saan ako nagtatrabaho sa mga koponan ng mga gumagamit, mayroon silang isang Venezuelan distro na tinatawag na Canaima, batay sa Debian 7 Wheezy, ang mga gumagamit ay nagpapatunay sa pamamagitan ng LDAP at maraming mga gumagamit ang maaaring gumana sa parehong PC, kaya maaaring ito ang kaso na maraming mga sesyon kung saan dapat silang pagmamay-ari ng wallpaper, ang mga koponan ay na-customize ng script upang mapadali ang gawain ng mga technician at pagkatapos ang mga patakaran ay na-injected ng puppetmaster server.

    Sinubukan ko sa mga gsettings ngunit gumagana lamang ito sa gumagamit na nag-log in, tila nai-save nito ang impormasyon sa isang lokal na database bawat gumagamit na hindi ko pa nakakamit, naghahanap ako ng ilang pagsasaayos na nalalapat sa buong system at hindi isang solong gumagamit.

    Ito ay nagkakahalaga ng pagbanggit na ang imahe ay patuloy na nagbabago dahil sa pambansang mga petsa at anumang iba pang mga kadahilanan, kaya't ito ay hindi lamang isang imahe, nai-upload sila ng puppetmaster sa bawat client.

    Wala akong ideya kung ang isang bagay tulad nito ay maaaring mailapat sa aking kaso.
    Pagbati.