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;
}