2

使用 Xcode 5.* 进行 cocoa-applescript automator 操作。界面是一个简单的弹出菜单,使用以下插座填充:

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

保存这个的正确方法是什么?我是否使用用户默认值?我的绑定当前都通过参数对象/控制器绑定。如果我应该使用用户默认值,有人可以提供设置用户默认值的示例代码,然后如何使用 Cocoa-Applescript 获取和设置新值?

如果我可以获取保存在某处的菜单项的名称字符串,我可以获取该字符串,然后在

on opened {}
    -- set up the action interface
end

在每次显示操作之前调用的处理程序。

感谢您的帮助,乔

4

1 回答 1

0

我的做法有点不同。我假设您指的是 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
  1. 我将Content Values绑定到 File's Owner 并在 Model Key Path 下放置menuChoices

  2. 然后,您只需将Selected Index绑定到 File's Owner 和 Model Key Path 类型menuSelection

默认值

在初始运行时,如果用户没有单击任何内容,menuSelection 将丢失值。因为我找不到解决这个问题的方法,所以我创建了一个条件来测试它并将其默认设置为第一选择(添加操作时显示的那个)。

当用户选择菜单选项之一时,会在连续运行时记住该选项。

于 2014-06-03T16:47:04.810 回答