Создание плагина QuickLook для текстовых файлов в Xcode 4.1 - PullRequest
2 голосов
/ 13 сентября 2011

Фон

Я изучаю Objective-C и Cocoa, и я подумал, что было бы неплохо создать простые программы, отвечающие моим потребностям.У меня уже есть солидный фон .NET C #, немного знаний Python и немного C.

Одно из моих «простых первых приложений», которое я пытался сделать, - это простой плагин QuickLook для Arduino файлы эскизов.Я думал, что это будет простая задача, так как эти файлы представляют собой простые текстовые C-подобные скрипты, единственная «другая» вещь - это расширение .pde.

Я загрузил проект на GitHub на ArduinoQuickLook в качестве ссылки (первый коммит содержит ванильный плагин-проект Xcode 4.1 QuickLook).

Что я нашел

Просматривая сеть, я нашел следующие ресурсы:

Какие у меня проблемы

  1. Оба они используют GeneratePreviewForURL.m и GenerateThumbnailForURL.m файлы, но при создании проектав Xcode 4.1 он создал GeneratePreviewForURL.c и GenerateThumbnailForURL.c (примечание .c вместо .m).

  2. И QLStephen, и QLColorCodeиспользуйте #import <Foundation/Foundation.h> в своих GeneratePreviewForURL.m и Создайте файлы ThumbnailForURL.m , но если я попытаюсь #import, это приведет ко многим ошибкам.(Может быть, потому что мои файлы .c вместо .m?)

  3. Мне не ясно, как я объявляю, какие файлы будет обрабатывать мой плагин, я понял, что мне нужно изменить ArduinoQuickLook / ArduinoQuickLook-Info.plist (строка 14), но что мне там написать?Что-то вроде cc.arduino.pde?

Ответы [ 2 ]

4 голосов
/ 07 июля 2012

Этот учебник по созданию плагина Quicklook объясняет все хорошо, но суммируя:

Точки 1 и 2 связаны - по какой-то странной причине шаблон плагина Quicklook содержит только .cфайлы - как таковой, импорт заголовка Obj-C Foundation.h вызывает ошибки.

Вы должны просто иметь возможность переименовывать файлы с .c на .m, и это будет работать как положено.

Мне непонятно, как я объявляю, какие файлы будет обрабатывать мой плагин

Вам нужно сделать две вещи - одна из них сказать, какой UTI (Uniform Type Identifier) ​​ваш плагинобрабатывает (например, 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 declaration означает, что тип доступен для использования всеми другими сторонами.Например, приложение, которое использует собственный формат документа, должно объявить его как экспортированный 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>
2 голосов
/ 29 ноября 2012

Вот источник проекта, который предоставляет файлы QuickLook for Processing и Arduino .pde: https://github.com/kroko/ProcessingQL Я знаю, что этому вопросу уже год, но этот проект может быть полезен для всех, кто пытается это сделать.

...