2

使用 Apple OS X Cocoa 框架,如何在另一个进程的窗口上发布工作(向下滑动模式对话框)?

编辑:澄清一点:

我的应用程序是一个 Finder 扩展,用于进行 Subversion 版本控制 ( http://scplugin.tigris.org/ )。我的应用程序的一部分是插件(Finder 的上下文菜单项);然而,我的大部分应用程序都在一个单独的守护进程中。出于几个原因,我们选择将几乎所有代码都放入守护进程;该插件只定义了菜单本身,并将 Apple-Events 交给了守护进程。

有时,守护程序需要提示用户提供更多信息。它可以为此在屏幕上抛出一个窗口,但这是破坏性的(随机定位),在我看来,这里的工作流程是合法的模式,例如“选择一个文件,从菜单中选择‘提交’,提供提交评论,做手术。”

进程间合作(例如传递某种引用)是可以接受的:两个进程都是我的,但我想避免将工作表的代码绑定到主进程中。

4

4 回答 4

5

真的,听起来您正试图让您的进程间通信发生在视图级别,但这并不是 Cocoa 通常的工作方式。如果您将图层分开多一点,事情会容易得多。

为什么不想将工作表代码放入其他进程?它是视图代码,而视图代码本质上是特定于进程的。正确的做法可能是为您的插件代码添加一些通用的模态表支持,以及您的守护程序可以调用该代码的 IPC 调用。如果你能让它工作的话,试图将视图对象传送到远程进程将是一场噩梦。

您正在使用这种方法与框架作斗争。

于 2008-09-15T18:34:32.940 回答
2

您不能将工作表添加到另一个进程中的窗口,因为您最多只能对另一个进程中的窗口进行最受限制的访问。

于 2008-09-16T00:12:22.800 回答
1

请不要这样做。如果可能的话,使交互成为非模态的。尤其是在提交之类的事情中,在编写提交评论时能够浏览文件会更好。

OS X 确实有窗口组,但我认为它们不能(轻松)跨越应用程序。

于 2008-09-15T20:50:38.713 回答
1

另一件需要考虑的事情是,在 OS X 中,可以在同一个文件夹中打开多个 Finder 窗口(与 OS 9 不同)。即使您确实有足够的权限/API 将工作表添加到 Finder 窗口,但该窗口的模式不会阻止用户继续使用文件。

(作为 Mac 的老用户,我个人的看法是,这种交互方式会让我崩溃。)

于 2008-09-17T22:00:41.320 回答