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

Autodesk Softimage v7.5