DI RECENTE ACCOMAZZI...
CERCA
» Ricerca avanzata
MAILING LIST

Se vuoi iscriverti alla mailing list di Luca Accomazzi inserisci qui la tua mail:

Vuoi ricevere i messaggi immediatamente (50 invii / giorno) o in differita e in gruppo
(due invii / giorno)?

» Vuoi saperne di più?

Scrivania, per piccina che tu sia...

L'interfaccia utente, quel modo sofisticato ma semplice per comunicare con il vostro personal computer, si basa sulla metafora della scrivania. Il video del computer è simile alla scrivania sulla quale lavorate, e come con una scrivania di legno o metallo possiamo star certi di trovare cartellette, fogli volanti, un cestino e soprattutto - è di questo che parleremo - gli accessori di scrivania.
L'esempio più tipico di accessorio è senza dubbio la calcolatrice: senza uscire dal programma che sto usando per scrivere questo articolo sono in grado di calcolare quanto la munifica redazione mi remunererà, dato che sono pagato un tanto a parola...


Arriva il Desktop Manager

La metafora della scrivania (desktop metaphor 1nell'originale) è, come i miei più attenti lettori avranno già sospettato, frutto del lavoro di un altro tool del toolbox, il Desk manager.
Si tratta di uno dei tool apparentemente più semplici, poichè fornisce al programmatore solo una ventina di funzioni (ben poche se comparate alle duecento e passa di QuickDraw), ma la sua complessità diviene chiara quando pensate che deve lavorare in stretto contatto con moltissimi altri tool: si appoggia al Window manager per creare le finestre nelle quali vanno visualizzati gli accessori. E' solo grazie al Menu manager che è possibile far scegliere uno tra gli accessori che appaiono, come sapete, nel menù mela. Bisogna collaborare con Scrap manager per far funzionare le operazioni di taglia e incolla, con Control manager e Dialog manager, e con buona parte degli altri componenti l'allegra famiglia del toolbox.2

A questo proposito, una nota che i pignoli apprezzeranno. In tempi recenti si è fatto un gran parlare di multiprogrammazione sui personal computer.
Fatto sta che la definizione di "computer multiprogrammato", che potete trovare in qualunque buon libro di informatica, è "un computer che è in grado di iniziare a processare una applicazione quando la precedente non ha ancora terminato". Di fatto, dunque, i computer Apple sono multiprogrammati da sempre, dato che possiedono gli accessori di scrivania.3

Gli accessori sono programmi che condividono con l'applicazione in corso l'uso della macchina: quando la loro finestra è in superficie sono loro ad ottenere il controllo del computer, e vengono addormentati quando la loro finestra passa in secondo piano sulla scrivania.
A proposito di applicazioni, è necessario ricordare - qualcuno fa confusione su questo punto - che il Finder non è una parte del sistema operativo del computer, ma una applicazione come le altre: più importante e più usata, forse, ma una comune applicazione.
A gestire il passaggio di controllo tra applicazione e accessorio è il Desk manager, in collaborazione con lo Event manager. Come abbiamo visto nella scorsa puntata, i programmi creati per le macchine Apple devono appoggiarsi allo Event manager per scoprire che azioni sta compiendo l'utente e rispondere in modo appropriato.


Cosa succede dietro a un doppio clic

Vediamo cosa succede dentro il computer per comprendere la meccanica del funzionamento degli accessori.
Viene lanciata una applicazione; questa applicazione procede a inizializzare QuickDraw e gli altri manager che le servono. Dopo aver inizializzato il Desk manager e il Menu manager, in particolare, esegue una chiamata al primo.

AddResMenu (PuntatoreAlMenuMela, 'DRVR'); { Sul Mac }

Quando Desk manager riceve la chiamata usa il Menu manager per aggiungere al menu mela il nome degli accessori disponibili.
L'applicazione comincia a girare, e procede, ottenendo gli eventi dall'Event manager e reagendo appropriatamente. Come abbiamo detto nella scorsa puntata, Event manager viene usato scrivendo un ciclo eventi fatto pressappoco così:

ripeti
Evento := GetNextEvent (everyEvent);
se Event.what <> nullEvent allora
Reagisci all'Evento;
se Event.where = nella finestra di un accessorio
SystemClick;
se Event.where = ha scelto un accessorio nel menu mela
DoDeskAcc (Accessorio);
SystemTask;
TeIdle
finché l'utente non ha scelto di smettere.

SystemClick, DoDeskAcc e SystemTask sono le tre chiamate più importanti che si possano fare al Desk manager. Il programma riceve gli eventi dallo Event manager, e li tratta come preferisce. Se scopre (con l'aiuto del Menu manager) che l'utente ha scelto un accessorio nel menu mela chiama DoDeskAcc in modo che Desk Manager apra l'accessorio. Se l'applicazione scopre (con l'aiuto di Window manager) che un evento è accaduto in una finestra non propria, ne deduce che la finestra è stata creata da un accessorio attivo, e chiama SystemClick in modo che Desk Manager passi l'evento all'accessorio. Inoltre, l'applicazione è tenuta a chiamare spessissimo SystemTask, che permette agli accessori di aggiornare il loro display. Un esempio di accessorio che ha bisogno di SystemTask è l'orologio sveglia.

Tutto questo ci porta ad alcune conclusioni utili nell'uso di ogni giorno: innanzitutto sappiamo che, anche se quasi tutti i programmi permettono l'uso degli accessori, è possibile per un programma evitare di attivarli.
Il numero massimo di accessori che il computer può gestire teoricamente è di 32 per Macintosh (ne scopriremo il motivo quando parleremo del Menu manager): ovviamente considerazioni pratiche sulla memoria installata riducono questa quantità.
Gli accessori sono salvati sul disco nella cartella "Menu Apple" del Macintosh, che si trova nella Cartella di Sistema.


Anatomia di un accessorio

Come sono strutturati gli accessori?
Si tratta di miniprogrammi apparentemente simili alle normali applicazioni, distinti da queste principalmente per le dimensioni e per la caratteristica di non possedere un codice principale. I programmatori Pascal sono abituati a vedere i programmi composti da un insieme di procedure e funzioni con un corpo del programma che le coordina (in linguaggio C questo compito è svolto dal main): negli accessori non c'è corpo principale.
Entriamo un po' più nei dettagli, esaminando il caso degli accessori dell'Apple IIgs. Gli accessori Mac sono sostanzialmente simili ma leggermente meno sofisticati, e vedremo in seguito quali lievi differenze vi siano.
Un accessorio è composto di 4 procedure, chiamate tradizionalmente Open, Close, Action e Init. La procedura Init viene chiamata dal Desk manager quando il computer viene lanciato, di modo che l'accessorio possa inizializzarsi - per esempio l'accessorio Scelta Risorse ne approfitta per scoprire quali apparecchiature sono collegate al computer.
La procedura Open viene attivata quando l'utente sceglie l'accessorio dal menù mela: normalmente l'effetto è quello di aprire una finestra che l'accessorio usa per comunicare.
La procedura Action (su Mac si chiama Control) reagisce agli eventi: viene chiamata da Desk manager su suggerimento dello Event manager quando accade un evento che riguarda l'accessorio. Per esempio, l'accessorio calcolatrice riceve gli eventi KeyDown (è stato premuto un tasto) quando è aperto e la sua finestra si trova di fronte alle altre.
La procedura Close viene chiamata quando l'accessorio viene chiuso usando il bottone di chiusura sulla finestra o la voce Chiudi del menu Archivio (File nei programmi in inglese).


Lo Scrap Manager

Gli accessori di scrivania sono estremamente comodi, ma divengono impagabili quando utilizzati per usare il taglia e incolla.
Il principio del taglia e incolla, anche se è estremamente semplice da usare, tanto da diventare presto una seconda natura per gli utenti dei personal computer Apple, è per il programmatore un piccolo supplizio. Realizzarlo è, infatti, un compito piuttosto complesso, che vede alleato del programmatore un altro tool del toolbox, lo Scrap manager, che presenteremo nello spazio restante.

Osserviamo una tipica sequenza di lavoro per poi scoprire come venga eseguita da un programma. Dal Finder entriamo in Mac Paint, e realizziamo il disegno di un uovo pasquale. Selezioniamo il disegno con il lasso e, premendo Mela-C, lo copiamo sugli appunti.
Usciamo da Paint ed entriamo in Mac Write: possiamo scrivere il testo di un biglietto d'auguri e quindi, premendo Mela-V, incollarvi il disegno. Stampiamo quindi il risultato e consegnamolo al familiare più vicino.
Tutto il procedimento funziona in modo analogo con qualunque programma: è sempre possibile copiare quello che ci serve in una applicazione per usarlo in un'altra.
Se vogliamo usare non uno, ma dieci disegni, possiamo ricorrere all'accessorio Archivio Appunti, sul quale incolleremo i disegni per poi recuperarli uno alla volta quando ci troveremo nell'applicazione di trattamento testi.
*4
Quando selezioniamo per la prima volta il comando "copia" (o "taglia") l'applicazione corrente sposta la zona di memoria che rappresenta il dato da copiare o tagliare in uno spazio appositamente riservato (se praticate il gergo informatico, è quello che si suole chiamare un buffer). Passa quindi a chiamare lo Scrap manager, usando la chiamata PutScrap, passandogli il buffer ed indicando di che tipo di dati stiamo parlando (nel caso dell'esempio si trattava di una immagine grafica). Una applicazione che può farlo dovrebbe sempre passare i dati sia in forma testo che in forma immagine; per esempio, Mac Write e Gs Write forniscono sia il testo tagliato che una immagine grafica che rappresenta il testo. In questo modo l'applicazione che dovrà usare i dati potrà sfruttarli nella forma che preferisce.
Quando incolliamo i dati nell'altra applicazione, l'applicazione riceve i dati dallo Scrap manager usando la chiamata GetScrap. Sempre per restare nel caso dell'esempio, MacWrite cerca di ottenere i dati incollati in formato testo, ma dato che questi non sono disponibili, come è ovvio, prende l'immagine grafica e la unisce al testo. Ovviamente, non sarà possibile editare l'immagine restando dentro MacWrite, ma la fusione è senza pecche.
Nel caso dell'Archivio appunti, ci troviamo di fronte ad un accessorio che memorizza il risultato di ripetute chiamate a GetScrap e permette di selezionare uno qualsiasi degli appunti per l'uso, quando l'appunto (i dati che lo costituiscono) viene nuovamente dato in pasto allo Scrap manager che, di suo, sa gestire un solo blocco di dati per volta. (Per la cronaca, sia detto che l'Archivio appunti non è disponibile nel momento in cui scriviamo per lo Apple IIgs. E' probabile che il set di accessori standard verrà distribuito insieme al ProDOS 16 versione 2.0, già disponibile negli Stati Uniti mentre scriviamo e che sarà diffuso anche nel nostro Paese nel momento in cui leggerete queste righe).
Lo Scrap manager, con un poco di aiuto da parte delle applicazioni, provvede a salvare l'appunto su disco e lo ricarica in memoria quando ve ne sia bisogno (tra successivi usi del computer o semplicemente per risparmiare memoria).


Questo articolo fa parte di uno dei miei percorsi. Se vuoi saperne di più su questo argomento, visita il resto del percorso cliccando qui.