Im ersten Teil der Serie Getting started mit AppleScript wurde das klassische Hello World in wenigen Schritten erklà ¤rt.
In diesem Teil will ich den Umgang mit Display Dialog in Applescript etwas nà ¤her erlà ¤utern und nebenbei den Umgang mit Kommentaren erklà ¤ren.
Fangen wir mit den Kommentaren an.
Ein Kommentar in Programmier / Script Sprachen dient im Kern der spà ¤teren Nachvollziehbarkeit von Code. Klingt eventuell jetzt fà ¼r euch unsinnig, weil ist ja der eigene Code und so, aber jeder der nach Monaten mal wieder eigenen Code à ¼berarbeiten wollte wird mir zustimmen das dies ohne Kommentare kompliziert werden kann. Oft endet es in Fragen wie:
Was zum Henker habe ich mir damals mit diesen Zeilen gedacht ?.
Um dies zu verhindern hier der Einsteig ins Kommentieren. à €“ffnet hierzu die Datei:
macfidelity_applescript_lektion1.scpt
im Script Editor. Das ganze sollte in etwa so aussehen:

Nun fà ¼gen wir mal einen einzeiligen Kommentar ein, der den Script-Ersteller hinterlegt.
Das unkompilierte Ergebnis solle in etwa so aussehen:

Durch die Betà ¤tigung des Knopfes “Compile” wird das Script wieder umgesetzt und sofern wir keine Fehler eingebaut haben auch lauffà ¤hig.
Kommentare werden im Script Editor ebenso mit einer eigenen Farbe dargestellt, in diesem Fall in grau.

Einzeilige Kommentare werden also mit “–” angefangen. Ihr kà ¶nnt natà ¼rlich beliebig viele einzeilige Kommentare am Stà ¼ck verwenden wie der folgende Screenshot zeigt:

Neben einzeiligen Kommentaren existieren natà ¼rlich auch mehrzeilige Kommentare in AppleScript.

Persà ¶nlich ziehe ich einzeilige Kommentare vor und verwende bei Bedarf dann einfach eine Reihe einzeiliger am Stà ¼ck sofenr notwendig (siehe Linie 1 & 2 im Beispiel). Dies ist aber nur eine Stilfrage und ich mags optisch einfach einheitlich.
Wenden wir uns dem Umgang mit Display Dialog zu:
Bis dato haben wir Diaply Dialog verwendet um ein Default Dialog Fenster zu erhalten. Dieses Default Dialog Fenster hat vordefinierte Eigenschaften, z.b. die 2 Buttons “OK” und “Cancel”. Natà ¼rlich kann man einen Display Dialog auch anpassen, z.b. mit einem Titel, Anzahl Buttons, Dialog Titel, Anzeigedauer, Icon Verwendung etc…
Als erstes wollen wir wir den Dialog mit einem Namen versehen, dafà ¼r benà ¶tigen wir folgenden Code:
display dialog “Verstehen Sie AppleScript schon ein bisschen ?” with title “Display Dialog”
Dies sollte im Script Editor im kompilierten Zustand wie folgt aussehen:

Und im ausgefà ¼hrten Zustand so:

Ok. eigentlich ganz simpel. nun wollen wir aber eigentlich andere Button-Texte haben, daher à ¤ndern wir dies auch noch ab.
Wir ergà ¤nzen den alten Code wie folgt:
display dialog “Verstehen Sie AppleScript schon ein bisschen ?” buttons {”Ja”, “Nein”, “à €žhm Jein”} with title “Working with Display Dialogs”
Und erhalten einen Display Dialog, mit eigens definiertem Titel und 3 eigens definierten Buttons. Das ganze sieht so aus:

Beziehungsweise ausgefà ¼hrt so:

Bei der Verwendung merken wir jedoch dass wir z.b einen Button als Default Antwort vorselektieren wollen. Dies macht Sinn, da somit die Vorgabe relativ zà ¼gig mit dem Return Knopf zu treffen ist und die vorgabe fà ¼r den Nutzer visuell ersichtlich ist.
Dafà ¼r ergà ¤nzen wir den Code erneut:
display dialog “Verstehen Sie AppleScript schon ein bisschen ?” buttons {”Ja”, “Nein”, “à €žhm Jein”} default button {”à €žhm Jein”} with title “Working with Display Dialogs”
Das Script sollte im Script Editor wie folgt aussehen:

