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