2 de mayo de 2015

Vala + GTK+3 y Granite (guardar valores en dconf)

Programando en Vala y GTK+, todo nos habremos preguntado alguna vez ¿como hacer que una aplicación escrita en Vala y GTK+ pueda guardar los estados de los parámetros del tamaño de la ventana y demás?. Son de estos tipicos casos que usamos gschemas para guardar dichos valores (esta aplicación tan conocida dconf-editor) que gestiona gráficamente estos esquemas.

Ahora les muestro como hacer esto en sencillos pasos y sin complicaciones usando la clase  Granite.Services.Settings de la librería Granite.

¿Que necesitamos?

Primeramente necesitamos tener instalado las librerías de GTK+, Granite y Vala para poder compilar nuestro código. Para ello en Ubuntu/ElementaryOS usamos el comando:

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

Y también necesitaremos cualquier editor de texto que soporte sintaxis Vala/GTK+ y XML como Scratch Text Editor (default de ElementaryOS), GEdit, Sublime Text + Plugins, etc.

El Código

A continuación los archivos del Ejemplo. Para mejor comprensión dejo el código en PASTE con comentarios en ellos:

main.vala

tutorial.vala

settings.vala

org.tutorial.gschema.xml

Explicaciones

El archivo del Schema, si o si debe ser XML y llamarse ORG.APLICACION.GSCHEMA.XML. Es decir, tanto el ORG como GSCHEMA.XML deben estar para que dconf la reconozca como esquema. Además estos esquemas deben ir copiados a la ruta:

/usr/share/glib-2.0/schemas/

y necesitan ser compilado para que DCONF las tome, para ello ejecutamos el comando:

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

Compilando

Para compilar nuestro programa tenemos que lanzar el siguiente comando en una terminal:

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

Y ejecutar el binario con el comando:

./main

Conclusiones

Es uno de los mejores métodos para guardar el estado de nuestra APP en GSCHEMA usando GLIB. Cualquier tipo de pregunta estaré contento de responderla.

Acá les dejo una captura de mi Ubuntu y el Ejemplo:

snap-TUtorial


Fuente: Desde Linux

0 comentarios: