【问题标题】:How to access / embed Finder functionality?如何访问/嵌入 Finder 功能?
【发布时间】:2009-10-08 10:19:50
【问题描述】:

既然 Finder 本身就是可可(假设该应用只能在雪豹中运行),是否可以在可可应用中嵌入 Finder 功能?

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

【问题讨论】:

    标签: cocoa macos finder


    【解决方案1】:

    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

    第三,还支持开发方法,让 Finder 使用 Automator (Mac OS X 10.5) 只需单击按钮即可为用户执行复杂的操作。您还可以在 Automator 中创建服务,从 Mac OS X 10.6(“Snow Leopard”)开始。查看Automator and Finder Actions in Mac OS X 10.6 了解后一种技术的介绍。

    尽管 Finder 窗口本身不是一个可嵌入的组件,但如果您真的想提供笔、打印、删除、复制等文件/文件夹以及从文件夹导航到文件夹的能力,您可以开发一个简单的文件夹应用程序中的浏览器。

    只要您不将您的网站设置为模仿查找器或复制其所有功能(仅是我提到的基本基础知识),执行此操作不应该是大量工作。

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

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

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

    如果您熟悉设计模式、面向对象编程和一般框架 - 阅读 Cocoa Design Patterns 将大大加快您的学习曲线。

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

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

    【讨论】:

      【解决方案2】:

      不,他们并没有让 Finder 成为一个框架的宿主,比如 Preview。你还是得自己写。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 2021-11-06
      • 2020-12-05
      • 2020-12-07
      • 2020-02-14
      相关资源
      最近更新 更多