===== 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.