**** TRACCE LINUX     

di Ivan Fabris

..e da oggi si produce!

** 
Glade ( http://glade.pn.org/  , Glade-0.5.7-2.i386.rpm )
Glade è un ottimo tool visuale per sviluppare applicazioni basate sulle librerie gtk, ottimo per chi ha almeno una vaga idea di cosa sia il c e vuole scrivere qualche programma dotato di una interfaccia grafica gradevole. Ricordate il programma gtkSeti di F. Cavaliere che vi ho presentato due mesi fa ? E' stato scritto con Glade, e altri ne potete trovare sulla home page di questo editor.
All'avvio, Glade apre tre finestre: Project Manager, o Main Window, Palette con i vari widget, e  Proprietà. La prima serve a creare, salvare e caricare i progetti , ed a settarne le proprietà : per esempio potreste voler cambiare la directory di lavoro, il nome del progetto, o i nomi dei file su cui scrivere alcune funzioni particolari, inoltre si può scegliere il linguaggio di programmazione tra c, c++ e perl. La seconda finestra contiene tutti i widget supportati dalle librerie gtk: la finestra principale, finestre secondarie, barre di menù, barre di progresso, slider, pulsanti vari ed assortiti. Per chi ha necessità particolari c'è la palette Additional, con widget particolari come preview, ruler, calendario e tanti altri. Chiude la lista il set di oggetti tipico di GNOME, tra cui il selettore di URL, il less ,il calcolatore e l'orologio. Sull'ultima finestra, quella delle proprietà, trovate il necessario per modificare ogni aspetto del widget su cui state lavorando, che per una finestra può essere la grandezza, il colore di sfondo, il focus, mentre per un pulsante può essere il testo, il font , o l'evento ad esso associato. Le possibilità sono tantissime e troverete di che sbizzarrirvi.
La prima cosa da fare, una volta deciso i suddetti aspetti generali del progetto, è creare la finestra principale del programma, e poi ripartirla in tante parti quanti sono i widget che deve ospitare, usando i "box": questi dividono le finestre in parti, anche nidificate in strutture complesse, in righe, colonne e sotto-finestre. Una volta creato un box si seleziona un widget e ve lo si depone sopra, dopodiché se ne stabiliscono le proprietà specifiche per mezzo dell'apposita finestra. Alcuni widget richiedono particolari finestre per una calibrazione fine o per l'inserimento di dati particolari: è il caso ad esempio del "menù bar" che, come vedete in figura, richiede l'inserimento del nome dell'elemento, del tipo, dell'icona associata, dell'evento e di tanti altri parametri. Fate sempre attenzione a cliccare su "add" per aggiungere qualcosa o su "update" dopo aver fatto dei cambiamenti, perché non vengono registrati in automatico!
Oltre all'aspetto grafico dobbiamo impostarne anche l'uso, ossia i segnali che il widget intercetta e le reazioni che ne scaturiscono. Detto così sembra complicato, in realtà si tratta, per esempio, di collegare ad un pulsante la gestione dell'evento di click del mouse, e di associare a questo evento l'apertura di una una nuova finestra e di altre azioni collegate; la spiegazione della gestione dei segnali e degli eventi riguarda però la programmazione, non l'uso dell' editor, ed esula quindi dallo scopo di questa recensione. Posso dirvi che creare l'aspetto grafico ad un programma è estremamente semplice, tanto che sul cd trovate anche un piccolo esempio che ho costruito in meno di un minuto, e di cui potete vedere nella foto la struttura.
Una volta terminato il "quadro", cliccate sul pulsante "Build": Glade genererà il codice necessario alla visualizzazione di ciò che avete costruito. Quello che troverete nella directory radice del vostro progetto saranno i classici file a cui siete ormai abituati:  NEWS, README, AUTHOR tra i file di informazione, autogen.sh e makefile.am per generare i programmi di configurazione configure e makefile. Verranno posti assieme ai sorgenti anche eventuali pixmap o immagini o file a cui il vostro programma fa riferimento, la directory per le stringhe nella lingua locale e, ovviamente, il testo della licenza GPL... tutto il necessario insomma per generare un programma dall'aspetto professionale. 
Ovviamente, dopo aver lanciato autogen.sh, configure e make, otterrete l'eseguibile di un programma che non farà altro che disegnare a video pulsanti e finestre: sta a voi scrivere il codice necessario a renderli "vivi" impiegando i file sorgente prefabbricati dal Glade, ed aggiungendone altri secondo le vostre esigenze. Da ora in poi, una volta generata l'interfaccia, dovrete procedere a mano!

**Liberie gtk ( http://www.gtk.org  ,  gtk+-1.2.7.tar.gz  e glib-1.2.7.tar.gz )
Oltre ad avere l'ultima versione dell' editor, occorrono anche le ultime versioni delle librerie cui si appoggia! Ecco allora la release 1.2.7 delle librerie glib e gtk, pronte per essere compilate. Il compito è semplicissimo, basta scompattarle con tar zxvf glib-1.2.7.tar.gz, entrare nella directory creata, lanciare in sequenza ./configure , make e make install ( per il make install occorre mettersi il cappellino di root ). Magari un attimo prima di lanciare make install cancellate in pacchetti vecchi con rpm -e --nodeps glib e subito dopo l'installazione invece è necessario lanciare ldconfig per ricostruire il database delle librerie. Subito dopo potrete ripetere tutta la sequenza descritta finora con  gtk+ . Da qui in avanti ricordate che per il vostro database di rpm sia glib che gtk non esistono più e quindi il programma rpm si rifiuterà di installare programmi che richiedono queste librerie. Poco male, voi sapete di averle, l'ultima versione per giunta, e potrete forzare le installazioni con l'opzione --nodeps . Purtroppo nel momento in cui scrivo i pacchetti rpm non sono ancora disponibili, ma se li trovo prima che venga masterizzato il cd ve li inserirò, quindi controllatelo bene!

**Tutorial gtk
Si oggi siamo in tema di gtk, questa bella libreria completamente GPL ( non ho in odio le qt, anzi, la volta scorsa è toccato a loro no? Comunque preferisco gtk ). Cosa ve ne fate delle librerie e dell' editor, se non sapete come sfruttarli? Ecco che ci viene in soccorso un ampio tutorial, ricco di esempi e documentazione. I sorgenti gtk includono loro stessi molti esempi, ma nei pacchetti rpm preconfezionati vengono sempre esclusi. Eco quindi un altro vantaggio di tenere sempre d'occhio le home page dei curatori di ogni programma o libreria, e di procurarsi i sorgenti. Questo tutorial insegna ed illustra l' uso e la programmazione dei widget gtk, potrete studiarli e trarre spunto per integrare Glade, per sapere come aggiungere "vita" alle vostre interfacce grafiche. Non vi sto invitando a copiare pari pari il codice altrui, ma a studiarlo e a capire come funziona per poter lavorare per conto vostro. Le possibilità ci sono, e sono molte, basta avere un po' di tempo e di voglia per fare qualsiasi cosa, e voglio mettere una volta di più farvi pensare alle caratteristiche di costo, pesantezza ( in termini di megabyte ) ed anche, si, di funzionalità dei tool Linux ( vi aspettavate un paragone con win? Scordateveli, basta con crociate o polemiche, io vi presento ciò che mi piace e gli altri amici/colleghi redattori quello che piace a loro, a voi provare e scegliere quello che preferite! )

**KDevelop  ( http://www.kdevelop.org/  ,  kdevelop-1.1-1.i386.rpm )
Ecco anche qualcosa per KFE/QT. Kdevelop è un ambiente di sviluppo integrato fatto molto bene in cui, a differenza di Glade, è possibile mettere mano contemporaneamente al codice ed ai widget. Non possiede finestre drag&drop, tuttavia il codice dei widget è in linea quindi, dopo un tempo più o meno lungo di ambientamento, trovare nell' help il nome del widget che vi serve sarà quasi automatico. Ma analizziamo con ordine l' IDE ( Integrated Development Environment , nome che si da ad un tool capace di gestire l'intero ciclo di sviluppo di un programma con le sue sole forze )
L'ambiente comprende una o più barre di strumenti e due finestre. La barra strumenti racchiude le solite opzioni di managing dei file e di editing del testo, a cui si aggiungono i tool per la gestione del progetto, per la compilazione ed il debugging, e per la personalizzazione dell'editor. Nulla da dire, l'ambiente è completo e funzionale, come tutto il resto del KDE. Tramite le opzioni potrete impostare i parametri da passare al compilatore, al linker ed al programma stesso, il debugger è pratico e funzionale, anche se spartano e di non facilissimo utilizzo, mentre la personalizzazione grafica è quasi totale. 
La prima finestra, quella di sinistra,e divisa in quattro tab, Nella prima (CV) troviamo la lista degli oggetti del programma che si sta scrivendo, ossia le variabili, le classi, le funzioni che ne fanno parte. Nella tab successiva, (LFV),si trovano la lista dei file del codice e quelli ormai classici che li accompagnano, tra i quali il file della licenza, dei ToDO e i file di documentazione in html. La tab RFVtiene d'occhio i file di configurazione e di compilazione, mentre la DOC raggruppa tutti i file di aiuto generali dell'editor, i tutorial qt, kdelib e di programmazione c/c++/kde, e quelli del progetto corrente. Nella finestra di destra, anch'essa divisa in quattro tab, viene visualizzato il contenuto dell'oggetto selezionato in una delle tab di sinistra, che di volta in volta sarà un tutorial, codice sorgente, un albero di collegamento tra i file, ecc.. Questo consente di tenere tutto sotto mano con pochi colpi di mouse, e via via che il progetto cresce, aumentando in dimensioni e complessità, risulterà sempre facile sapere dove si trovano le funzioni e i dati.
Come nel caso di Glade, una minima conoscenza del c/c++ è indispensabile. A differenza di Glade, invece, KDEvelop richiede alcuni programmi aggiuntivi per interfacciarsi con gli aiuti in linea, con le librerie e col debugger: la maggior parte di questi sono presenti di default nelle distribuzioni RH, MDK e Suse, altre invece sono da scaricare.

**Ancora non basta?
Ovviamente esistono una grande quantità di ambienti di sviluppo totalmente grafici , completi ed evoluti, tra i quali Moonshine, Wipeout ( http://www.softwarebuero.de/wipeout-eng.html ) e C-Forge ( http://www.codeforge.com ) per quel che riguarda i linguaggi tradizionali, mentre per tcl esistono Tcldev e Vtcl ( http://vtcl.sourceforge.net/  ), e si stanno evolvendo progetti simili per Java e PERL, dei quali per ora esistono solo compilatori, VM o interpreti: vi invito a guardare il sito di  SUN Mocrosystem  (http://www.sun.com )  e di PERL (http://www.perl.com ) . Alcuni di questi programmi sono GPL, altri commerciali, altri sono ibridi, e se avete letto l'articolo del mese scorso sulle licenze sapete cosa intendo dire. Nei prossimi mesi continueremo questo argomento, con la speranza che vi venga voglia di usare il computer non solo per giocare ma anche per costruire. Per questo mese il materiale per studiare l'avete, divertitevi!

**** DIDA

FOTO 1: 	r-glade0.jpg
Ecco lo sviluppo di una applicazione gtk con Glade: i tool sono tutti molto intuitivi e a portata di mano 

FOTO 2	r-glade1.jpg
La finestra di composizione di un menù e il tree di oggetti finora inseriti, ordinato per dipendenza

FOTO 3: 	r-gtktutorial.jpg
una bella foto di gruppo per alcuni degli esempi del tutorial gtl... un po' caotica , ma è la sostanza che conta!

FOTO 4:	r-kdevelop0.jpg
L'ide di Kdevelop è molto funzionale, e raccoglie in pratiche tab tutte le informazioni necessarie per lo sviluppo di un programma piccolo e medio

FOTO 5:	r-kdevelop1.jpg
L'aiuto on-line di Kdevelop è pressoché completo, ed è scritto in html: questo non è il massimo della praticità , ma non mi vengono in mente altri difetti.

FOTO 6:	r-tcltutor.jpg
Il tutorial di VTCL, l'ambiente di sviluppo per TCL, un linguaggio di scripting non molto difficile e potente

FOTO 7:	r-perl.jpg
La home page di PERL, un potentissimo linguaggio di programmazione, indispensabile per i programmatori avanzati