Quickloox

Dal mondo Apple all'universo digitale, in visualizzazione rapida dell'ovvio

21 mar 2008

Un rinfresco a base di AppleScript

Ci sono situazioni particolari in cui Mac OS X ritarda leggermente l’aggiornamento (i programmatori lo chiamano refresh, rinfresco) di una o più finestre dei Finder. Questioni di rete, di processi contemporanei, di vecchie versioni di qualcosa o altro.

Quattro o cinque anni fa poteva pure accadere che una finestra ritardasse molto l’aggiornamento. Oggi non succede più, ma è ugualmente interessante scrivere un AppleScript che aggiorni tutte le finestre aperte del Finder, perché è possibile scriverlo in maniera oltraggiosamente elegante, con un nesting perfetto.

Il nesting è la nidificazione, o la scatola cinese. Dentro un ciclo c’è un altro ciclo, che contiene un terzo ciclo, o un’operazione che viene ripetuta più volte, e così via. Il ciclo più interno viene eseguito interamente, per incrementare di un passo l’esecuzione del ciclo che lo circonda, dopo di che il ciclo interno riparte e così via. L’effetto è paragonabile a quello dell’orologio con le lancette. Il ciclo interno è la lancetta dei secondi, che gira-gira-gira e a ogni giro fa avanzare di un passo la lancetta dei minuti. Alla lunga, con un giro completo di quest’ultima, avanzerà di un passo anche la lancetta delle ore. Se si indenta ogni fase, ne esce una sagoma “a freccia” molto leggibile e che dà soddisfazione al programmatore 8sì, il vero programmatore è attento all’estetica del proprio codice). Sotto con Script Editor, che vediamo come funziona.

tell application “Finder” (di’ al Finder che deve…)

repeat with i from 1 to count of Finder windows (…ripetere finestra per finestra del Finder, dalla numero uno fino all’ultima, tutto quello che è compreso in questo ciclo)

tell window i (di’ alla finestra numero i di…)

try (…provare a…)

update every item with necessity (…aggiornare ogni elemento secondo necessità)

end try (e smettere di provare quando ha finito)

end tell (e smettere di andare finestra per finestra una volta che…)

end repeat (…le finestre sono state passate tutte e il ciclo si esaurisce)

end tell (e questo chiude tutto)

Questo script è stato realizzato da un programmatore bravo, che ne ha fatto anche una miniapplicazione. Volendo, la si può scaricare e installare nella barra strumenti delle finestre del Finder, con la sua bella icona, in versione Tiger e Leopard.

AppleScript, a volerlo percorrere fino in fondo, è una cosa seria.

Commenta