08.11.2012 Views

dettagli - Amiga Magazine

dettagli - Amiga Magazine

dettagli - Amiga Magazine

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

La creazione delle GUI<br />

Abbiamo visto nelle precedenti puntate come sia disponi-<br />

bile un'ampia varietà di soluzioni per semplificare la crea-<br />

zione dell'interfaccia utente grafica di un programma. In<br />

realtà, quanto questa varietà sia effettivamente ampia di-<br />

pende in misura sostanziale dal linguaggio di programma-<br />

zione che si sta usando. Anche se praticamente tutti i lin-<br />

guaggi disponibili su Arniga possono, in un modo o nell'al-<br />

tro, invocare funzioni di librerie condivise (e accedere così<br />

alla quasi totalità dei framework che abbiamo presentato),<br />

in alcuni casi ciò è tutt'altro che agevole.<br />

Spesso è sufficiente un <strong>dettagli</strong>o per complicare le cose:<br />

non sempre la rappresentazione dei dati in memoria offerta<br />

da un certo linguaggio coincide con quella assunta dalle Ii-<br />

brerie (che è poi quella del linguaggio C), e non sempre è<br />

possibile passare a una libreria puntatori a funzione compa-<br />

tibili con gli Hook di sistema; alcuni linguaggi sono inter-<br />

pretati, e non compilati e, quindi, non possono usare affatto<br />

degli Hook e meno che mai costruire delle classi custom<br />

per i framework orientati agli oggetti; a volte semplicemen-<br />

t6 non sono disponibili i file di supporto per un determina-<br />

to linguaggio, o una libreria fa un uso spregiudicato di<br />

qualche particolare del supporto a tempo d'esecuzione del<br />

C. Insomma, "il diavolo si nasconde nei <strong>dettagli</strong>", e basta un<br />

nonnulla perché l'adozione di un certo framework, anziché<br />

semplificare la programmazione, la complichi oltre misura.<br />

Non stupirà allora scoprire che, parallelamente alla diffu-<br />

sione di linguaggi diversi da C e assembler per la program-<br />

mazione su <strong>Amiga</strong>, si siano diffusi strumenti e ambienti per<br />

il supporto alla creazione di GUI con questi linguaggi: ed è<br />

Linguaggi e GUI @arte ZII)<br />

a questi "cugini poveri" di MUI e consimili che dedichere-<br />

mo la nostra attenzione in questa puntata.<br />

L'ambiente più "ostile" alla programmazione delle normali<br />

librerie condivise è, senza alcun dubbio, il linguaggio della<br />

Shell: gli script di ArnigaDOS. Potrà sembrare strana l'idea<br />

di usare gli script di Shell per realizzare applicazioni dotate<br />

di interfaccia grafica, ma in realtà molti piccoli problemi di<br />

normale amministrazione potrebbero essere agevolmente<br />

affrontati con i comandi del DOS e un po' di inventiva,<br />

senza richiedere il ricorso a mezzi più sofisticati.<br />

Proprio riconoscendo questa possibilità, la vecchia Com-<br />

modore aveva incluso fra i comandi di sistema Request-<br />

Choice e RequestFile, che danno la possibilità a uno script<br />

Shell di presentare all'utente un requester testuale, even-<br />

tualmente con risposte multiple, e un file requester; le<br />

azioni dell'utente vengono poi comunicate allo script attra-<br />

verso lo standard output e i valori di ritorno dei comandi<br />

(e poi gestite tramite I'impostazione di opportune variabili<br />

d'ambiente). Sulla loro scia sono nate nel tempo altre pic-<br />

cole utility, di solito reperibili nel pubblico dominio, che<br />

permettono di costruire requester più complessi, aggiunge-<br />

re menu, aprire e chiudere schermi e così via.<br />

Se questo approccio "artigianale" alla costruzione di una<br />

GUI può andar bene per realizzare una sporadica richiesta<br />

di conferma, o per scegliere un po' di file da passare come<br />

argomenti a LHA (vedi listato l), non è il caso di affidarsi a<br />

questi comandi per realizzare applicazioni appena un po'<br />

più complesse. Non è necessario però abbandonare del tut-<br />

to l'approccio dei comandi di Shell: si può usare gui4cii.<br />

set dest 'requestfile title="Nome dell'archivio" savemode noicons'<br />

I if exists $dest<br />

set add 'requestchoice "Richiesta di conferma" "Aggiungo all'archivio*Npreesistente?" "s~~No"'<br />

if "$addU eq "O"<br />

quit<br />

endif<br />

endif<br />

lha a $dest 'requestfile title="File da archiviare" positive="Archivia" multiselect'<br />

Listato I - Uso di RequestFile e RequestCboice.

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

Saved successfully!

Ooh no, something went wrong!