在自定义Automator操作中保存用户弹出选择

时间:2014-05-28 19:21:42

标签: objective-c xcode cocoa automator applescript-objc

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

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

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

感谢您的帮助, 乔

1 个答案:

答案 0 :(得分: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. 我将内容值绑定到文件所有者,并在模型关键路径下设置 menuChoices

  2. 然后,您只需将所选索引绑定到文件所有者,然后将模型密钥路径类型 menuSelection 绑定。

  3. 默认值

    在初始运行时,如果用户未单击任何内容,则menuSelection将缺少值。因为我无法找到解决方法,所以我创建了一个条件来测试它并默认将它设置为第一个选择(添加动作时显示的那个)。

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