Softimage にカスタム Menu を登録します。メニューは、ユーザが UI から開いたときにだけロードおよび初期化されます。メニューの場所は、アンカーポイントによって指定されます(説明なリストについては siMenuAnchorPoints を参照)。
複数の場所に同じメニューを登録したり、同じ場所に複数のメニューを登録したりすることができます。メニューには、サブメニューまたは項目のフラットなリストを指定できます。また、動的なメニューも静的なメニューも使用できます。動的なメニューとは、表示されるたびに再構築されるもので、静的なメニューとは 1度しか構築されないものです。
カスタムメニューの作成の詳細については、「Menu」を参照してください。
PluginItem PluginRegistrar.RegisterMenu( siMenuAnchorPoints in_menuID, String in_menuName, Boolean in_bDisplayAsSubmenu, Boolean in_bDynamicMenu ); |
oReturn = PluginRegistrar.RegisterMenu( Anchor, Name, [DisplayAsSubmenu], [Dynamic] ); |
パラメータ | タイプ | 説明 |
---|---|---|
Anchor | siMenuAnchorPoints | メニューの場所を指定します。 |
Name | String |
登録するカスタムメニューの名前。文字から開始し、英数字とアンダースコア(_)記号のみを使用する必要があります。 メニュー名にスペースが含まれている場合("My Custom Menu"など)は、メニューのコールバック関数ではスペースを削除する必要があります("MyCustomMenu_Init"など)。 メニューがサブメニューの場合(DisplayAsSubmenu == True)、またはメニューが Softimage のメインのメニューバーのトップレベルに追加される場合(Anchor == siMenuMainTopLevelID)、メニュー名はメニューキャプションとして使用されます。 トップレベルメニューのキャプションを変更することはできません。それ以外のすべてのメニューでは、Init コールバックで Menu.Name プロパティを設定してキャプションを変更できます。 |
DisplayAsSubmenu | Boolean |
True の場合は、サブメニューとしてカスタムメニューを表示します。 デフォルト値: True |
ダイナミック | Boolean |
メニューを動的または静的に設定します。動的なメニューはメニューが開かれる前に必ず再構築されるのに対し、静的なメニューは一度しか構築されません。
デフォルト値: True |
/*------------------------------------------------------------------- This example shows how to register and implement a custom menu plug-in README: Copy and paste the example into the script editor and run (F5). The menu will install itself into the application's Window menu -------------------------------------------------------------------*/ function XSILoadPlugin( in_reg ) { in_reg.Author = "Softimage Co."; in_reg.Name = "PluginRegistrar.RegisterMenu Example"; // register the menu item in_reg.RegisterMenu( siMenuMainWindowID, "Window_Menu", false ); // "Sample menu has been installed in the Window menu" return true; } function Window_Menu_Init( in_ctxt ) { var oMenu = in_ctxt.source; oMenu.AddCallbackItem( "Sample", "OnWindowMenu"); } function OnWindowMenu( in_ctxt ) { var oMenuItem = in_ctxt.source; Application.LogMessage("OnWindowMenu: " + oMenuItem .name ); } //-------------------------------------------------------------------- // Code to bootstrap example into system //-------------------------------------------------------------------- function ExampleSourceCode() { return "// XSISDK Doc Example\n" + Window_Menu_Init.toString() + "\n" + OnWindowMenu.toString() + "\n" + XSILoadPlugin.toString(); } // if we are running from script editor save code to // examples addon folder in the user's directory. if (GetUserPref("ScriptingSessionActive")) { var ex_name = "ExPluginRegistrarRegisterMenu"; var ex_subfolder = "Plugins"; var ex_folder = "XSISDKDocExamples"; var ex_langsuffix = ".js"; CreateAddonDirectories( InstallationPath(siUserPath), ex_folder ); var fso = XSIFactory.CreateActiveXObject("Scripting.FileSystemObject"); var filename = XSIUtils.BuildPath( InstallationPath(siUserAddonPath), ex_folder, "Application", ex_subfolder, ex_name+ex_langsuffix ); if (!fso.FileExists(filename)) { var f = fso.CreateTextFile ( filename ); f.write( ExampleSourceCode() ); f.close(); Application.LoadPlugin(filename); } } |