メニューへのコマンドの追加

 
 
 

Softimage のメニューから 1 つまたは複数のカスタム コマンドを使用できるようにするには、最初にカスタム メニューを登録し、次にそのカスタム メニューにコマンドを追加します。

カスタム メニューは、ほとんどのアプリケーションで用意されている標準的な[ファイル]、[編集]、および[ヘルプ]メニューと同じ意味を持つメニューではありません。 カスタム メニューは、Softimage が既存のメニューに挿入するコマンドのセットです。

カスタム メニューの登録

この XSILoadPlugin 関数は、Softimage のメイン メニューバーの[ヘルプ](Help)メニューに挿入される 2 つのカスタム メニューを登録します。

function XSILoadPlugin( in_reg )
{
	in_reg.Author = "Me";
	in_reg.Name = "MyCommands";

	// Register commands
	in_reg.RegisterCommand("MyCommand1","MyCommand1");
	in_reg.RegisterCommand("MyCommand2","MyCommand2");

	// Register a custom menu
	in_reg.RegisterMenu(
				siMenuMainHelpID,// Anchor point for the Help menu on the main menubar
					"MyCommands_Menu",	// Internal name for the Menu object
					false,					// DisplayAsSubmenu
					false					// Dynamic (if true, Init is called everytime menu opens)
				);

	// Register another menu as a submenu
	in_reg.RegisterMenu( siMenuMainHelpID, "MyCommands_SubMenu", true, false );

	return true;
}
  • RegisterMenu または RegisterMenu への最初の引数は、カスタム メニューを挿入する場所を指定するメニューのアンカー ポイントです。アンカー ポイント siMenuMainHelpID は、メイン メニューバーの[ヘルプ](Help)メニュー上を指定しています。

  • 2 番目の引数は、カスタム メニューの名前です。 この名前を使用して、メニューのコールバック関数に名前を付けます(MyCommands_Menu_Init など)。

  • 3 番目の引数は、コマンドを直接[ヘルプ]メニューに追加するのか、またはサブメニューに追加するのかを指定します。 たとえば、次のスクリーン ショットでは 2 つのカスタム メニューが示されています。 どちらのメニューにも同じコマンド(「My Command 1」と「My Command 2」)が含まれていますが、一方のメニューは DisplayAsSubmenu=false で追加され、もう一方のメニューは DisplayAsSubmenu=true で追加されています。

  • 4 番目の引数は、メニューが動的であるかどうかを指定します。 動的に設定すると、メニューが表示されるたびに、メニューのInitコールバックが呼び出されます。 これにより、メニューの内容を動的に変更できます。

コマンドの追加

コマンドをメニューに追加するには、カスタム メニューの Init コールバックを記述します。

// Init callback for the menu named "MyCommands_Menu"
function MyCommands_Menu_Init( ctxt )
{
	var oMenu;
	oMenu = ctxt.Source;

	// Add the commands to the menu
	oMenu.AddCommandItem(
			"My Command 1",// The text that appears on the menu
			"MyCommand1"// The command that is invoked by the menu item
			);

	oMenu.AddCommandItem( "My Command 2", "MyCommand2" );

	return true;
}

この Init コールバックは、コマンドをサブメニューに追加します。

// Init callback for the menu named "MyCommands_SubMenu"
function MyCommands_SubMenu_Init( ctxt )
{
	var oMenu;
	oMenu = ctxt.Source;

	// Set the text that appears on the Softimage menu for this submenu
	oMenu.name = "My Commands";

	// Add the commands
	oMenu.AddCommandItem("My Command 1","MyCommand1");
	oMenu.AddCommandItem("My Command 2","MyCommand2");

	return true;
}