For dynamic menus, this callback is fired every time the menu is accessed. For static menus, this callback is fired the first time the menu is accessed after the plug-in is loaded.
This is where you add items and commands to a menu.
public class <menu_name> { public bool Init( Context in_context ) { ... } } |
CStatus <menu_name>_Init( CRef& in_context ) { ... } |
function <menu_name>_Init( in_context ) { ... } |
def <menu_name>_Init( in_context ): ... |
Function <menu_name>_Init( in_context ) ... End Function |
sub <menu_name>_Init { my $in_context = shift; } |
<menu_name> is the name specified in the call to PluginRegistrar.RegisterMenu, with any spaces converted to underscores.
Parameter | Language | Type | Description |
---|---|---|---|
in_context | Scripting and C# | Context | Context.Source returns the Menu. |
C++ | CRef& | A reference to the Context object. Context::GetSource returns the Menu. |
// JScript code generated by the Command Wizard // Shows the Init callbacks for a command and for a menu function XSILoadPlugin( in_reg ) { in_reg.Author = "sblair"; in_reg.Name = "MyCommandPlugin"; in_reg.Email = ""; in_reg.URL = ""; in_reg.Major = 1; in_reg.Minor = 0; in_reg.RegisterCommand("MyCommand","MyCommand"); in_reg.RegisterMenu(siMenuTbGetPropertyID,"MyCommand_Menu",false,false); //RegistrationInsertionPoint - do not remove this line return true; } function XSIUnloadPlugin( in_reg ) { strPluginName = in_reg.Name; Application.LogMessage(strPluginName + " has been unloaded."); return true; } function MyCommand_Init( ctxt ) { var oCmd; oCmd = ctxt.Source; oCmd.Description = ""; oCmd.ReturnValue = true; var oArgs; oArgs = oCmd.Arguments; oArgs.Add("Arg0",siArgumentInput); return true; } function MyCommand_Execute( Arg0 ) { Application.LogMessage("MyCommand_Execute called"); // // TODO: Put your command implementation here. // return true; } function MyCommand_Menu_Init( ctxt ) { var oMenu; oMenu = ctxt.Source; oMenu.AddCommandItem("Run My Command","MyCommand"); return true; } |
// C++ code generated by the Command Wizard // Shows the Init callbacks for a command and a menu #include <xsi_application.h> #include <xsi_context.h> #include <xsi_pluginregistrar.h> #include <xsi_status.h> #include <xsi_argument.h> #include <xsi_command.h> #include <xsi_menu.h> using namespace XSI; SICALLBACK XSILoadPlugin( PluginRegistrar& in_reg ) { in_reg.PutAuthor(L"sblair"); in_reg.PutName(L"My_CppCommandPlugin"); in_reg.PutEmail(L""); in_reg.PutURL(L""); in_reg.PutVersion(1,0); in_reg.RegisterCommand(L"My_CppCommand",L"My_CppCommand1"); in_reg.RegisterMenu(siMenuTbGetPropertyID,L"My_CppCommand_Menu",false,false); //RegistrationInsertionPoint - do not remove this line return CStatus::OK; } SICALLBACK XSIUnloadPlugin( const PluginRegistrar& in_reg ) { CString strPluginName = in_reg.GetName(); Application().LogMessage(strPluginName + L" has been unloaded."); return CStatus::OK; } SICALLBACK My_CppCommand_Init( CRef& in_ctxt ) { Context ctxt( in_ctxt ); Command oCmd; oCmd = ctxt.GetSource(); oCmd.PutDescription(L""); oCmd.EnableReturnValue(true); ArgumentArray oArgs; oArgs = oCmd.GetArguments(); oArgs.Add(L"Arg0"); return CStatus::OK; } SICALLBACK My_CppCommand_Execute( CRef& in_ctxt ) { Context ctxt( in_ctxt ); CValueArray args = ctxt.GetAttribute(L"Arguments"); CValue Arg0 = args[0]; Application().LogMessage(L"My_CppCommand_Execute called"); // // TODO: Put your command implementation here. // // Return a value by setting this attribute: ctxt.PutAttribute( L"ReturnValue", true ); // Return CStatus::Fail if you want to raise a script error return CStatus::OK; } SICALLBACK My_CppCommand_Menu_Init( CRef& in_ctxt ) { Context ctxt( in_ctxt ); Menu oMenu; oMenu = ctxt.GetSource(); MenuItem oNewItem; oMenu.AddCommandItem(L"My_CppCommand",L"My_CppCommand",oNewItem); return CStatus::OK; } |