30.12.2012 Views

Amiga Magazine Online

Amiga Magazine Online

Amiga Magazine Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!