//--------------------------------------------------------------------
// This example shows how to define and load a plug-in in Softimage
//
// README: Copy and paste the example into the script editor
// and run (F5).
//--------------------------------------------------------------------
function ExLoadPluginDemo(filename)
{
// manually load the plugin
var oPlugin = Application.LoadPlugin( filename );
// Display the plug-in information
Application.LogMessage( "Name: " + oPlugin.Name );
Application.LogMessage( "Author: " + oPlugin.Author );
Application.LogMessage( "Major: " + oPlugin.Major );
Application.LogMessage( "Minor: " + oPlugin.Minor );
Application.LogMessage( "Language: " + oPlugin.Language );
Application.LogMessage( "Filename: " + oPlugin.Filename );
Application.LogMessage( "URL: " + oPlugin.URL );
Application.LogMessage( "Email: " + oPlugin.Email );
Application.LogMessage( "Help: " + oPlugin.Help );
Application.LogMessage( "OriginPath: " + oPlugin.OriginPath );
Application.LogMessage( "Categories: " + oPlugin.Categories.toArray().join(",") );
Application.LogMessage( "Loaded: " + oPlugin.Loaded );
// The above script logs the following results:
//INFO : Name: XSIApplication.LoadPlugin Example
//INFO : Author: Softimage Co.
//INFO : Major: 1
//INFO : Minor: 0
//INFO : Language: JScript
//INFO : Filename: [userpath]\Addons\XSISDKDocExamples\Application\Plugins\ExXSIApplicationLoadPlugin.js
//INFO : URL: www.softimage.com
//INFO : Email: xsi@softimage.com
//INFO : Help: [factorypath]\Addons\XSISDKDocExamples\Application\Plugins\doc\ExXSIApplicationLoadPlugin.html
//INFO : OriginPath: [userpath]\Addons\XSISDKDocExamples\Application\Plugins\
//INFO : Categories: Demo
//INFO : Loaded: True
}
function XSILoadPlugin( in_reg )
{
in_reg.Name = "XSIApplication.LoadPlugin Example";
in_reg.Author = "Softimage Co.";
in_reg.Major = 1;
in_reg.Minor = 0;
in_reg.URL = "www.softimage.com";
in_reg.Email = "xsi@softimage.com";
in_reg.Categories = "Demo";
// generate help files
GeneratePluginHelpFile(in_reg);
return true;
}
function GeneratePluginHelpFile( in_reg )
{
var fso = XSIFactory.CreateActiveXObject("Scripting.FileSystemObject");
var pluginfolder = fso.GetParentFolderName( in_reg.filename );
var helpfolder = fso.BuildPath( pluginfolder, "Doc" );
if ( ! fso.FolderExists(helpfolder ) )
{
fso.CreateFolder(helpfolder);
}
var helpfilename = fso.GetBaseName(in_reg.filename);
var helpfile = fso.BuildPath( helpfolder, helpfilename + ".html" );
var file = fso.CreateTextFile ( helpfile );
file .WriteLine( "<html>" );
file .WriteLine( "<head>" );
file .WriteLine( "\t<title>" + in_reg.name + "Help</title>" );
file .WriteLine( "</head>");
file .WriteLine( "<body>");
file .WriteLine( "\t<p>description of "+in_reg.name+" plugin</p>" );
file .WriteLine( "</body>" );
file .WriteLine( "</html>" );
file.close();
}
//--------------------------------------------------------------------
// Code to bootstrap example into system
//--------------------------------------------------------------------
function ExampleSourceCode()
{
return "// XSISDK Doc Example\n" +
GeneratePluginHelpFile.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 = "ExXSIApplicationLoadPlugin";
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();
}
ExLoadPluginDemo( filename );
} |