Un'applicazione Gnome completa consiste in ben oltre il semplice codice sorgente. Deve essere disponibile un aiuto in linea, deve essere elencata nel menu del pannello di Gnome, deve essere tradotta, e deve avere una icona per il desktop. Possono ovviamente essere incluse anche delle immagini: un logo per la finestra di informazioni oppure delle piccole icone per aiutare l'utente a distinguere rapidamente le voci dei menu. Questa sezione mostra come distribuire alcuni di questi file.
La documentazione e le immagini vengono installate praticamente allo stesso modo. automake vi permette di installare i file di dati in posizioni arbitrarie, ed è possibile utilizzare le variabili definite in configure per decidere dove posizionare i file.
Per installare file di dati attraverso il file Makefile.am è sufficiente fornite il target dell'installazione (pixmaps suona bene, voi che dite?), quindi creare una variabile per la directory e una corrispondente per i file da installare. Ad esempio:
EXTRA_DIST = gnome-hello-logo.png pixmapdir = $(datadir)/pixmaps pixmap_DATA = gnome-hello-logo.png |
La stringa "pixmap" collega la variabile pixmapdir con la variabile pixmap_DATA. automake interpreta il suffisso _DATA e genera una regola appropriata in Makefile.in. Questa sezione di Makefile.am installa i file gnome-hello-logo.png all'interno della directory $(datadir)/pixmaps. $(datadir) è una variabile generata da configure. Tipicamente $(datadir) corrisponde a /usr/local/share (più precisamente a $(prefix)/share, che è la locazione standard per i file di dati indipendenti dalla piattaforma (cioè che possono essere condivisi fra vari sistemi con formati binari differenti).
la sezione EXTRA_DIST descrive la variabile EXTRA_DIST.
La locazione standard per le immagini di Gnome è $(datadir)/pixmaps, per questo è stata utilizzata nel nostro esempio. Il Progetto Gnome incoraggia all'uso del formato PNG per tutte le immagini: questo formato è supportato da gdk_imlib, la libreria di Gnome per il caricamento delle immagini. È inoltre compresso, veloce e libero da vincoli di brevetto.
Per l'installzione della documentazione vengono applicati gli stessi principi, ma con una piccola complicazione. La documentazione di Gnome è solitamente scritta in DocBook. DocBook è un DTD ("Document Type Definition") SGML così come HTML. DocBook però è stato progettato per la documentazione tecnica (questo libro è stato scritto utilizzando DocBook). La documentazione scritta con DocBook può essere convertita in svariati formati, tra cui PostScript e HTML. All'interno di Gnome viene installata la documentazione nel formato HTML, in modo che gli utenti possano leggerla con il proprio browser Web oppure con il Gnome Help Browser.
Le librerie di Gnome e l'help browser interpretano un file chiamato topic.data, che consiste in una semplice lista di indici con gli URL corrispondenti. Questo viene utilizzato per indicizzare la guida della vostra applicazione. Ecco un esempio, con due soli indici:
gnome-hello.html Manuale di GnomeHello advanced.html Argomenti avanzati |
Gli URL sono relativi alla directory in cui sono installati i file di documentazione.
Dovete considere che la vostra documentazione verrà tradotta in altre lingue. Dovreste quindi creare delle sotto-directory per ciascuna lingua di traduzione. Ad esempio, il locale di default C oppure quello in Spagnolo, es. In questo modo non si crea confusione fra le varie traduzioni. Ecco un altro esempio tratto da GnomeHello:
doc/
Makefile.am
C/
Makefile.am
gnome-hello.sgml
topic.dat
es/
Makefile.am
gnome-hello.sgml
topic.dat |
Ecco invece il file doc/C/Makefile.am:
gnome_hello_helpdir = $(datadir)/gnome/help/gnome-hello/C
gnome_hello_help_DATA = \
gnome-hello.html \
topic.dat
SGML_FILES = \
gnome-hello.sgml
EXTRA_DIST = \
topic.dat \
$(SGML_FILES)
all:
gnome-hello.html: gnome-hello/gnome-hello.html
-cp gnome-hello/gnome-hello.html .
gnome-hello/gnome-hello.html: $(SGML_FILES)
-db2html gnome-hello.sgml
dist-hook:
mkdir $(distdir)/gnome-hello
-cp gnome-hello/*.html gnome-hello/*.css $(distdir)/gnome-hello
-cp gnome-hello.html $(distdir)
install-data-local: gnome-hello.html
$(mkinstalldirs) $(gnome_hello_helpdir)/images
-for file in $(srcdir)/gnome-hello/*.html $(srcdir)/gnome-hello/*.css; do \
basefile=`basename $$file`; \
$(INSTALL_DATA) $(srcdir)/$$file $(gnome_hello_helpdir)/$$basefile; \
done
gnome-hello.ps: gnome-hello.sgml
-db2ps $<
gnome-hello.rtf: gnome-hello.sgml
-db2rtf $<
|
In particolare notate la directory di installazione per i file HTML che vengono generati: $(datadir)/gnome/help/gnome-hello/C. Le librerie di Gnome cercheranno i file in questa directory. La documentazione di ciascuna applicazione risiede in una propria directory all'interno di $(datadir)/gnome/help. La documentazione tradotta viene installata in una sotto-directory ulteriore. Le altre istruzioni in Makefile.am avviano il convertitore DocBook-HTML, includono i file HTML nel pacchetto della distribuzione e creano i target per la creazione di documenti in formato PostScript oppure Rich Text Format (RTF). Gli utenti possono così generare il file PostScript digitando semplicemente make gnome-hello.ps.
Gli applicativi Gnome forniscono uno o più file ".desktop", che descrivono come l'applicazione viene mostrata nei menu del pannello di Gnome. Installare un file .desktop causa la visualizzazione dell'applicativo nel Menu Principale del pannello di Gnome. Ecco il file gnome-hello.desktop:
[Desktop Entry] Name=Gnome Hello Name[es]=Gnome Hola Name[fi]=GNOME-hei Name[gl]=Ola GNOME Name[no]=Gnome hallo Name[sv]=Gnome Hej Name[pl]=Halo GNOME Name[it]=Salve GNOME Comment=Hello World Comment[es]=Hola Mundo Comment[fi]=Hei, maailma Comment[gl]=Ola Mundo Comment[sv]=Hej Världen Comment[no]=Hallo verden Comment[pl]=Witaj ¶wiecie Comment[it]=Salve Mondo per Gnome Exec=gnome-hello Icon=gnome-hello-logo.png Terminal=0 Type=Application |
Il file consiste in coppie chiave-valore. La chiave Name specifica il nome della vostra applicazione nel locale di default C. Qualunque chiave può avere una traduzione, indicata dalle parentesi quadre, come ad esempio Name[it]. La chiave Comment contiente la stringa che verrà mostrata come suggerimento, che descrive l'applicazione in dettaglio. Exec è il comando da esguire per avviare il programma. Terminal è un valore booleano: se diverso da zero, il programma verrà eseguito all'interno di una finestra di emulazione di terminale. Type deve, in questo contesto, essere sempre uguale a "Application".
Installare un file .desktop è veramente semplice. Ecco il principale Makefile.am, ancora una volta da GnomeHello:
SUBDIRS = macros po intl src pixmaps doc
EXTRA_DIST = \
gnome-hello.desktop \
autogen.sh
Applicationsdir = $(datadir)/gnome/apps/Applications
Applications_DATA = gnome-hello.desktop |
Notate che è mostrato un percorso in $(datadir)/gnome/apps/ con sotto-directory che dispongono i programmi in categorie. GnomeHello si installa all'interno della categoria "Applications". Altri programmi possono installarsi sotto "Games", "Graphics", "Internet" oppure ciò che si ritiene più appropriato. Cercate di utilizzare una categoria preesistente, invece di aggiungerne una nuova.
La variabile EXTRA_DIST presente in Makefile.am elenca i file da includere all'interno del pacchetto .tar.gz. I file più importanti vengono inclusi automaticamente, come ad esempio tutti quelli elencati come sorgenti per generari i binari o le librerie. Ad ogni modo, automake non sa come comportarsi di fronte a file .desktop, oppure con la documentazione SGML. Quindi tutti questi file devono essere elencati in EXTRA_DIST. make distcheck, quando tenta di creare il pacchetto per la distribuzione, fallirà il suo compito se lasciate dei file fuori da EXTRA_DIST.