PluginRegistrar

Object Hierarchy | Related C++ Class: PluginRegistrar

Inheritance

SIObject

PluginRegistrar

Introduced

v4.0

Description

The PluginRegistrar object is used by plug-in modules for registering plug-in items in Softimage along with other general information. The object is created by Softimage and contains information such as the directory where the plug-in is being loaded/unloaded and the filename of the plug-in.

When Softimage starts up, a PluginRegistrar object is created for each plug-in to load and passed to the XSILoadPlugin function entry point exposed by the plug-in. The information gathered by Softimage is used for creating the plug-in items when required by the user.

When a plug-in is unloaded, a PluginRegistrar object is created for this particular plug-in and passed to the XSIUnloadPlugin function entry point exposed by the plug-in (see Callbacks for Self-Installing Plug-ins). The information registered by the plug-in can be accessed through the Plugin object.

Methods

IsClassOf operator IsEqualTo operator RegisterCommand RegisterConverterEvent
RegisterEvent RegisterFilter RegisterMenu RegisterOperator
RegisterProperty RegisterShader operator RegisterShaderLanguageParser operator RegisterTimerEvent

Properties

Application Author Categories Email
Filename FullName operator Help Language
Major Minor Name operator NestedObjects
Origin OriginPath Parent Type operator
URL UserData    
       

Examples

JScript Example

/*--------------------------------------------------------------------------
	This example demonstrates the how to the use PluginRegistrar object
	README: Copy and paste the example into the script editor and run (F5).
	The filter will now be listed in the Scene Explorer filter list when 
	the "Source/Clips" view context is selected.
--------------------------------------------------------------------------*/
// This function is required to register a plug-in in Softimage
function  XSILoadPlugin( in_reg )
{
	Application.LogMessage( "PluginRegistrar XSILoadPlugin called" );
	// register plug-in information with the PluginRegistrar object
	in_reg.Author = "Softimage Co." ;
	in_reg.Name = "PluginRegistrar Example";
	in_reg.Help = MakeHTMLPage();
	in_reg.URL = "www.softimage.com";
	in_reg.Email = "webmaster@softimage.com";
	//  the version number of this plug-in
	in_reg.Major = 1;
	in_reg.Minor = 0 ;
	Application.LogMessage( "This plug-in language: " + in_reg.Language );
	// register the cone filter plug-in item 
	in_reg.RegisterFilter( "ConePrimitive", siFilterObject );
	return true;
}
// This non-mandatory function is called when the plug-in is unloaded 
function  XSIUnloadPlugin( in_reg )
{
	Application.LogMessage( "PluginRegistrar XSIUnloadPlugin called" );
	Application.LogMessage( "Name: " + in_reg.Name );
	Application.LogMessage( "Author: " + in_reg.Author);
	Application.LogMessage( "Major: " + in_reg.Major);
	Application.LogMessage( "Minor: " + in_reg.Minor);
	Application.LogMessage( "Language: " + in_reg.Language);
	Application.LogMessage( "URL: " + in_reg.URL);
	Application.LogMessage( "Email: " + in_reg.Email);
	Application.LogMessage( "Help: " + in_reg.Help);
	return(true);
}
function  ConePrimitive_Match( in_context )
{
	var obj = in_context.GetAttribute("Input");
	return obj.IsKindOf( siConePrimType );
}
function  MakeHTMLPage()
{
	// Build the filename + path
	var sHelpFileName = XSIUtils.BuildPath( InstallationPath( siUserPath ), "Data", "HelpMe.html" );
	// Create a standard hello world script file
	fso = XSIFactory.CreateActiveXObject( "Scripting.FileSystemObject" );
	var fHWFile = fso.CreateTextFile( sHelpFileName );
	fHWFile.WriteLine( "<html>" );
	fHWFile.WriteLine( "<head>" );
	fHWFile.WriteLine( "\t" + "<title>Help Page for Testing PluginRegistrar</title>" );
	fHWFile.WriteLine( "</head>");
	fHWFile.WriteLine( "<body>");
	fHWFile.WriteLine( "\t" + "<p>Help! I//m trapped inside this HTML code!</p>" );
	fHWFile.WriteLine( "</body>" );
	fHWFile.WriteLine( "</html>" );
	fHWFile.Close();
	// Return the name of the new command
	return sHelpFileName;
}
//--------------------------------------------------------------------
// Code to bootstrap example into system
//--------------------------------------------------------------------
function ExampleSourceCode()
{
	return "//XSISDK Doc Example\n" +
		ConePrimitive_Match.toString() + "\n" + 
		MakeHTMLPage.toString() + "\n" + 
		XSIUnloadPlugin.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 		= "ExPluginRegistrar";
	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);	
	}
}

See Also

XSIApplication.Plugins Callbacks for Self-Installing Plug-ins