===== Mateconf =====
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//27/05/2012//** \\ \\
L'ambiente desktop [[http://mate-desktop.org/|Mate]] salva tutte le configurazioni in un database centralizzato chiamato **Mateconf** . E' una base dati con una struttura ad albero e puo' essere facilmente modificata con un' utility chiamata **mateconf-editor** . Ecco uno screenshot:
Vedremo in questa guida come interagire con mateconf scrivendo le nostre applicazioni.
===== Risorse =====
Consiglio di tenere in considerazione (per completezza) anche anche il testo: **"The official GNOME 2 developer's guide" di Matthias Warkus** (considerando che le strutture e funzioni di mate hanno nomi diversi) e la documentazione dei sorgenti (scaricata da git) del desktop mate. Quando si scarica il sorgente di Mate Desktop ogni cartella contiene una sottocartella ''doc/'' con esempi e documentazione.
===== Il codice =====
Il codice che segue serve a leggere il valore (in questo caso booleano) della chiave ''/desktop/mate/interface/can_change_accels '' .
**main.c**
#include
#include
#include
int main(int argc, char **argv)
{
MateProgram *program;
MateConfClient *client;
gchar *path;
GError **error;
/*Inizializziamo l'applicazione Mate, tutte le applicazioni Mate dovrebbero essere inizializzate*/
program = mate_program_init ("mytest", "0.0", LIBMATEUI_MODULE, argc, argv, NULL);
/* Creo il MateConf client object */
client = mateconf_client_get_default();
mateconf_client_set_error_handling(client, MATECONF_CLIENT_HANDLE_UNRETURNED);
/* Comunico a mateconf che voglio attenzionare questa directory */
path = mate_mateconf_get_app_settings_relative(program, "/desktop/mate/interface");
mateconf_client_add_dir(client, path, MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL);
/*Leggo il mio valore (in questo caso un booleano)*/
gboolean my_can_change_accels;
my_can_change_accels = mateconf_client_get_bool(client, "/desktop/mate/interface/can_change_accels", NULL);
//In base a cio' che ho letto stampo un messaggio piuttosto che un'altro
if (my_can_change_accels == TRUE) printf("Si, puoi ridefinire le scorciatoie da tastiera \n");
if (my_can_change_accels == FALSE) printf("NON puoi ridefinire le scorciatoie da tastiera \n");
/* remove path */
mateconf_client_remove_dir(client, path, NULL);
g_free(path);
/* destroy client object */
g_object_unref(client);
}
===== Il Makefile =====
**makefile**
CPP = gcc
OPTS = `pkg-config --cflags --libs libmate-2.0 mateconf-2.0 libmateui-2.0 libmatecomponent-2.0`
all:
$(CPP) main.c -o main $(OPTS)
clean:
rm main
==== Dipendenze necessarie per compilare questi esempi ====
Ecco i pochi passi necessari per installare le dipendenze.
0) Installare in forma binaria il mate-desktop (http://mate-desktop.org/install/)
1) Installare i pacchetti di sviluppo (-dev) in base ai progetti da realizzare
per esempio se voglio compilare gli esempi contenuti nella cartella "mate-conf"
basta guardare le prime righe di codice:
#include
#include
#include
per renderci conto che dobbiamo installare i pacchetti (-dev) di
libmate-2.0, mateconf-2.0, libmateui-2.0, libmatecomponent-2.0
2) Come verificare quali pacchetti mate di sviluppo abbiamo installati?
Il metodo piu' semplice e immediato è lanciare pkg-config in questo modo:
pkg-config --list-all |grep mate
Potremmo così avere un'idea precisa dei pacchetti di cui siamo a disposizione.