|
![]() |
AmigaDev Quinta parte Questo mese è il turno della libreria GadTools: un po' fuori moda forse, ma ancora interessante, almeno dal punto di vista di un corso di programmazione su Amiga. "GadTools è una nuova libreria della Release 2 pensata per semplificare la creazione di interfacce utente con Intuition" recitano i RKRM... Nozioni fondamentali Nella terza puntata del corso abbiamo mosso i primi passi verso Intuition,
la GUI di AmigaOS. Come abbiamo detto, i suoi componenti fondamentali
sono schermi, finestre, menù e gadget; ci siamo fatti un'idea di cosa
sono schermi e finestre, ma non abbiamo ancora parlato di menù e gadget:
gestire questi ultimi con le sole funzioni offerte dalla intuition.library
risulta infatti un po' complicato. La gadtools.library (introdotta col
2.0) semplifica il lavoro del programmatore e offre un look "standard"
per le applicazioni (per quanto esso sia ormai datato). I gadget La gadtools.library offre 12 diversi tipi di gadget (vedere tabella
1); per creare un gadget, è necessario usare la funzione CreateGadget(),
i cui parametri sono il tipo di gadget, un puntatore al gadget precedente,
un puntatore ad una struttura NewGadget ( La struttura NewGadget è definita nel modo seguente:
Il puntatore al gadget precedente è necessario per realizzare una
lista (ogni gadget Intuition punta al gadget successivo); per il primo
gadget (o se si crea un solo gadget) è necessario passare il risultato
della funzione CreateContext(). Si veda l'esempio sul CD per i dettagli.
La gestione degli eventi
Nel caso in cui una finestra contenga gadget GadTools, è necessario
dare alla libreria la possibilità di filtrare i messaggi di Intuition;
in questo modo l'applicazione viene a conoscenza solo delle informazioni
utili, e non deve preoccuparsi di tutti quei messaggi necessari a GadTools
per gestire i gadget.
Per questo motivo, la libreria offre le funzioni GT_GetIMsg() e GT_ReplyIMsg(),
che l'applicazione deve usare al posto di GetMsg() e ReplyMsg(). Per
il resto, il funzionamento resta lo stesso. Per i dettagli si può fare
riferimento all'esempio sul CD.
Altra questione da considerare sono i flag IDCMP della finestra; come
abbiamo detto in precedenza, è necessario specificare ad Intuition quali
classi di eventi si desidera ricevere. Poiché ogni tipo di gadget GadTools
ha bisogno di ricevere alcuni tipi di eventi per funzionare, in I menù
Oltre ai gadget, la gadtools.library permette anche di creare in modo
semplice i menù. Per farlo è infatti sufficiente specificare una array
di strutture NewMenu:
Creato l'array (per i dettagli si faccia riferimento all'esempio),
la funzione CreateMenus() si occupa di allocare e riempire le strutture
dati necessarie. Fatto questo, la funzione LayoutMenus() dispone fisicamente
gli elementi del menù. Quindi il menù può essere "attaccato" ad una
finestra con la funzione di Intuition SetMenuStrip(). Come si vede l'utilizzo
di GadTools rende rapida e semplice la creazione di questo elemento
dell'interfaccia; l'esempio sul CD mostra anche come l'array di strutture
NewMenu sia anche molto "leggibile" e quindi facile da creare e modificare.
Una volta che il menù è stato attaccato ad una finestra, l'utente
è in grado di selezionare da esso un'opzione; quindi Intuition ci manderà
un IntuiMessage di classe IDCMP_MENUPICK e codice un numero che identifica
l'elemento del menù. Lo stesso IntuiMessage può riportare la selezione
di più opzioni, perché, sebbene molti utenti forse non lo sanno, è possibile
selezionare più opzioni in una volta, tenendo premuto il tasto destro
e cliccando sugli elementi con il sinistro.
Siamo giunti alla fine anche di questa lezione. Ma non disperate:
saremo di nuovo qui con voi dopo le vacanze estive!
Tabella 1: I tipi di gadget GadTools
|
Copyright (C) 1999-2002, la redazione di AmigaLife.
Il logo e le copertine della rivista sono tratti dal sito Pluricom e sono Copyright (C) 1992-2001 Pluricom S.r.l.