2

バックグラウンド

私は Objective-C と Cocoa を学んでおり、自分のニーズに応える簡単なプログラムを作成するのはいいことだと思いました。私はすでに .NET C# のバックグラウンドをしっかりと持っており、Python の知識もあり、C も少し持っています。

私がやろうとした「最初の簡単なアプリ」の 1 つは、Arduinoのスケッチ ファイル用の簡単な QuickLook プラグインです。これらのファイルはプレーン テキストの C に似たスクリプトであるため、実行するのは簡単な作業だと思いました。唯一の「異なる」点は、拡張子が .pde であることです。

参照としてArduinoQuickLookのGitHub にプロジェクトをアップロードしました(最初のコミットには、標準の Xcode 4.1 QuickLook プラグイン プロジェクトが含まれています)。

私が見つけたもの

ネットを見回すと、次のリソースが見つかりました。

私の問題は何ですか

  1. どちらも GeneratePreviewForURL.m ファイルと GenerateThumbnailForURL.m ファイルを使用します Xcode 4.1 でプロジェクトを作成すると、GeneratePreviewForURL.cGenerateThumbnailForURL.cが作成されました(.m ではなく .c に注意してください)。

  2. QLStephen と QLColorCode はどちらも GeneratePreviewForURL.m ファイルと GenerateThumbnailForURL.m ファイルで使用ます#import <Foundation/Foundation.h>、これを使用しようとすると、多くのエラーが発生します。(ファイルが .m ではなく .c であるためでしょうか?)#import

  3. プラグインが処理するファイルを宣言する方法がわかりません。ArduinoQuickLook/ArduinoQuickLook-Info.plist (行 14) を変更する必要があることは理解しましたが、そこに何を書かなければなりませんか? みたいなcc.arduino.pde

4

2 に答える 2

4

Quicklookプラグインの作成に関するこのチュートリアルでは、物事をうまく説明していますが、要約すると次のようになります。

ポイント1と2は関連しています-なんらかの奇妙な理由で、Quicklookプラグインテンプレートには.cファイルしか含まれていません-そのため、Obj-CFoundation.hヘッダーをインポートするとエラーが発生します。

.cファイルの名前をからに変更できるはずです。そうすれば.m、期待どおりに機能します。

プラグインが処理するファイルをどのように宣言するかはわかりません

あなたは2つのことをする必要があります-1つはcc.arduino.pdeあなたが言及する行を変更することによってあなたのプラグインがどのUTI(Uniform Type Identifier)を処理するかを言うことです(例えば):

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

...ただし、そのUTIについても説明する必要があります(ほとんどの場合、ファイル拡張子をそのUTIにマップできるようにするため)

[「新しいUniformTypeIdentifiersの宣言」のように]UTIを宣言するには、わずかに異なる2つの方法があります。

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>
于 2012-07-07T19:02:49.230 に答える
2

処理用の QuickLook と Arduino .pde ファイルを提供するプロジェクトのソースは次のとおりです : https://github.com/kroko/ProcessingQL

于 2012-11-29T18:55:52.410 に答える