PluginRegistrar.RegisterMenu

PluginRegistrar.RegisterMenu

説明

Softimage にカスタム Menu を登録します。メニューは、ユーザが UI から開いたときにだけロードおよび初期化されます。メニューの場所は、アンカーポイントによって指定されます(説明なリストについては siMenuAnchorPoints を参照)。

複数の場所に同じメニューを登録したり、同じ場所に複数のメニューを登録したりすることができます。メニューには、サブメニューまたは項目のフラットなリストを指定できます。また、動的なメニューも静的なメニューも使用できます。動的なメニューとは、表示されるたびに再構築されるもので、静的なメニューとは 1度しか構築されないものです。

カスタムメニューの作成の詳細については、「Menu」を参照してください。

C#構文

PluginItem PluginRegistrar.RegisterMenu( siMenuAnchorPoints in_menuID, String in_menuName, Boolean in_bDisplayAsSubmenu, Boolean in_bDynamicMenu );

スクリプト構文

oReturn = PluginRegistrar.RegisterMenu( Anchor, Name, [DisplayAsSubmenu], [Dynamic] );

戻り値

PluginItem

パラメータ

パラメータ タイプ 説明
Anchor siMenuAnchorPoints メニューの場所を指定します。
Name String 登録するカスタムメニューの名前。文字から開始し、英数字とアンダースコア(_)記号のみを使用する必要があります。

メニュー名にスペースが含まれている場合("My Custom Menu"など)は、メニューのコールバック関数ではスペースを削除する必要があります("MyCustomMenu_Init"など)。

メニューがサブメニューの場合(DisplayAsSubmenu == True)、またはメニューが Softimage のメインのメニューバーのトップレベルに追加される場合(Anchor == siMenuMainTopLevelID)、メニュー名はメニューキャプションとして使用されます。

トップレベルメニューのキャプションを変更することはできません。それ以外のすべてのメニューでは、Init コールバックで Menu.Name プロパティを設定してキャプションを変更できます。
DisplayAsSubmenu Boolean True の場合は、サブメニューとしてカスタムメニューを表示します。

デフォルト値: True

ダイナミック Boolean メニューを動的または静的に設定します。動的なメニューはメニューが開かれる前に必ず再構築されるのに対し、静的なメニューは一度しか構築されません。

デフォルト値: True

JScript の例

/*-------------------------------------------------------------------

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

	}

}

関連項目

Menu PluginItem Definition Callbacks for Menus