2016-05-12 5 views
1

Ein ziemlich grundlegendes Problem hier, aber ich habe keine AppleScript-Erfahrung.AppleScript: Wie zum vorherigen Dialog/Liste zurückzukehren?

Erstellt eine Liste mit Mehrfachselektionen und Wenn/Dann-Bedingungen. Hat eine Auswahl getroffen, um einen Dialog mit einer Schaltfläche anzuzeigen, die Sie zurück zur Liste führt. Ich weiß, dass es in AppleScript kein "Gehe zu Zeile" gibt, also was wäre der beste Weg, dies zu tun?

Die Essenz dessen, was ich will:

set A to "smb://XXX" 
set B to "smb://XXX" 
set servers to {"A", "B"} 

set chosen to (choose from list servers with title "Servers" with prompt "Connect to:" OK button name "Connect" cancel button name "Abort" with multiple selections allowed) as text 

try 
if (text of chosen) is "A" then 
    mount volume (A as string) 
end if 

if (text of chosen) is "B" then 
     beep 
     display dialog "Not available yet" as text with icon stop with title "Error" buttons {"Back"} default button 1 

Wie gehe ich hier in die Liste zurück? Ich kann die "Choose from list" nicht umschreiben. Gibt es eine

if result = {button returned:"Back"} then 

Art und Weise es zu tun?

+0

Ich glaube, was Sie suchen Rekursion ist. Erstellen Sie eine Methode für Ihren Code, rufen Sie die Methode innerhalb der Methode erneut auf, wenn die Antwort "Zurück" lautet. – ThrowBackDewd

Antwort

0

Ich glaube, das ist was du willst. Ich habe versucht, den ursprünglichen Code nicht viel zu verändern, aber ich denke, es gibt einige Dinge, die man verbessern könnte. Zum Beispiel Sie ermöglicht eine Mehrfachauswahl, aber Sie haben keine Möglichkeit der Handhabung, wenn sie beide wählen A & B.

on run 
    chooseServer() 
end run 

on chooseServer() 
    set A to "smb://XXX" 
    set B to "smb://XXX" 
    set servers to {"A", "B"} 

    set chosen to (choose from list servers with title "Servers" with prompt "Connect to:" OK button name "Connect" cancel button name "Abort" with multiple selections allowed) as text 

    if (text of chosen) is "A" then 
     try 
      mount volume (A as string) 
     on error e 
      display dialog e giving up after 5 
     end try 
    else if (text of chosen) is "B" then 
     beep 
     if button returned of (display dialog "Not available yet" as text with icon stop with title "Error" buttons {"Back"} default button 1) = "Back" then 
      chooseServer() -- recursive call 
     end if 
    end if 
end chooseServer 
+0

Danke! Lief wie am Schnürchen! Das 'on chooseServer()' hat den Trick gemacht. Ich kann die Notwendigkeit für den Lauf nicht sehen? Arbeitet ohne es? Wie für die Mehrfachauswahl; Ich habe noch nie irgendwelche Probleme dabei gehabt, es auf meine Art zu tun. Ich habe 12 verschiedene Halterungen. Ratet mal, es läuft nur die If's in Ordnung? Wie sonst würde ich mehrere Auswahlen ansprechen? Der 'bei Fehler' beschrieben wird nicht bevorzugt. Ich bekomme bereits eine Benachrichtigung, wenn es fehlschlägt. – Atle

Verwandte Themen