在Xcode 4.1中为文本文件创建QuickLook插件

时间:2011-09-12 20:04:05

标签: objective-c xcode4 quicklook

背景

我正在学习Objective-C和Cocoa,我认为创建简单的程序来满足我的需求将是一件好事。我已经拥有一个可靠的.NET C#背景,一些Python知识和一些C。

我尝试做的一个“简单的第一个应用程序”是一个简单的QuickLook插件,用于Arduino的草图文件。我认为这将是一个简单的任务,因为这些文件是纯文本C类脚本,唯一“不同”的东西是它们有.pde扩展名。

我在ArduinoQuickLook上的GitHub上传了项目作为参考(第一个提交包含一个vanilla Xcode 4.1 QuickLook插件项目)。

我找到了什么

环顾网络我找到了这些资源:

我有什么问题

  1. 他们都使用 GeneratePreviewForURL.m GenerateThumbnailForURL.m 文件,但是当我在Xcode 4.1中创建项目时,它创建了 GeneratePreviewForURL.c GenerateThumbnailForURL.c (注意.c而不是.m)。

  2. QLStephen和QLColorCode都在其 GeneratePreviewForURL.m GenerateThumbnailForURL.m 文件中使用#import <Foundation/Foundation.h>,但如果我尝试{{1}它会产生很多错误。 (也许是因为我的文件是.c而不是.m?)

  3. 我不清楚我如何声明我的插件将处理哪些文件,我知道我需要更改ArduinoQuickLook/ArduinoQuickLook-Info.plist(第14行),但我必须在那里写些什么?像#import

  4. 之类的东西

2 个答案:

答案 0 :(得分:4)

tutorial on creating a Quicklook plugin很好地解释了事情,但总结一下:

第1点和第2点是相关的 - 由于某些奇怪的原因,Quicklook插件模板只包含.c个文件 - 因此,导入Obj-C Foundation.h标头会导致错误。

您应该能够将文件从.c重命名为.m,它将按预期工作。

  

我不清楚如何声明我的插件将处理哪些文件

你需要做两件事 - 一个是说你的插件处理的UTI(统一类型标识符)(例如cc.arduino.pde),通过改变你提到的那一行:

<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>QLGenerator</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>cc.arduino.pde</string>
        </array>
    </dict>
</array>

...但您还必须描述UTI(主要是因为它可以将文件扩展名映射到该UTI)

声明UTI有两种略有不同的方式,[如“声明新的统一类型标识符”]描述:

  

您的UTI声明必须是导入或导出的:

     
      
  • 导出的UTI声明表示该类型可供所有其他方使用。例如,使用专有文档格式的应用程序应将其声明为导出的UTI。
  •   
  • 导入的UTI声明用于声明捆绑包不拥有的类型,但希望在系统上看到可用的类型。例如,假设视频编辑程序使用专有格式创建文件,其UTI在其应用程序包中声明。如果您正在编写可以读取此类文件的应用程序或插件,则必须确保系统知道专有UTI,即使实际的视频编辑应用程序不可用。为此,您的应用程序应在其自己的包中重新声明UTI,但将其标记为已导入的声明。
  •   

对于Quicklook插件,您可能需要一个“导入的”UTI声明,您可以在其中向Info.plist添加类似的内容:

<key>UTImportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>cc.arduino.pde</string>
        <key>UTTypeReferenceURL</key>
        <string>http://www.example.com</string>
        <key>UTTypeDescription</key>
        <string>Arduino PDE file</string>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.c-source</string>
            <string>public.text</string>
        </array>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>pde</string>
            </array>
        </dict>
    </dict>
</array>

答案 1 :(得分:2)

以下是为Processing和Arduino .pde文件提供QuickLook的项目的源代码:https://github.com/kroko/ProcessingQL我知道这个问题已有一年了,但是这个项目可能对尝试此操作的其他人有帮助。