Handler
Handler aehneln den eben besprochenen Routinen. Der Unterschied liegt im Aufruf. Ein Handler wird von einem anderen Programm aufgerufen. Man kann also auf Befehle von aussen reagieren. Man nennt diesen Vorgang, bei welchem Handler fuer eine bestimmte Befehle aus anderen Applikationen eingerichtet werden, das Anhaengen von Skripten an eine Applikation.
Syntax
( on | to ) BefehlsName ¬
[ [ of ] DirekteParameterVariable ] ¬
[ given Titel:ParameterVariable ¬
[, given Titel:ParameterVariable ] ... ] ¬
[ global Variable [, Variable ] ... ]
[ local Variable [, Variable ] ... ]
[ Anweisung ] ...
end [ BefehlsName ]
Idle-Handler
Man kann ein Skriptprogramm mit der Option "Nicht automatisch beenden" absichern. Nach Ausfuehrung aller Anweisungen bekommt ein solches Programm einen Idle-Handler. In dem Idle-Handler koennen also Aktionen angewiesen werden, die im Ruhezustand eines Skriptprogramms ausgeführt werden sollen.
Beispiel:
property theFolder : 0
property theDate : 0
if theFolder = 0 then
set theFolder to choose folder
set theData to modification date of ¬
(info for theFolder)
end if
on idle
set theNewDate to modification date of ¬
(info for theFolder)
if theNewDate theDate then
set theDate to theNewDate
tell me
activate
display dialog ¬
("Der Ordner " & (theFolder as string) & ¬
" wurde geaendert!")
end tell
end if
return 5
end idle
Ein Idle-Handler wird vom Finder immer wieder aufgerufen. Die Zahl die returniert wird, ist die Anzahl der Sekunden nach denen der Handler wieder aufgerufen wird...
Open-Handler
Hiermit macht man sein Skriptprogramm zu einem Droplet. Droplets sind Applikationen, auf die im Finder Gegenstaende gezogen werden koennen und die damit die Applikation oeffnen. Das was auf das Skript gezogen wurde, wird dem Skript als direkter Parameter zugeteilt. Dies ist immer eine Liste.
Beispiel:
property theFolder : 0
property theDate : 0
if theFolder = 0 then
set theFolder to choose folder
set theDate to modification date of ¬
(info for theFolder)
end if
on open theFileList
set theItem to item 1 of theFileList
if folder of (info for theItem) then
set theFolder to theItem
set theDate to modification date of ¬
(info for theFolder)
else
display dialog ¬
¬
"Bitte ziehen Sie nur einen Ordner auf das Symbol" buttons {"OK"} ¬
default button 1
end if
end open
on idle
set theNewDate to modification date of ¬
(info for theFolder)
if theNewDate theDate then
set theDate to theNewDate
tell me
activate
display dialog ("Der Ordner " & ¬
(theFolder as string) & ¬
" wurde geändert!")
end tell
end if
return 5
end idle
Run-Handler
Beim Run-Handler unterscheidet man zwischen zwei Arten: dem ausdruecklichen und dem indirekten Run-Handler. Jedes Skript hat einen Run-Handler. Indirekt ist dieser, wenn nicht im Skript explizit ein Run-Handler angegeben wird.
Beispiel:
property theFolder : 0
property theDate : 0
on run
if theFolder = 0 then
set theFolder to choose folder
set theDate to modification date ¬
of (info for theFolder)
end if
end run
on open theFileList
set theItem to item 1 of theFileList
if folder of (info for theItem) then
set theFolder to theItem
set theDate to modification date of ¬
(info for theFolder)
else
display dialog ¬
"Bitte ziehen Sie nur " & ¬
"einen Ordner auf das " & ¬
¬
"Symbol" buttons {"OK"} ¬
default button 1
end if
end open
on idle
set theNewDate to modification date of ¬
(info for theFolder)
if theNewDate theDate then
set theDate to theNewDate
tell me
activate
display dialog ¬
("Der Ordner " & ¬
(theFolder as string) &¬
" wurde geändert!")
end tell
end if
return 5
end idle