ハルの総合コマンドエディタでプラグインを開発する方法 その2
前回 ハルの総合コマンドエディタでプラグインを開発する方法 その1
前回は処理のないプラグインを作成しました。
今回は実際になにか意味のあるプラグインを実装してみましょう。
Run()の中にプラグインの処理を書いていきます。
試しにハルの総合コマンドエディタのメインフォームのテキストを変えてみましょう。
using HaruPlugin; namespace テストプラグイン { public class Class1 : HaruPlugin.IPlugin { //ハルの総合コマンドエディタから受け取ったデータを格納しておく変数 private IPluginHost _host; //ここがプラグインの名前 public string Name => "テストプラグイン"; //ここがプラグインの説明 public string Description => "プラグインの説明テスト"; //ここがハルの総合コマンドエディタからフォームなどの情報を受け取るために必要な文 public IPluginHost Host { get => _host; set => _host = value; } //ハルの総合コマンドエディタ起動時に自動で実行されるかどうか public bool AutoRun => false; //プラグインが選択されたときに実行される処理 public void Run() { _host.MainForm.Text = "テスト表示"; } } }
このように記述しビルドし、ハルの総合コマンドエディタのプラグインタブで選択してみましょう。
どうでしょうか、メインフォームのテキストが指定した文字列に変わったかと思います。
このようにして、プラグインの処理を書いていくことになります。
今回は試しに、テキストボックスに入力したアイテムIDNoをもう一方のテキストボックスでアイテムIDNameとして出力するソフトを作ることにします。
まず、GUIを作成するため、ソリューションエクスプローラーからプロジェクトを右クリックし、追加からユーザーコントロールを選択します。
コントロール名を入力し(ここではUserControl1)、OKを押します。
できたユーザーコントロールに、以下のようにコントロールを設置してみます。
上の方のテキストボックスをダブルクリックし、コード画面へと移動。
このようになっていると思います
using System; using System.Windows.Forms; namespace テストプラグイン { public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { } } }
では、まずClass1からハルの総合コマンドエディタのホストデータを受け取るようにしましょう。
以下のように書き換えてください
using System; using System.Windows.Forms; namespace テストプラグイン { public partial class UserControl1 : UserControl { private HaruPlugin.IPluginHost _host = null; public UserControl1(HaruPlugin.IPluginHost Host) { InitializeComponent(); _host = Host; } private void textBox1_TextChanged(object sender, EventArgs e) { } } }
このようにすることで、Class1からハルの総合コマンドエディタの情報が含まれているHostデータを受け取ることができます。
次に、textBox1のTextプロパティの値が変わったときに呼ばれるtextBox1.TextChangedイベントの中にID変換の処理を書いていきましょう。
今回は、HaruPluginに含まれている、ID変換メソッドを使用します。
using System; using System.Windows.Forms; namespace テストプラグイン { public partial class UserControl1 : UserControl { private HaruPlugin.IPluginHost _host = null; public UserControl1(HaruPlugin.IPluginHost Host) { InitializeComponent(); _host = Host; } private void textBox1_TextChanged(object sender, EventArgs e) { textBox2.Text = _host.ItemID.GetIDName(textBox1.Text); } } }
できました。これでUserContol側の処理は完了です。もう一度Classコードタブに戻り、今度は先ほどのUserControlのインスタンスを作成し、ホストデータを渡してやる処理を書きます。
さらに、作成したUserControlインスタンスを、SetControl()メソッドでハルの総合コマンドエディタへ追加します。
using HaruPlugin; namespace テストプラグイン { public class Class1 : HaruPlugin.IPlugin { //ハルの総合コマンドエディタから受け取ったデータを格納しておく変数 private IPluginHost _host; //ここがプラグインの名前 public string Name => "テストプラグイン"; //ここがプラグインの説明 public string Description => "プラグインの説明テスト"; //ここがハルの総合コマンドエディタからフォームなどの情報を受け取るために必要な文 public IPluginHost Host { get => _host; set => _host = value; } //ハルの総合コマンドエディタ起動時に自動で実行されるかどうか public bool AutoRun => false; //プラグインが選択されたときに実行される処理 public void Run() { var control = new UserControl1(_host); _host.SetControl(control, "テスト"); } } }
完成しました。
ではこれをビルドしてハルの総合コマンドエディタで読み込んでみましょう。
いかがでしょうか。
IDNoの数字を書き換えると、対応したIDNameが表示されたかと思います。
結構お手軽にタブとコントロールを追加できましたね。
あとは自分なりに機能を持たせたり、見た目を変えたりしても面白いかもしれません。
また、わからないことがあれば私、ハルのTwitterにて質問を承っておりますので、お気軽にご質問ください。