TOP/拡張スクリプト/チュートリアル - 右クリックメニュー

チュートリアル - 右クリックメニュー

BMX2WAV 本体、 BMX2WAV Searcher はエントリを右クリックした際に、 「スクリプト関数を実行する」メニューがあります。 これはエントリを引数にスクリプトで定義された関数を呼び出す機能で、 ユーザにより変更・追加することが可能になっています。

ここではスクリプトを編集することで、この機能を追加する方法について説明しています。

スクリプトファイルを追加する

BMX2WAV ではユーザが記述するスクリプトは bmx2wav.nut になります。 このファイルは初期段階では存在しないのでユーザが作成する必要があります。

絶対パスをメッセージボックスで表示するメニューを追加する

エントリの絶対パスを Main.Entry クラスまたは Searcher.Entry クラスから取得して、 それをメッセージボックスで表示するメニューを追加します。

まず登録するオブジェクトを作成します。登録するスロット name に名前(string)、 スロット execute に引数にMain.Entry クラスまたは Searcher.Entry クラスを受け取る 関数が登録されているテーブルまたはインスタンスになります。 今回はテーブルを使用します。

ファイル bmx2wav.nut に以下を追加します。

local full_path = {
  name = "絶対パスの表示",
  function execute( entry ) {
    MessageBox.Ok( entry.path, "エントリの絶対パス", MessageBox.Icon.Information );
  }
};

これでローカル変数 full_path にオブジェクトが作成されました。

次にこのオブジェクトを登録します。 BMX2WAV 本体の場合は Main テーブルの スロット entry_processors がそのメニューを構成する箇所になっています。

スロット entry_processorsSubMenu インスタンスになっており、 そこの items にオブジェクトを追加することで登録が完了するようになっています。

ファイル bmx2wav.nut に以下のように追加編集します。

local full_path = {
  name = "絶対パスの表示",
  function execute( entry ) {
    MessageBox.Ok( entry.path, "エントリの絶対パス", MessageBox.Icon.Information );
  }
};
// 以下を追加
Main.entry_processors.items.append( full_path );

編集した後に BMX2WAV を起動してファイルをドラッグ&ドロップした後に 右クリックでメニューを表示して、「スクリプト関数を実行する」メニューを開くと、 「絶対パスの表示」メニューが追加されている事、それを選択することで 絶対パスがメッセージボックスで表示されます。

階層メニューの作成

「スクリプト関数を実行する」メニューでは階層構造を構成することができます。 それを構成する方法についてです。

BMX2WAV 本体の場合 Main.entry_processorsSubMenu インスタンスを登録することでメニューが構成されますが、 SubMenu インスタンスの items (配列)には SubMenu インスタンスも入れる事ができます。 これによりメニューの階層構造が構成されます。

メニューのサブメニューとして「表示」を追加して、そのメニューに先ほど作成した 「絶対パスの表示」メニューを表示するにはスクリプトに以下のように記述します。

local full_path = {
  name = "絶対パスの表示",
  function execute( entry ) {
    MessageBox.Ok( entry.path, "エントリの絶対パス", MessageBox.Icon.Information );
  }
};
// 以下のように編集
local sub = SubMenu( "表示", [] );
sub.items.append( full_path );
Main.entry_processors.items.append( sub );

これで BMX2WAV を起動すれば、メニューの階層構造が構成されて表示されます。

TOP/拡張スクリプト/チュートリアル - 右クリックメニュー