Cosa sono Gnome e Gtk+ e in che rapporto si pongono
Spesso vi è una gran confusione tra Gnome e Gtk+ e non appare a molti chiaro il rapporto in cui si pongono l'uno rispetto all'altro.
In questo breve articolo tratto essenzialmente dal noto libro di Havoc Pennington "Gtk+/Gnome Application Development" cercheremo di chiarire un po' i concetti di base sperando di sciogliere almeno qualche dubbio sull'argomento.
Cos'è
GNOME?
Gnome è un progetto di sviluppo di software libero iniziato nel 1997 da Miguel de Icaza dell'Università Nazionale Autonoma del Messico e cresciuto in breve tempo grazie all'apporto di un gruppo di programmatori sparsi in tutto il mondo.
Gnome è l'acronimo per Gnu Network Object Model Environment. Originariamente il progetto era finalizzato alla creazione di una struttura per oggetti molto simile alle tecnologie OLE e COM della Microsoft. Lo scopo del progetto si è rapidamente ampliato e include ad oggi un ORB veloce leggero e compatibile con CORBA 2.2 chiamato ORBit ed un'architettura di embedding per oggetti chiamata Bonobo.
Per non fare confusione sui concetti è molto importante tenere presente che Gnome consta di due aspetti fondamentali:
1) Dal punto di vista utente è un ambiente di lavoro integrato ed una suite di applicazioni. L'ambiente include un file manager, un pannello per la gestione e avvio delle applicazioni e
applet, un centro di controllo per la configurazione e altri programmi di utilità. Tutte queste applicazioni nascondono la riga di comando UNIX dietro ad un'interfaccia grafica facile da utilizzare.
2) Dal punto di vista dello sviluppatore è invece una potente struttura per lo sviluppo di applicazioni composta da un insieme di utili librerie.
Bisogna al proposito chiarire subito un dubbio di fondo:
Tutte le applicazioni scritte con le librerie di Gnome funzionano anche sotto gli altri ambienti (es. KDE) e non sono quindi legate necessariamente all'uso dell'ambiente Gnome.
Gnome rende possibile scrivere applicazioni coerenti, facili da usare e con alta interattività con lo scopo di creare un look-and-feel logico ed uniforme. Gli originari sviluppatori del sistema X Window fecero infatti la deliberata scelta di non imporre nessuna politica sulla interfaccia utente e Gnome offre la possibilità di seguire uno standard in via di sviluppo capace di offrire una infrastruttura coerente funzionale e pronta all'integrazione.
La struttura di Gnome per lo sviluppo di applicazioni si concretizza in una suite di librerie scritte in ANSI C.
Le librerie che coinvolgono l'uso della grafica si appoggiano direttamente al sistema X Window. Come abbiamo già visto nella sezione dedicata agli strumenti per iniziare esistono inoltre dei wrapper sulle API di Gnome per pressocché tutti i linguaggi esistenti.
Gnome non è stato scritto completamente da zero ma utilizza molte librerie che si sono sviluppate indipendentemente dal progetto
Gnome. Queste librerie fanno parte della struttura di sviluppo di Gnome e sono automaticamente presenti nell'ambiente Gnome in quanto incluse nel pacchetto gnome-libs che comprenderà quindi librerie appositamente sviluppate per Gnome e librerie
non-Gnome:
1) Librerie Gnome:
- libgnome: E' una collezione di istruzioni non legate all'interfaccia grafica che vengono utilizzate per le applicazioni Gnome quali ad es. quelle per gestire i file di configurazione, quelle di internazionalizzazione (attraverso gettext), o l'audio (attraverso esound). E' una collezione di istruzioni non legate all'interfaccia grafica che vengono utilizzate per le applicazioni Gnome quali ad es. quelle per gestire i file di configurazione, quelle di internazionalizzazione (attraverso
gettext), o l'audio (attraverso esound).
- libgnomeui: Comprende una serie di widget disegnati per migliorare ed estendere il Gtk+ (quali ad es.
GnomeApp, GnomeCanvas, GnomeDialog e GnomePixmap).
- libgnorba: Fornisce funzionalità legate all'uso di CORBA, incluso un meccanismo di sicurezza e l'attivazione degli oggetti.
- libzvt: Fornisce un widget per terminale
(ZvtTerm) che si può utilizzare nelle applicazioni Gnome.
- libart_lgpl: Contiene istruzioni di rendering grafico. In poche parole è una libreria di rasterizzazione della grafica vettoriale.
2) Librerie non-Gnome:
- glib: E' la base dell'infrastruttura Gnome. E' una libreria C di utilità che fornisce funzioni per creare e manipolare strutture di dati comuni. E' la base dell'infrastruttura
Gnome. E' una libreria C di utilità che fornisce funzioni per creare e manipolare strutture di dati comuni.
- Gtk+: E il toolkit per creare interfacce grafiche utente utilizzato nelle applicazioni di
Gnome.
- ORBit: E' un ORB CORBA scritto in C. Un ORB è come un linker dinamico ma funziona con gli oggetti anzichè con funzioni. A runtime un programma può richiedere servizi di un particolare oggetto;
l'ORB lo localizza e crea una connessione fra questo ed il programma.
- Imlib: E' la libreria che fornisce istruzioni per caricare e manipolare immagini di una vasta varietà di formati (inclusi
jpeg, png, giff e tiff).
3) Altre librerie (non comprese per ora in
gnome-libs).
- Gnome-print: Fornisce delle periferiche di stampa virtuali in modo che con le stesse istruzioni si possa stampare in un widget di anteprima, su PostSript e in altri formati di stampa. Fornisce delle periferiche di stampa virtuali in modo che con le stesse istruzioni si possa stampare in un widget di anteprima, su PostSript e in altri formati di stampa.
- Gnome-xml: E' un motore XML il cui uso si rivela molto utile per tutte le applicazioni che hanno bisogno di caricare e salvare dati
struturati.
- Guile: E' una implementazione del linguaggio di programmazione Scheme in una libreria, in modo che qualunque applicazione può avere al suo interno un interprete
Scheme.
- Bonobo: E' un'architettura che si ispira direttamente a OLE della Microsoft. Permette ad es. di inserire grafici in un foglio di calcolo.In futuro grazie a Bonobo qualunque applicazione Gnome potrà visualizzare dati
MIME, HTML o immagini, semplicemente chiedendo alle librerie di Gnome il componente Bonobo necessario.
Cos'è
GTK+?
Gtk+ è un toolkit per creare interfacce grafiche utente. Gtk+ è originariamente nato per GIMP (GNU Image Manipulation Program), ma è in seguito diventato una libreria per utilizzo generale. Anche Gtk+ è, come
Gnome, dipendente dalla libreria Glib ed include il GDK (Gimp Drawing Kit) che è un'astrazione delle librerie a basso livello del sistema X Window.
Dato che GTK+ utilizza GDK piuttosto che chiamare direttamente le primitive di X Window, un port di GDK permette di utilizzare GTK+ su altri sistemi con relativamente poche modifiche.
Gtk+ e Gimp sono già stati portati in questo modo sulla piattaforma Win32.
Il Gtk+ mette quindi a disposizione del programmatore una serie di elementi grafici
(widget), quali ad es. finestre, menu, bottoni etc.. per disegnare l'interfaccia grafica dell'applicazione che verrà poi gestita a mezzo di "segnali".
I widget infatti emettono dei segnali quando accade qualcosa (ad es. l'utente preme un bottone o chiude una finestra), ai quali l'applicazione può rispondere associandovi una funzione di callback.