Vala + GTK + 3 et Granite (enregistrer les valeurs dans dconf)

Programmation en Vala et GTK +, nous nous sommes tous déjà demandé comment faire pour qu'une application écrite en Vala et GTK + puisse enregistrer les états des paramètres de taille de fenêtre et autres? Ce sont des cas typiques que nous utilisons gschémas pour enregistrer ces valeurs (cette application bien connue dconf-editor) qui gère graphiquement ces schémas.

Maintenant, je vous montre comment faire cela en étapes simples et sans complications en utilisant la classe Granite.Services.Settings de la bibliothèque Granite.

Qu'avons nous besoin?

Nous devons d'abord installer les bibliothèques GTK +, Granite et Vala pour compiler notre code. Pour ce faire dans Ubuntu / ElementaryOS, nous utilisons la commande:

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

Et nous aurons également besoin de tout éditeur de texte prenant en charge la syntaxe Vala / GTK + et XML comme Scratch Text Editor (ElementaryOS par défaut), GEdit, Sublime Text + Plugins, etc.

Le code

Voici les fichiers d'exemple. Pour une meilleure compréhension, je laisse le code dans PASTE avec des commentaires en eux:

main.vala
tutoriel.vala
paramètres.vala
org.tutorial.gschema.xml

Explications

Le fichier de schéma, si ou s'il doit être XML et s'appeler ORG.APLICACION.GSCHEMA.XML. Autrement dit, l'ORG et le GSCHEMA.XML doivent être là pour que dconf le reconnaisse comme un schéma. De plus, ces diagrammes doivent être copiés sur l'itinéraire:

/usr/share/glib-2.0/schemas/

et ils doivent être compilés pour que DCONF les prenne, pour cela, nous exécutons la commande:

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

Compiler

Pour compiler notre programme, nous devons lancer la commande suivante dans un terminal:

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

Et exécutez le binaire avec la commande:

./main

Conclusions

C'est l'une des meilleures méthodes pour enregistrer l'état de notre application dans GSCHEMA à l'aide de GLIB. Je serai ravi de répondre à toute sorte de question.

Voici une capture d'écran de mon Ubuntu et l'exemple:

snap-TUtorial


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Raul P. dit

    Bon article, quelques tutoriels GTK en C ++ sont bons. Les choses ont beaucoup changé, le site officiel de GTK recommande des livres de 2002, j'ai fait l'erreur de l'acheter.

    DevHelp aide plus que n'importe quel livre.

    1.    Raul P. dit

      Désolé, je voulais dire C, pas C ++. Lorsque j'ouvre les blocs de code, je choisis toujours "Un projet en C ++", mais je programme en C.

  2.   menace dit

    Bon tuto, j'aimerais savoir et je sais que ce n'est pas le cas, mais en vérité je me suis donné assez de coups de tête pour pouvoir mener à bien cette démarche, j'ai besoin de customiser le fond et l'écran de connexion avec une image institutionnelle de l'endroit où je travaille dans les équipes du utilisateurs, ils ont une distribution vénézuélienne appelée Canaima, basée sur Debian 7 Wheezy, les utilisateurs s'authentifient via LDAP et plusieurs utilisateurs peuvent travailler sur le même PC, il se peut donc qu'il y ait plusieurs sessions dans lesquelles ils doivent possédant le fond d'écran, les équipes sont personnalisées par le script pour faciliter le travail des techniciens puis les politiques sont injectées par le serveur puppetmaster.

    J'ai essayé avec gsettings mais cela ne fonctionne qu'avec l'utilisateur qui se connecte, apparemment il enregistre les informations dans une base de données locale par utilisateur que je n'ai pas encore réalisée, je recherche une configuration qui s'applique à l'ensemble du système et non à un seul utilisateur.

    Il est à noter que l'image change constamment en raison des dates nationales et pour toute autre raison, il ne s'agit donc pas simplement d'une image, elles sont téléchargées par le marionnettiste vers chaque client.

    Je n'ai aucune idée si quelque chose comme ça peut être appliqué à mon cas.
    Salutations.