Init (Menu)

Description

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.

Applies To

Standard and Contextual Menus

Syntax

// C#
public class <menu_name>
{
   public bool Init( Context in_ctxt )
   {
       ...
   }
}

 

// C++
CStatus <menu_name>_Init( CRef& in_context )
{
   ...
}

// JScript
function <menu_name>_Init( in_context )
{
   ...
}

# Python
def <menu_name>_Init( in_context ):
   ...

' VBScript
Function <menu_name>_Init( in_context )
   ...
End Function

# PerlScript
sub <menu_name>_Init 
{
   my $in_context = shift; 
}

<menu_name> is the name specified in the call to PluginRegistrar.RegisterMenu, with any spaces removed.

Parameters

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 .

Examples

JScript Example

// 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++ Example

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

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

XSIPLUGINCALLBACK CStatus XSIUnloadPlugin( const PluginRegistrar& in_reg )
{
   CString strPluginName = in_reg.GetName();
   Application().LogMessage(strPluginName + L" has been unloaded.");
   return CStatus::OK;
}

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

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

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

See Also

Menu Item Callbacks

Menu Callbacks



Autodesk Softimage v7.5