Und ausgefà ¼hrt so:

Manchmal will man jedoch einen Dialog nicht unendlich lange anzeigen, sondern mittels Vorhgabe definieren wie lange er maximal angezeigt wird.
Dies liesse sich so bewerkstelligen:
display dialog “Verstehen Sie AppleScript schon ein bisschen ?” buttons {”Ja”, “Nein”, “à €žhm Jein”} default button {”à €žhm Jein”} with title “Working with Display Dialogs” giving up after 3
Konkret wà ¼rde unser Dialog nun nach 5 Sekunden verschwinden. Relativ kurze Zeit, aber gerade zu Testwecken recht angenehm … wer will jeweils schon 30 Sekunden warten, wenn es nur ums testen geht.
War doch bisher alles relativ einfach. nun was bringen uns Dialoge mit Buttons wenn wir nicht die Antwort des Anwenders auslesen und interpretieren… kurzum eine Folge einbinden.
Wir wollen nun je nach selektiertem Button einen unterschiedlichen Folgedialog anzeigen.
Dafà ¼r mà ¼ssen wir nun erstmal den Code wieder anpassen:
display dialog "Verstehen Sie AppleScript schon ein bisschen ?" buttons {"Ja", "Nein", "à €žhm Jein"} default button {"à €žhm Jein"} with title "Working with Display Dialogs" giving up after 5
–
– antwort aufnehmen und verarbeiten
set DlogResult to result
–
if button returned of result = “Ja” then
display dialog “Ja gedrà ¼ckt”
else if button returned of result = “Nein” then
display dialog “Nein gedrà ¼ckt”
else if button returned of result = “à €žhm Jein” then
display dialog “à €žhm Jein gedrà ¼ckt”
else
display dialog “Timeout”
end if
Im Script Editor sollte dies wie folgt aussehen:

Aufklà ¤rung zum aktuellen Zeitpunkt:
Unser Script zeigt einen Dialog mit angepasten 3 Buttons, einem Titel fà ¼r das Fenster, einem vordefinierten Default Button, einer vordefinierten Anzeige-Dauer und einer Routine die prà ¼ft was selektiert wurde. Hierfà ¼r wurde ein IF-Konstruktion verwendet, welche ich hier nur kurz streife. Denke Schleifen etc sind ein eigenes Thema in AppleScript.
Abschliessend das komplette Script nochmal mit Kommentaren:
– Autor: fidel
– Date: 20080713
–
– Display Dialog mit Title fà ¼r Dialog Fenster
display dialog “Verstehen Sie AppleScript schon ein bisschen ?” buttons {”Ja”, “Nein”, “à €žhm Jein”} default button {”à €žhm Jein”} with title “Working with Display Dialogs” giving up after 3
–
– antwort aufnehmen und verarbeiten
set DlogResult to result
– Anfang IF
–
– Wurde ja gedrà ¼ckt ?
if button returned of result = “Ja” then
– Bestà ¤tigungsdialog
display dialog “Ja gedrà ¼ckt”
– wurde Nein gedrà ¼ckt ?
else if button returned of result = “Nein” then
– Bestà ¤tigungsdialog
display dialog “Nein gedrà ¼ckt”
– wurde à €žhm Jein gedrà ¼ckt ?
else if button returned of result = “à €žhm Jein” then
– Bestà ¤tigungsdialog
display dialog “à €žhm Jein gedrà ¼ckt”
– d.h. keiner der 3 Buttons wurrde gedrà ¼ckt
else
– timeout Dialog
display dialog “Timeout”
end if
–
– ENDE IF
Das ganze wird jetzt gespeichert:

So, hoffe das ganze war nachvollziehbar und interessant fà ¼r den einen onder anderen. Wie schon beim ersten Beitrag gilt auch hier: bei Fragen einfach melden.
Der nà ¤chste Beitrag in dieser Kategorie wird sich erneut dem Display Dialog widmen und ich denke dann ist das Thema auch fà ¼r den Einsteig ausreichend abgefeiert.
Links: