如何访问/嵌入Finder功能?

时间:2009-10-08 10:19:50

标签: cocoa macos finder

是否有可能将Finder功能嵌入到cocoa应用程序中,现在Finder本身就是可可(假设应用程序仅在雪豹中运行)?

我的意思是将文件浏览器窗格作为应用程序的一部分,实际浏览文件系统本身(在另一个窗格中编辑),但不编写Finder的所有功能。谢谢!

2 个答案:

答案 0 :(得分:5)

Finder本身只是一个应用程序。它不是组件库,也不是框架。虽然您无法在应用程序中“嵌入”Finder功能,但您可以影响Finder功能并调用Finder功能。

首先,您可以将文件夹操作附加到文件夹。当用户对文件夹的内容执行某些操作时会触发这些操作 - 例如,他们将文件放入其中。你在Finder中进行了设置。如果你想要与Finder交互,你应该学习一点AppleScript

其次,由于Finder支持AppleEvents,因此您可以使用AppleScript影响Finder。请查看My First AppleScriptMy First AppleScript Part II,了解如何执行此操作。以下是AppleScript Overview: Scripting with AppleScript中更深入的信息。这是一些More Finder Scripting

第三,还支持使用Automator(Mac OS X 10.5),通过单击按钮为Finder开发复杂功能的方法。您还可以在Mac OS X 10.6(“Snow Leopard”)中开始在Automator中创建服务。请查看Automator and Finder Actions in Mac OS X 10.6,了解后一种技术。

即使Finder窗口本身不是可嵌入的组件,如果你真的想提供笔,打印,删除,复制等文件/文件夹,并从文件夹导航到文件夹,你可以开发一个简单的文件夹浏览器在你的应用程序

只要您没有将网站设置为模仿查找程序或复制其所有功能,这只是我提到的必要基础知识,这不应该是一项大量的工作。

然而,您需要知道如何编程Macintosh - 而不仅仅是使用AppleScript。执行此操作的常规方法是学习Objective-C编程语言和Cocoa框架。您需要熟悉使用模型 - 视图 - 控制器架构编写应用程序。

您将创建一个名为MyFile的NSObject子类,以及一个名为MyFolder的集合类的子类。当应用程序创建浏览Windows时,每次应用程序激活(成为最前面的应用程序)时,您都会刷新浏览菜单的内容。

您可以在菜单栏中放入一个菜单,其中包含命令:打开,打印,删除,复制。当用户执行其中一个命令时,您的应用程序会自行执行相应的操作或将请求发送给Finder。完成操作后,您将刷新当前显示的文件夹的浏览窗口,或者如果用户导航到其他文件夹,则刷新新显示的文件夹。

如果您熟悉设计模式,面向对象编程和一般框架 - 阅读Cocoa Design Patterns将极大地加速您的学习过程。

这些是您可以用来利用Finder的某些功能的各种技术。当您查看这些内容时,我建议您清楚地了解这会给您的应用程序用户带来哪些好处。写下此功能的总体目标是什么,以及您希望支持哪些命令,将使您更容易选择开发它的路径。

用户始终可以通过单击按钮单击Finder文件夹窗口,因为Finder始终在运行。因此,请避免简单地复制该功能。专注于为用户提供的好处。确保您确实处理了用户更新显示其他应用程序内容的文件夹的情况,然后切换回您的应用程序。

答案 1 :(得分:0)

不,他们没有让Finder成为框架的主机,比如预览。你还是要自己写。