Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
to a imparare un nuovo set di funzioni e, infine, assume<br />
default ragionevoli per molti valori nella descrizione dei<br />
gadget, più di quanto già non faccia Gadtools.<br />
In aggiunta a queste caratteristiche, GUIFront fornisce<br />
molte comode scorciatoie (per i requester ASL, per la lo-<br />
calizzazione, per gli EasyRequester) e, primo fra i fra-<br />
mework che abbiamo analizzato, offre all'utente la possi-<br />
bilità di personalizzare (entro certi limiti) l'aspetto della<br />
GUI, tramite un editor di preferenze esterno. Vedremo in<br />
seguito come questa caratteristica sia invece molto diffu-<br />
sa fra i sistemi più complessi.<br />
Un felice compromesso fra GadLayout e GUIFront è co-<br />
stituito dalla libreria GadUtil: come GUIFront, prende a<br />
modello l'API di Gadtools (questa volta, prefissando con<br />
GU- i nomi delle funzioni!) ed è una libreria condivisa<br />
(di appena 10 kb), e come GadLayout permette di defini-<br />
re posizione e dimensione dei gadget in maniera relativa<br />
ad altri gadget, al font in uso e a stringhe localizzate, of-<br />
frendo flessibilità sufficiente per quasi tutti gli scopi. In<br />
aggiunta a ciò, GadUtil offre il supporto automatico alla<br />
localizzazione e agli shortcut da tastiera, e integra nella<br />
libreria alcune delle funzioni più utili di altre librerie di<br />
sistema: in questo modo, le applicazioni più semplici<br />
possono evitare del tutto di aprire altre librerie e usare<br />
solamente le funzioni di GadUtil. Le uniche pecche di<br />
questo sistema risiedono nel mancato supporto al ridi-<br />
mensionamento e, almeno per il momento, nella docu-<br />
mentazione, che è incompleta; trattandosi però di un<br />
prodotto in fase di sviluppo attivo (noi abbiamo provato<br />
una versione beta), possiamo supporre che questi difetti<br />
verranno corretti al momento del rilascio definitivo. Se<br />
per la vostra applicazione è sufficiente un'interfaccia<br />
Gadtools, questa libreria può essere il miglior compro-<br />
messo tra occupazione di memoria, velocità, curva di ap-<br />
prendimento e supporto offerto.<br />
Un sistema atipico è GUITools: anch'esso offre il suppor-<br />
to a una descrizione più flessibile della GUI (che, peral-<br />
tro, consiste nel definire in maniera parametrica le posi-<br />
zioni, più che in una vera descrizione logica), che gli<br />
consente una (limitata) adattabilità ai font e una (limitata)<br />
gestione del resizing e, anch'esso, supporta gli shortcut,<br />
ma, a differenza dei framework che abbiamo già visto,<br />
offre il concetto di collegamento fra un gadget e una va-<br />
riabile del programma. Per fare un semplice esempio, un<br />
gadget stringa verrebbe collegato a un array di char,<br />
mentre un checkmark troverebbe come naturale corri-<br />
spondente una variabile booleana. All'applicazione non<br />
resta che leggere o modificare queste variabili (e invoca-<br />
re un paio di funzioni di sincronizzazione) per interagire<br />
con la GUI; naturalmente, i cosiddetti "action gadget"<br />
(cioè quelli che innescano degli eventi significativi per<br />
l'applicazione, come potrebbero essere due pulsanti<br />
"OK" e "Annulla") vengono gestiti con l'usuale metodo<br />
dei messaggi.<br />
Nonostante I'uso di questa tecnica e nonostante la dispo-<br />
nibilità di molte funzioni "scorciatoia" per la gestione di<br />
schermi e finestre, peraltro dall'operato a volte discutibi-<br />
le, GUITools soffre di un cattivo progetto iniziale, di una<br />
eccessiva stratificazione di versioni e di una sovrabbon-<br />
danza di strutture e parametri: forse retaggio della sua re-<br />
dazione in Modula-2. Basti dire che, fino alla versione<br />
precedente, erano presenti ben quattro diverse funzioni<br />
(non equivalenti) per la creazione dei gadget, una delle<br />
quali richiedeva la bellezza di nove parametri (fra cui<br />
una taglist)!<br />
La documentazione fornita non è chiarissima e presenta<br />
alcuni parti sconcertanti (in un punto l'autore suggerisce<br />
di usare ovunque il font Topaz 8 per ottenere una perfet-<br />
ta GUI su schermi pubblici!), ma in compenso contiene<br />
delle chiare esposizioni in Modula-2 dell'effetto di certe<br />
azioni. A nostro parere, il lettore ha a disposizione am-<br />
bienti migliori fra cui scegliere.<br />
Qualche considerazione<br />
Tutti i framework di terze parti di cui abbiamo parlato in<br />
questa prima puntata erano in realtà semplici raccolte di<br />
utili routine per l'accesso semplificato ai gadget tradizio-<br />
nali: in quasi tutti i casi, non era possibile ottenere nulla<br />
che non fosse ottenibile anche dalla gadtools.library, a<br />
costo di qualche sforzo supplementare in fase di codifi-<br />
ca.<br />
La semplificazione ottenuta tramite I'uso di questi fra-<br />
mework può apparire allettante al programmatore, ma<br />
occorre anche tenere presente il punto di vista dell'uten-<br />
te, che raramente si sente appagato quando la sua direc-<br />
tory LIBS: si riempie di framework diversi e incompatibi-<br />
li, uno per ogni applicazione, secondo le preferenze dei<br />
rispettivi programmatori. I1 nostro consiglio, allora, è di<br />
usare la gadtools.library "liscia" quando ciò è proponibile<br />
(piccole utility o semplici applicazioni), e rivolgersi ai fra-<br />
mework esterni solo quando effettivamente necessario.<br />
Ai progetti più ambiziosi dedicheremo invece la prossima<br />
puntata, quando parleremo dei "pesi massimi" fra i fra-<br />
mework per le GUI. Appuntamento fra un mese! A