“Ho acquistato un Raspberry PI: come faccio a creare e sviluppare una GUI GTK+ accattivante in linguaggio C per le mie applicazioni?”
Il link
- Titolo : Foundations of GTK+ development
- Autore : Andrew Krause
- Editore : APress
- Prezzo : 28.75 € (kindle) – 46.79 € (paperback)
Dedicato ai programmatori in C e C++
La creazione di una interfaccia grafica rappresenta spesso una croce per i neo-programmatori sotto Linux. Abituati male dalla Microsoft, con l’ambiente VisualStudio supercompleto, devono abbandonare le proprie certezze e cercare un nuovo sistema di sviluppo. Fortunatamente l’ambiente Qt è in grado di fornire un framework multipiattaforma che consenta di produrre interfacce valide e funzionali. Purtroppo però Qt non è gratuito per chi sviluppa in modo professionale, e l’acquisizione di licenze che consentano una redistribuzione di codice chiuso e la modifica dei sorgenti originali diviene una sezione pesante nella determinazione del costo finale del prodotto.
Fortunatamente, gli sviluppatori di Linux che hanno creato il prodotto di elaborazione grafica GIMP (GNU Image Manipulation Program) lo hanno anche dotato di un toolkit di sviluppo (chiamato GTK, GIMP Toolkit) in grado di replicare in tutto e per tutto l’ambiente di sviluppo tipico dei RAD (Rapid Application Development).
L’autore: Andrew Krause
Andrew Krause è il creatore di OpenLDev, un ambiente di sviluppo integrato che si concentra sulla gestione dei progetti C, C ++, GTK + e Gtkmm. Frequenta la Pennsylvania State University con una specializzazione in ingegneria informatica. Andrew ha otto anni di esperienza con molti linguaggi di programmazione per computer e web come C, C ++, Perl, PHP e altri. Progetta anche hardware di volo per il progetto Low Ionosphere Measurement Satellite a Penn State.
Il formato
Il libro è un vero e proprio manuale di riferimento. Nelle sue 630 pagine trovano posto 13 capitoli e 6 appendici tese a descrivere l’ambiente di sviluppo. Trattandosi di una guida, la trattazione è particolarmente curata ed approfondita, e definsice tutte le sfumature dell’infrastruttura sia a livello di interfaccia di chiamata (funzioni e metodi) che a livello di codice (C e C++). Ovviamente ciascun capitolo è dedicato all’approfondimento di un determinato widget. Si va dai campi di edit agli spin button, dalle drop-down lists ai timer, approfondendo temi come il multi-threading e la programmazione ad eventi.
Il libro è un po’ datato, ed è fermo alla versione 2 di GTK+ (ora siamo alla versione 3), ma le interfacce di chiamata e la filosofia progettuale restano comunque compatibili al 99%
A chi è diretto
Il volume non è sicuramente un testo da leggere la sera prima di addormentarsi (a meno che si soffra d’insonnia): occorre seguire passo passo le istruzioni, riscrivere gli esempi, modificare i parametri e cercarae di capire come e perché il sistema funzioni. Una base di conoscenza di C e di OOP è richiesta. Chi desidera disegnare interfacce in modo più rapido e veloce (ma decisamente meno efficiente) è avvertito, ed invitato a lavorare in Python.
Possiamo tuttavia aggiungere che la progettazione di interfacce grafiche con GTK+ anche sotto Raspberry PI è stata di molto semplificata grazie al Glade interface designer.
Glade è uno strumento RAD che consente lo sviluppo rapido e semplice di interfacce utente per il toolkit GTK e l’ambiente desktop GNOME. Le interfacce utente progettate in Glade vengono salvate come XML e, utilizzando l’oggetto GTK di GtkBuilder, possono essere caricate dinamicamente dalle applicazioni secondo necessità. Utilizzando GtkBuilder, i file XML di Glade possono essere utilizzati in numerosi linguaggi di programmazione tra cui C, C ++, C #, Vala, Java, Perl, Python e altri. Glade è un software libero rilasciato sotto licenza GNU GPL e consente la creazione di interfacce GTK+ Raspberry PI.
L’accoppiata tra “Foundation of GTK+ Development” e il tool di progettazione Glade rende molto meno ripida la curva di apprendimento dell’infrastruttura, specie per chi programma su Raspberry PI, allargandone quindi la fruibilità ad un bacino di utenza decisamente più ampio.