Сохранить всплывающее окно выбора пользователя в пользовательском действии Automator
Использование Xcode 5.* для действия автоматизатора cocoa-applecript. Интерфейс - это простое всплывающее меню, которое заполняется с помощью розетки с:
tell thePopupMenu to removeAllItems()
tell thePopupMenu to addItemsWithTitles_(theList)
Когда действие используется в рабочем процессе (на самом деле Сервис), я хочу, чтобы в следующий раз оно было запущено и отображался диалог действия (у меня будет выбрано "Параметры: Показать при запуске"), я хочу, чтобы всплывающее меню изменило выбор до последнего, который был выбран. Прямо сейчас отображается первый элемент по умолчанию, хотя в последний раз, когда он запускался, пользователь выбрал другой элемент во всплывающем меню. Я думал, что мне нужно зафиксировать изменение во всплывающем меню с помощью обработчика Sent Action, а затем установить какой-то тип по умолчанию. У меня есть рабочий обработчик:
on thePopupMenuSentAction_(sender)
set popupValue to (popupSelectedValue of my parameters()) as string
-- save this selection somewhere???
end
Как правильно сохранить это? Я использую пользовательские настройки по умолчанию? Мои привязки на данный момент все связаны через объект / контроллер Parameter. Если я должен использовать пользовательские настройки по умолчанию, может ли кто-нибудь привести пример кода для настройки пользовательских настроек по умолчанию, а затем, как получить и установить новое значение с помощью Cocoa-Applescript?
Если я могу получить строку имени пункта меню, сохраненную где-то, я могу получить строку и затем изменить выбор всплывающего меню в
on opened {}
-- set up the action interface
end
обработчик, который вызывается непосредственно перед тем, как действие отображается каждый раз.
Спасибо за любую помощь, Джо
1 ответ
Я сделал мой немного по-другому. Я предполагаю, что вы имеете в виду то, что XCode называет "всплывающей кнопкой" (несколько вводит в заблуждение). Я не использовал параметры вообще, хотя это, вероятно, лучше для больших проектов. Посмотрите на код:
script Insert_Picture_into_Powerpoint_Slide_Show
property parent : class "AMBundleAction"
property menuChoices : {"Insert a Beginning", "Insert at End"}
property menuSelection : missing value
if (menuSelection as string) is "missing value"
set menuSelection to 0 as integer -- sets default value
end if
end script
Я привязал значения содержимого к владельцу файла и в разделе "Путь к ключу модели" поместил menuChoices.
Затем вы просто привязываете выбранный индекс к владельцу файла и для типа пути к ключу модели menuSelection.
Значения по умолчанию
При первом запуске, если пользователь ничего не нажимает, в menuSelection будет отсутствовать значение. Поскольку я не мог найти способ обойти это, я создал условное условие, которое проверяет это и устанавливает его на первый выбор по умолчанию (тот, который отображается при добавлении действия).
Когда пользователь выбирает один из пунктов меню, этот выбор запоминается при последовательных прогонах.