Getting Started mit AppleScript (Lektion II – Working with comments and dialogs)
July 13th, 2008 at 14:55Im 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:
Tags: applescript, applescript lektion, default, display dialog, getting started, giving up after, how to, tutorial, with button














August 17th, 2008 at 16:38
danke
war sehr hilfreich
ich selber kam noch nich so richtig zu recht
danke
August 17th, 2008 at 18:12
hi,
freut mich dass ich helfen konnte.
Was bastelst du den aktuell ? wo liegen die Probleme ?
gruss
fidel
August 17th, 2008 at 18:29
aber kannst du/wer immer noch erklaeren wie man script endes-programmiert
August 17th, 2008 at 18:33
also ich wollte eigentlich nur so ein bisschen alle programme von mac ausprobieren
ausserdem kann man sprachbefehle selber einstellen, aber man muss die aktionen in ein apple-script schreiben
und daher wollte ich script lernen, sodass ich nicht immer die aktionen aufnehmen muss
August 17th, 2008 at 19:29
hey brauchst nich mehr anworten
script-ende habe ich rasgefuneden
aber kannst du nicht mal andere sachen als dialogs+aktionen erklaeren
das hab ich jetzt verstanden
nur eine sache
ich hab einen if-befehl von ueber einer zeile laenge
aber dann liest er nicht mehr das “then” und laesst den befehl aus
und wie kann ich text auswerten?
August 17th, 2008 at 20:42
hi
Sorry erst jetzt die ganze comment flut gesehen =)
poste mal deinen code dann sollten wir das gelöst bekommen.
bzgl was anderes wie dialog & aktion…gib einfach mal bescheid wass dich interessiert. Ich wollte die tage eigentlich mal umgang mit texten etc durchkauen hehe.
gruss
fidel
August 18th, 2008 at 16:12
nene
eigentlich interressiert mich jetzt was andres
naemlich nehmen wir an ich hab folgendes applescript
display dialog “Hi” buttons {“Hi”} default button 1 with title “Hi” giving up after 3
if button returned of result = “Hi” then
display dialog “Howdy?” buttons {“Great”, “Ok”, “Not so good”} default button 1 with title “Howdy”
if button returned of result = “Great” then
display dialog “What are you doing right now?” buttons {“Nothing in particular”, “Answering dumb dialogs”, “Listening to music”} default button 1 with title “Current activity”
if button returned of result = “Nothing in particular” then
display dialog “Well, that sounds very interesting.” buttons {“You’re not funny”,
else if button returned of result = “Answering dumb dialogs” then …
else
else if button returned of result = “Ok” then
display dialog “Why” buttons {“’cause I’ve godda answer stupid dialogs”, “’cause it’s cold”, “I dunno”} default button 3 with title “Why”
else
else
end if
is jetzt ziemlich banal
aber ich will bei dem ersten dialog also “hi” moechte ich wenn er hi antwortet eine datei oeffnen die jetzt einfach mal den pfad [Macintosh HD/all users/RS/documents/hi] hat, dann habe ich aus apple-script erschliessen koennen, dass ich dem programm ,vorschau, sagen muss, dass ich die datei oeffnen will, also:
tell application “Vorschau/Preview”
open …
aber da komm ich nich weiter
er sagt mir naemlich wenn ich den pfad einfuege, dass er etwas andres erwartet
check ich nich so richtig
noch eine frage: wenn ich die datei als .app speichere, wie aendere ich dann das Icon?
August 18th, 2008 at 16:27
aber das auswerten von texten aus dialogen waere noch interressant
August 18th, 2008 at 17:40
hi bzgl icons:
im kern gibt es 2 Möglichkeiten.
Variante 1: das allgemeine ändern von Icons eines Programmes
Variante 2: das definieren eines appIcons im Rahmen der Programm Erstellung.
Ich erklär mal fix Variante 1, da die allgemeiner und immer brauchbar ist
–
1. Selektiere dein .app file
2. Rechtsklick -> Information / Get Info im Kontext Menü drücken
3. Neues Icon im Finder selektieren (gibt gute Icons auf Interfacelift (weitere links siehe mein englisches howto weiter unten)
4. Rechtsklick-> INformation / Get info
Nun solltest du 2 Informations Dialoge vor dir haben, einerseits von deinem APP und andererseits von deinem Wunsch Icon.
5. Selektiere nun im Informationsdialoges deines wunschicons ganz oben das Icon selber und drücke APPLE+C um dieses zu kopieren. Das icons sollte im markierten Zustand blau umrandet sein
6. Nun wechsle in den Informationsdialog deines .APP, selektiere auch dort das icon oben (muss wieder blau umrandet sein) und drücke APPLE+ V
Damit sollte dein .APP ein neues Icon haben. Dies geht im Kern mit allen Files.
hier noch mal in englisch:
http://www.macfidelity.de/blog/2007/03/14/customize-os-x-or-howto-change-icons-in-ox-x/
August 18th, 2008 at 18:01
bzgl:
aber das auswerten von texten aus dialogen waere noch interressant
Meinst du das reine auswerten von den möglichen Knöpfen ?
Oder ein Dialog-Feld inkl. Textfeld in dem der User einen Text eingeben kann ?
Gruss
fidel
August 18th, 2008 at 19:10
@RS: denke ich werde morgen noch Teil 3 bzgl. Umgang mit Dialogen machen (inkl Dialog-Fenstern mit Textfeldern) und dann anschliessend mal in Teil 4 den Umgang mit Strings anvisieren.
Schà ¶ne Grà ¼ÃƒÅ¸e
fidel
August 18th, 2008 at 21:07
dialog feld mit text faende ich interessant, weil ich bisher nur mit if-formeln vorankomme und das nur sehr schleppend…
ich weiss z.b. nicht, wie ich pruefen kann, ob der text enthalten ist…
August 18th, 2008 at 21:10
geht klar …. werd ich morgen mal einbauen =)
August 18th, 2008 at 21:13
noch zu den icons
wie kann ich eigene icons erstellen
kann ich einfach bilder nehmen?
August 18th, 2008 at 21:52
bzgl Icons:
also ich verwende eigentlich immer frei verfügbare Icons (als .icns), aber ja du kannst auch selber welche erstellen.
Ein relativ simples Tool sollte hier IMG2ICNS sein.
http://www.shinyfrog.net/en/software/img2icns/
habe ich auch in diesem Beitrag erwähnt:
http://www.macfidelity.de/blog/2007/12/12/mac-create-icons-out-of-your-images-using-img2icns/
hoffe das hilft weiter
August 19th, 2008 at 11:06
[...] wir nun mit den Mitteln aus Lektion II einen Dialog mit 2 [...]
August 19th, 2008 at 11:20
@RS: heute kam Teil 3 der Serie – Sollte einige deiner Fragen beantworten. Viel Spass beim ausprobieren. Wenn nicht frag einfach oder warte auf Teil 4 =)
gruss
fidel
August 19th, 2008 at 12:25
bzgl dem öffnen von Dateien – Wenn ich z.b. eine Datei a.jpg auf meinem Desktop öffnen will kann ich das so erreichen:
—-
tell application “Finder”
activate
open file “MacOSX:Users:fidel:Desktop:a.jpg”
end tell
—-
Wichtige stichwörter hier sind dann ggf. try/end try sowie das wissen dass es mind. 2 Varianten der Pfadangaben in Applescript gibt. Obige und die posix variante.
Werde das irgendwann mal im Detail erklären, im Rahmen der Kommentare ist dass nicht umfassend möglich.
August 21st, 2008 at 00:57
[...] Lektion II – Working with comments and dialogs [...]
August 30th, 2008 at 14:47
[...] Lektion II – Working with comments and dialogs [...]