在我的首选项窗格中定义锚名称

时间:2015-11-04 15:04:57

标签: macos cocoa applescript system-preferences nspreferencepane

我想启用AppleScript以显示我正在开发的自定义首选项窗格中的特定选项卡,以便这样做:

tell application "System Preferences" 
  reveal anchor "Foo" of pane id "com.example.preferences.Bar"
end tell

我无法在任何地方找到我的偏好设置窗格如何声明或指定"Foo"锚点或将其与任何特定标签视图项关联。

2 个答案:

答案 0 :(得分:1)

对于那些因我所做的挫折而来到这个问题的人,我在这里记录了能够获得自定义NSPreferencePane锚点的步骤。

最大的提示来自@geowar:

  

Google GPGPreferences.searchTerms字典揭示了一些线索的元素...(AFAIK,这在任何地方都没有记录......)

我第一次看到这个问题时忽略了这个评论,第二次看到GPGPreferences.m文件,更具体地说是revealElementForKey方法,但无法弄清楚功能如何实际上被叫了。

关键字为searchTerms

当我终于找到这篇文章SearchablePreferencePanes时,我才意识到这一点。

步骤:

  1. 向您的偏好设置窗格套件的NSPrefPaneSearchParameters添加Info.plist密钥,其值类似于MyPreferencePane
  2. 在Xcode项目中创建一个名为MyPreferencePane.searchTerms的文件。此文件的内容应该是包含字典的属性列表,该字典看起来类似于下面的字典(取自Sound首选项窗格)。这不仅允许用户在搜索指定的术语时获得首选项窗格的匹配,而且还生成首选项窗格的锚点
  3. 在您的类中实施继承自revealElementForKey(key: String)的{​​{1}}方法。当用户在搜索术语后打开窗格时以及在调用ScriptingBridge锚类的NSPreferencePane方法时,都会调用此方法。
  4. 轰!
  5. 享受生活。

    reveal()

答案 1 :(得分:0)

首先,您必须确保您搜索的内容是锚点,而不是其他类型的对象。 然后使用下面的脚本来获取每个锚名称:(在此示例中获取声音首选项的锚点将提供"输出","输入",...)

tell application "System Preferences"
activate
set current pane to pane id "com.apple.preference.sound"
get the name of every anchor of current pane
end tell