Hallo Scripter,
mit reinem AppleScript merkt man schnell, dass nur sehr einfache Dialoge erzeugt werden können: Nur eine Texteingabezeile, weder Radiobuttons noch Checkboxen ...
Mit dem Hilfsprogramm Pashua (
http://www.bluem.net/downloads/pashua_en/ ) ist es möglich, komplexere Dialoge zu bekommen. Aber es braucht auch einen gewissen Aufwand.
Weiter unten folgt ein funktionierendes Script-Skelett, welches zeigt, wie der Dialog vorbereitet und ausgewertet wird. Die verwendeten Begriffe machen keinen grossen Sinn und müssen natürlich ans auszuführende Projekt angepasst werden.
Das Wichtigste daran ist das Zusammenstellen einer Konfigurierungs-Textkette, welche der Variablen
config zugewiesen wird.
Jeder Eintrag beginnt mit einem Kürzel. Nachstehend besteht dieser aus drei Zeichen. Danach folgt ein Punkt, ein bestimmter Pashua-Begriff (z.B. "type" oder "label") ein Gleichheitszeichen und wieder ein Pashua-Begriff:
Die zweite Zeile beginnt mit demselben Kürzel, dann ein Punkt, der Pashua-Begriff, das Gleichheitszeichen und (hier) der Text, welcher im Dialog erscheint.
Mit den folgenden drei Zeilen wird die Breite des Eintrags sowie die X- und Y-Position in Pixel definiert.
Der x-Wert ist der Abstand vom linken Dialog-Rand (plus ein fixer Wert). Der y-Wert ist die vertikale Distanz. Die untersten Elemente haben die kleinsten y-Werte.
Für jede neue Gruppe muss ein anderes Kürzel benutzt werden.
In der Textkette können auch Variablen eingebunden werden. Das geschieht (wie unten gezeigt) mithilfe von &-Zeichen.
Nicht ganz einfach ist das Vorbereiten eines Strings, welcher in einem Popup-Menü verwendet wird. Ist eine Liste immer dieselbe, können die einzelnen Artikel in die config-String-Zeilen gesetzt werden. Wenn aber die Liste dynamisch geändert werden soll, muss man sie im voraus umwandeln.
Also: Liste holen, dann die AppleScript's text item delimiters definieren, bestehend aus Return, Kürzel, Punkt, option und dem Gleichheitszeichen.
In der nächsten Zeile wird die Liste in einen String verwandelt und die AppleScript's text item delimiters wieder als leerer String definiert.
Die Variable
defaultItem wird benutzt werden, um die Vorgabewahl im Dialog zu bestimmen.
Diese config-Textkette wird dem Handler pashuaRun() übergeben, welcher den Dialog anzeigt. Das Ergebnis wird der Variablen
pashuaResult übergeben. Daraus können mithilfe der Kürzel die Entscheidungen des Anwenders geholt werden.
Für den Abbruch-Button wurde das Kürzel
can (= cancel = Abbruch) benutzt. Wenn dessen Ergebnis "1" ist, dann ist dieser Button betätigt worden und in der Folge bricht man die Ausführung mit
error number -128 ab.
Sonst werden die einzelnen Werte so geholt:
Wenn es ein verwendbarer String ist, kann man ihn direkt übernehmen. Bei einer Checkbox wird es "0" (= nicht aktiviert) oder "1" sein (= aktiviert). Da kann man ein entsprechendes Schlüsselwort zuweisen.
Bei Eingaben von Zahlen tut man gut daran, zu prüfen, ob es wirklich Ziffern sind.
Hier nun das ganze Script:
Wie gesagt, es soll nur aufzeigen, wie der Code zum Anzeigen und Auswerten eines Dialoges aussehen kann. Es gibt noch weitere Möglichkeiten, welche der Pashua-Dokumentation zu entnehmen sind.
Gruss, Hans