【问题标题】:Is it possible to create new widget instances from within a Dashboard widget?是否可以从仪表板小部件中创建新的小部件实例?
【发布时间】:2010-11-04 20:42:12
【问题描述】:

这是question的后续。
简单地保留已配置的仪表板小部件实例似乎是不可能的。另一种方法是重新创建以前的实例。

是否可以从另一个小部件中创建新的仪表板小部件实例?我还没有找到关于这个主题的任何信息。

【问题讨论】:

    标签: javascript macos widget dashboard dashcode


    【解决方案1】:

    这是可能的,但我不知道如何。交付状态小部件允许您打开其自身的新副本。你可以在help image的截图中看到+号。

    【讨论】:

    • 这很有趣。他们正在创建这样的实例: if (widget.system('open -b com.apple.dock ~/Library/Widgets/"Delivery Status.wdgt"',null).status) { widget.system('open -b com.apple.dock /Library/Widgets/"Delivery Status.wdgt"',null).status;}
    【解决方案2】:

    我会怀疑...我认为这存在隐含的安全风险。

    查看 Apple 的代码可能会为您提供最好的服务。当您“更新”一个小部件时,您是更改标识符还是自动擦除首选项? (原谅我的无知 - 我不在我的 Mac 上,所以我无法调查自己)

    不过,除此之外,您可能还想在 'flow 或 Apple 论坛上查找“被更新擦除的仪表板小部件首选项”。电子邮件列表特别有用。

    【讨论】:

      【解决方案3】:

      AFAIK 不可能以任何受支持的方式(Apple 的文档中没有提到它,Dashboard 没有 AppleScript 字典)。

      但是,由于 Widget 可以访问文件系统并执行命令,因此可以破解它:修改 com.apple.dashboard.plist 并使用 killall Dock 重新启动 Dashboard(显然这不是优雅的解决方案)。

      【讨论】:

        【解决方案4】:

        我想也许您可以使用widget.system 调用小部件捆绑包上的open 命令并打开一个新副本,所以我将a simple widget 放在一起进行测试。不行。

        不过,我想知道,Objective-C 插件是否会更强大,或者这是否是 Dashboard 环境中的一个限制?

        【讨论】:

          【解决方案5】:

          嗯,这在早期版本的 OS X 中是可能的。在我制作的小部件中,我使用以下代码创建了一个新实例:

          widget.system('/bin/sh -c "open `pwd`"', null);
          

          不过,现在这段代码会重新安装小部件。

          【讨论】:

            【解决方案6】:

            这是不可能的。我之前也试过。

            【讨论】:

              猜你喜欢
              • 2017-10-08
              • 2012-01-29
              • 2017-06-28
              • 1970-01-01
              • 1970-01-01
              • 2014-04-02
              • 2016-11-22
              • 2013-11-05
              • 2014-04-01
              相关资源
              最近更新 更多