2016-05-12 2 views
1

Здесь довольно простая проблема, но у меня нет опыта AppleScript.AppleScript: Как вернуться в предыдущий диалог/список?

Составил список с несколькими вариантами выбора и при условии/затем условиях. Сделал выбор, чтобы отобразить диалог с одной кнопкой, которая вернет вас в список. Я знаю, что в AppleScript нет «идти в линию», так что было бы лучшим способом сделать это?

Суть того, что я хочу:

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 

Как я вернуться к списку здесь? Я не могу переписать «выбрать из списка». Есть ли

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

способ сделать это?

+0

Я считаю, что вы ищете является рекурсия. Создайте метод для вашего кода, в рамках метода, если ответ «Назад», вызовите метод еще раз. – ThrowBackDewd

ответ

0

Я считаю, что это то, что вам нужно. Я старался не модифицировать свой оригинальный код много, но я думаю, что есть некоторые вещи, которые вы могли бы улучшить в нем. Например вы позволяете множественный выбор, но вы не имеете способ обработки, если они выбирают оба А & 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

Спасибо! Работал как шарм! 'on chooseServer()' сделал трюк. Я не вижу необходимости в беге? Работает без него? Что касается множественного выбора; я никогда не сталкивался с какими-либо проблемами, делающими это по-своему. У меня 12 разных монстров. Угадайте, это просто работает, если все в порядке? Как еще я могу решить несколько вариантов? Недопустимо описание 'on error'you. Я уже получаю уведомление, если сбой. – Atle

Смежные вопросы