Vala + GTK + 3 e Granite (salva i valori in dconf)

Programmando in Vala e GTK +, ci siamo mai chiesti tutti come fare un'applicazione scritta in Vala e GTK + in grado di salvare gli stati dei parametri di dimensione della finestra e altri? Sono di questi casi tipici che usiamo gschemi per salvare questi valori (questa nota applicazione dconf-editor) che gestisce graficamente questi schemi.

Ora ti mostro come farlo in semplici passaggi e senza complicazioni utilizzando la classe Granite.Services.Settings dalla libreria Granite.

Di cosa abbiamo bisogno?

Per prima cosa dobbiamo avere le librerie GTK +, Granite e Vala installate per compilare il nostro codice. Per farlo in Ubuntu / ElementaryOS usiamo il comando:

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

E avremo anche bisogno di qualsiasi editor di testo che supporti la sintassi Vala / GTK + e XML come Scratch Text Editor (predefinito ElementaryOS), GEdit, Sublime Text + Plugins, ecc.

Il codice

Ecco i file di esempio. Per una migliore comprensione lascio il codice in PASTE con commenti al loro interno:

main.vala
tutorial.vala
impostazioni.vala
org.tutorial.gschema.xml

Spiegazioni

Il file Schema, se o se deve essere XML e deve essere denominato ORG.APLICACION.GSCHEMA.XML. Cioè, sia ORG che GSCHEMA.XML devono essere presenti affinché dconf lo riconosca come schema. Inoltre, questi diagrammi devono essere copiati nel percorso:

/usr/share/glib-2.0/schemas/

e devono essere compilati per DCONF per prenderli, per questo eseguiamo il comando:

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

Compilazione

Per compilare il nostro programma dobbiamo lanciare il seguente comando in un terminale:

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

Ed esegui il binario con il comando:

./main

Conclusioni

È uno dei metodi migliori per salvare lo stato della nostra APP in GSCHEMA utilizzando GLIB. Qualsiasi tipo di domanda sarò felice di rispondere.

Ecco uno screenshot del mio Ubuntu e l'esempio:

snap-tutorial


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Raul Pi suddetto

    Buon articolo, alcuni tutorial GTK in C ++ non sono male. Le cose sono cambiate molto, il sito ufficiale GTK consiglia i libri del 2002, ho fatto l'errore di comprarli.

    DevHelp aiuta più di qualsiasi libro.

    1.    Raul Pi suddetto

      Scusa, volevo dire C, non C ++. Quando apro i blocchi di codice, scelgo sempre "Un progetto in C ++", ma programma in C.

  2.   minaccia suddetto

    Bravo tutor, vorrei sapere e so che non è così, ma in verità mi sono dato abbastanza colpi di testa per poter portare avanti questo approccio, ho bisogno di personalizzare lo sfondo e la schermata di login con un istituzionale immagine di dove lavoro nei team degli utenti, hanno una distribuzione venezuelana chiamata Canaima, basata su Debian 7 Wheezy, gli utenti si autenticano tramite LDAP e diversi utenti possono lavorare sullo stesso PC, quindi può essere il caso che ce ne siano diversi sessioni in cui devono possedere lo sfondo, le squadre vengono personalizzate dallo script per facilitare il lavoro dei tecnici e quindi le politiche vengono iniettate dal server del burattinaio.

    Ho provato con gsettings ma funziona solo con l'utente che sta effettuando l'accesso, a quanto pare salva le informazioni in un database locale per utente che non ho ancora raggiunto, sto cercando una configurazione che si applichi all'intero sistema e non a un singolo utente.

    Vale la pena ricordare che l'immagine cambia costantemente a causa delle date nazionali e di qualsiasi altro motivo, quindi non è solo un'immagine, vengono caricate dal burattinaio su ogni cliente.

    Non ho idea se qualcosa di simile possa essere applicato al mio caso.
    Saluti.