Hopefully someone is still around to answer this question:

I have written tons of scripts over the years.  One technique I use for 
creating non-modal dialogs is to create a view and populate it with a 
dynamically generated custom property so nothing needs to hang around at the 
scene root.  This allows the tool to be non-modal so the user can use it 
again and again without having to re-launch the tool or be locked into only 
using that tool.

example (JScript):

// Create a dynamic custom property not attached to anything in the scene.
var oCustomProperty = XSIFactory.CreateObject( "CustomProperty" );
oCustomProperty.Name = "MyPPG";

// Add a scalar parameter called "somevalue" with default value 0.5 and 
range [0...1]
oCustomProperty.AddParameter( "somevalue", siFloat, siClassifUnknown, 
siSilent, "", "", "", 0.5, 0, 1, 0, 1 );

// Create the layout, add the parameter, then rename it 'ratio'.
var oPPGLayout = oCustomProperty.PPGLayout;
oPPGLayout.Clear();

var oPPGItem = oPPGLayout.AddItem( "somevalue", "ratio", siControlNumber );
oPPGItem.LabelMinPixels = 90;

// define callbacks
oPPGLayout.Language = "JScript"
oPPGLayout.Logic = OnInit.toString() + somevalue_OnChanged.toString()

// embed the custom property into a 'view'
var oView = Application.Desktop.ActiveLayout.CreateView( "Property Panel" );
oView.SetAttribute( "targetcontent", oCustomProperty );

// set dimensions, then display the view as a non-modal dialog box
oView.Resize( 500, 300 );
oView.Visibility = true;

function OnInit()
{
    PPG.Refresh();
}

function somevalue_OnChanged()
{
    LogMessage( "Hey, put it back!", siComment );
}


I have some old C++ code I need to update and noticed it creates a custom 
property at the scene root, then uses InspectObj() to display the custom 
property as a modal dialog.  I want to convert it to use the above technique 
to make it non-modal and not litter the scene root.  I have already 
converted all the code and am successfully displaying the view, but clicking 
buttons, adjusting sliders, etc.. is not triggering the PPGEvent callback 
(equivalent to _OnInit() and _OnChanged() in scripting) to allow the tool to 
respond to user interaction.  The difficulty is with PPGLayout.PutLogic() 
(PPGLayout.Logic in scripting) which only accepts scripted code.

Question:  How do I define/register the callbacks for a non-modal custom 
property in a C++ (other than defining a self installing custom property 
plugin)?

Matt



------
Softimage Mailing List.
To unsubscribe, send a mail to softimage-requ...@listproc.autodesk.com with 
"unsubscribe" in the subject, and reply to confirm.

Reply via email to