## 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 | IsEqualTo | RegisterCommand | RegisterConverterEvent
RegisterEvent | RegisterFilter | RegisterMenu | RegisterOperator
RegisterProperty | RegisterShader | RegisterShaderLanguageParser | RegisterTimerEvent

### Properties

Application | Author | Categories | Email
Filename | FullName | Help | Language
Major | Minor | Name | NestedObjects
Origin | OriginPath | Parent | Type
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