« SceneObject のイベントフロー周りを少し細かく実装してみました | メイン | FlashDevelop のプラグインを作ってみる:試作 »

2009年1月26日

[FlashDevelop] FlashDevelop のプラグインを作ってみる:準備~導入

FlashDevelop のプラグインの作り方をメモ。

■参照


■導入

まだ、僕自身知識が曖昧なので、間違ってる部分もあるかと思います。ご注意ください。

FlashDevelop は Visual C# で出来ています。
上のリンク先から Visual C# 2008 Express をインストールしておきます。
また、同じく Google Code から FlashDevelop のソースコードも入手しておきます。

使うのは FlashDevelop 3 なので、"FD3" ディレクトリ以下が、使用するソースコードになります。

プラグインディレクトリ
\FlashDevelop\FD3\External\Plugins\SamplePlugin
.csproj が Visual C# のプロジェクトファイルなので、上記ディレクトリに入っている "SamplePlugin.csproj" を開く。

プロジェクトを開くと「ソリューション エクスプローラ」というパネルが表示されています。
(FlashDevelop に UI が非常に似ているのでエディタの使い方は FlashDevelop を使っていれば分かりやすいと思う。)
この中に 3 つのプロジェクトが表示されています。
  • FlashDevelop - デバッグの実行時に使用される FlashDevelop そのもの
  • PluginCore - プラグインを作る上で必須となるコアライブラリ
  • SamplePlugin - 作成中のプラグイン
基本的に "FlashDevelop" と "PluginCore" を変更することはないと思う。

まずは試しにデバッグを実行してみる。
メニューから「デバッグ > デバッグ開始(F5)」で実行。
実行すると、FlashDevelop が起動して、SamplePlugin パネルが表示される。
表示されていない場合は、「View > SamplePlugin(Ctrl + F1)」で表示される。

このサンプルはアクティブな状態のドキュメントが切り替えられたときに、パネルにファイル名を表示するだけのものです。
試しに Ctrl + N で新規ファイルを開いて、タブを切り替えると動作が分かるかと思います。

デバッグの終了は、開いた FlashDevelop を閉じるか、 Shift + F5。

SamplePlugin 構成
SamplePlugin
    +- Properties/
    |    +- AssemblyInfo.cs
    +- 参照設定/
    +- Resources/
    |    +- en_US.resX
    |    +- LocaleHelper.cs
    |
    +- PluginMain.cs
    +- PluginUI.cs
    +- Settings.cs

AssemblyInfo.cs
作成するプラグインに関する情報の定義
書き出したファイル(.dll)のプロパティ開いたときに表示される内容。

en_US.resX
メニューでの表示名、パネルのタイトル、設定での説明文が設定されたファイル。
あんまり意味が理解できてない。
多言語に対応できるようにするためにこうなってんのかな?
画像を埋め込んだりするのも、このリソースファイルってのを使うらしい。

LocaleHelper.cs
リソースファイル内の値を抜き出すためのクラスファイル
en_US.resX で設定した "名前" を GetString() に渡すと値が取得できる。

PluginMain.cs
SamplePlugin のメインクラス

PluginUI.cs
SamplePlugin パネルの UI を定義。
ツールボックスからコンポーネントをドラッグで追加とかできる。
Flex Builder と近い?(Flex Builderを使ったことがない・・・)
「表示 > コード(F7)」でソース表示。

Settings.cs
FlashDevelop の 「Tools > Program Settings...(F10)」で設定できる項目を定義する。
開くと "Plugins" のところに "SamplePlugin" が表示されている。その中の設定。

■ちょろっとソースのメモ
PluginMain.cs
//現在開いてるドキュメントのエディタへの参照
ScintillaNet.ScintillaControl sciControl = PluginBase.MainForm.CurrentDocument.SciControl;

//現在開いてるドキュメントのテキストを参照
String text = sciControl.Text;

//現在のキャレットの位置にある単語を取得
String word = sciControl.GetWordFromPosition(sciControl.SelectionStart);


FlashDevelop に適用する
メニュー下の「ソリューション構成」(FlashDevelop で Debug と Release の切り替えを行うコンボボックスみたいなとこ)を "Debug" から "Release" に変更して、ビルド > ソリューションのビルド(F6)を実行する。

SamplePlugin ディレクトリ内に obj ディレクトリが作られて、その中の Release ディレクトリに SamplePlugin.dll が作成される。

\Program Files\FlashDevelop\Plugins
FlashDevelop の "Plugins" ディレクトリ内に生成された.dll ファイルをコピーして、FlashDevelop を起動すると使えるようになります。


FlashDevelop を使って AS3 をごりごり書いてる人は、C# のソース見れば大体何をやってるのかはわかると思う。
ルールの違いが掴めれば、プラグインを作るぐらいのレベルであれば、 AS3 と大して変わらないと思う。

僕自身 C# に触れたのはこれがはじめて。


続く。

トラックバック(0)

このブログ記事を参照しているブログ一覧: FlashDevelop のプラグインを作ってみる:準備~導入

このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/521

コメントする


画像の中に見える文字を入力してください。

しばらく時間が経過すると、システム内部と表示されている文字内容に食い違いが発生するようなので、
投稿する前にページをリロードすることをお勧めします。
リロードしてもフォームの内容は維持されます。