« FlashDevelop のプラグインを作ってみる:準備~導入 | メイン | JSCommands Plugin for FlashDevelop3 »
2009年1月27日
[FlashDevelop] FlashDevelop のプラグインを作ってみる:試作
FlashDevelop のプラグインの作り方をメモ。其の二。
■試しに一からこさえてみる。
■コードメモ
追記
参照先が間違っていたので書き換えました。
UserPluginDir の参照先は実際にはディレクトリが存在しなくて、プラグインのデータは Data ディレクトリ内に入ってるんだけども、これは仕様変更のなごりなんだろうか。
つづく
■試しに一からこさえてみる。
- # 準備
- FD3 ディレクトリ内に CustomPlugin という空のディレクトリを作っておく。
- # プロジェクトを作成する
- Visual Studio を立ち上げて、ファイル > 新しいプロジェクト(Ctrl + Shift + N)を選択。
開いたテンプレートの中から「空のプロジェクト」を選択して「OK」。
ファイル > Project1.sln の保存(Ctrl + S)を選択。
- 名前:TestPlugin
- 場所:先ほど作った CustomPlugin ディレクトリ
- ソリューション名:「ソリューションのディレクトリを作成」のチェックをはずしておく
ソリューション エクスプローラパネル内の「ソリューション `TestPlugin`(1 プロジェクト)」と表示されているアイコンを右クリック。
「追加 > 既存のプロジェクト」を選択して、\FD3\FlashDevelop\FlashDevelop.csproj
を選択する。続けて、
\FD3\PluginCore\PluginCore.csproj
も追加しておく。 - # ソリューションの設定
-
ソリューションのアイコンを選択した状態で、「右クリック > プロジェクトの依存関係」を選択。
「プロジェクト」に「TestPlugin」を選択。
「依存先」に「PluginCore」のみチェックを入れておく。
ソリューションパネルから、「FlashDevelop」プロジェクトを選択。
「右クリック > スタートアップ プロジェクトに設定」を選択しておく。(FlashDevelop プロジェクトが太字になる。)
「メニュー > ビルド > 構成マネージャ」を開く。
パネル下の「プロジェクトのコンテキスト」というテーブルから、「TestPlugin」の行の「プラットフォーム」箇所を選択(デフォルトではAny CPU になってると思う。)、「新規作成」を選択する。
ダイアログが開くと、以下の設定にして「OK」を押す。
- 「新しいプラットフォーム」:x86
- 「設定のコピー元」:Any CPU
- 「新しいソリューション プラットフォームを作成する」のチェックをはずす。
テーブル内の TestPlugin のプラットフォームの項目が「x86」に変わるが、これを元の「Any CPU」に戻してから、閉じる。
(なぜかこれをしないと出力先が設定しても正しく反映されない。)
以降、"FlashDevelop"、"PluginCore" のプロジェクトは触らないので、ツリーは閉じた状態にしといた方が見やすい。
- # TestPlugin プロジェクトの設定
-
ソリューションパネル内の「参照設定」を右クリック。「参照の追加」を選択。
開いたパネル内のタブから「参照」を選択。
ファイルの選択画面になるので、\FD3\PluginCore\Bin\Debug\PluginCore.dll
を選択。
続いて、再度「参照の追加」を開く。
「.NET」タブを選択。"System.Drawing", "System.Window.Forms" を追加する。(Ctrl + クリックで複数選択可)
ソリューションパネル内の「TestPlugin」プロジェクトアイコンを選択した状態で、「プロパティ」ボタンを押す。(もしくは、右クリックから「プロパティ」を選択。)
「アプリケーション」タブパネルの「対象のフレームワーク」を「ソリューションパネル内の「TestPlugin」プロジェクトアイコンを選択して」に設定する。
変更すると、一度パネルが閉じるので、再度プロパティパネルを開く。
アプリケーションタブパネルの以下の設定を変更しておく。
アセンブリ名:TestPlugin
規定の名前空間:TestPlugin
出力の種類:クラスライブラリ
ビルドタブパネルの出力先のパスを以下に変更する。
..\..\FlashDevelop\Bin\Debug\Plugins\
- # メインクラスの作成
-
ソリューションパネル内の「TestPlugin」プロジェクトアイコンを選択して、右クリック。
「追加 > クラス」を選択。
ファイル名を「PluginMain.cs」として追加。
以下のコードをソースの上部に追加。using PluginCore;
AS3 でいう、import だと思う。(includeかな?)
クラスの宣言を以下に変更。
public class PluginMain : IPlugin
太字のところが追記した箇所。
メインクラスは "PluginCore.IPlugin" インターフェースが定義されてないといけない。
「メニュー > 表示 > クラスビュー」で、クラスビューパネルを開く。
TestPlugin のツリーを開いていくと、「IPlugin」が出てくる。
さらに下層に、「IEventHandler」というインターフェースも出てくる。
これをクリックすると定義されたメソッド、プロパティが表示される。
PluginMain クラスは、これらのインターフェースを定義しているので、AS3 同様、実装してやる必要がある。
実装が必要なものは以下。
- void HandleEvent(object, PluginCore.NotifyEvent, PluginCore.HandlingPriority)
- void Dispose()
- void Initialize()
- string Author { get; }
- string Description { get; }
- string Guid { get; }
- string Help { get; }
- string Name { get; }
- object Settings { get; }
必要最小限実装するとこんな感じ。 - # 実行
-
「メニュー > デバッグ > デバッグ開始(F5)」を実行する。
FlashDevelop が開くが、実際には何も実装していないので、何も起きない。
FlashDevelop の 「Tools > Program Settings...(F10)」からSettings パネルを開く。
Plugins の中に「TestPlugin」が追加されていれば、正しくコンパイルできたことになる。
PluginMain.cs
■コードメモ
追記
参照先が間違っていたので書き換えました。
PathHelper.AppDir // C:\Program Files\FlashDevelop PathHelper.DocDir // C:\Program Files\FlashDevelop\Docs PathHelper.LibraryDir // C:\Program Files\FlashDevelop\Library PathHelper.BaseDir // C:\Documents and Settings\\Local Settings\Application Data\FlashDevelop PathHelper.DataDir // C:\Documents and Settings\ \Local Settings\Application Data\FlashDevelop\Data PathHelper.SettingDir // C:\Documents and Settings\ \Local Settings\Application Data\FlashDevelop\Settings PathHelper.SnippetDir // C:\Documents and Settings\ \Local Settings\Application Data\FlashDevelop\Snippets PathHelper.TemplateDir // C:\Documents and Settings\ \Local Settings\Application Data\FlashDevelop\Templates PathHelper.UserAppDir // C:\Documents and Settings\ \Local Settings\Application Data\FlashDevelop PathHelper.UserPluginDir // C:\Documents and Settings\ \Local Settings\Application Data\FlashDevelop\Plugins
UserPluginDir の参照先は実際にはディレクトリが存在しなくて、プラグインのデータは Data ディレクトリ内に入ってるんだけども、これは仕様変更のなごりなんだろうか。
つづく
トラックバック(0)
このブログ記事を参照しているブログ一覧: FlashDevelop のプラグインを作ってみる:試作
このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/522

コメントする