PluginRegistrar

Object Hierarchy | Related C++ Class: PluginRegistrar

Inheritance

SIObject
  PluginRegistrar

Introduced

4.0

Description

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

When XSI 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 XSI 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 About the XSI Callback Hosts). The information registered by the plug-in can be accessed through the Plugin object.

Methods

IsClassOf

IsEqualTo

RegisterCommand

RegisterConverterEvent

RegisterEvent

RegisterFilter

RegisterMenu

RegisterOperator

RegisterProperty

RegisterTimerEvent

 

 

Properties

Application

Author

Categories

Email

Filename

FullName

Help

Language

Major

Minor

Name

NestedObjects

Origin

OriginPath

Parent

Type

URL

 

 

 

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 XSI
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

About the XSI Callback Hosts



SOFTIMAGE|XSI v6.01     

Return to Softimage XSI Index