THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/12/2003 at 17:35, xxxxxxxx wrote:
Cinema 4D Version: 8.207
Platform: Windows ; Mac ;
Language(s) : C++ ;
I'm creating some UI elements for my plugin programmatically in [NodeData::]GetDDescription(). Everything works fine except the element defaults (using DESC_DEFAULT), which don't seem to be recognised.
Maybe I'm trying to use DESC_DEFAULT wrongly. What is it supposed to do? How else can one specify defaults for UI elements?
Unfortunately, I don't know which elements I will be creating until *after* [NodeData::]Read() has been called, so I can't initialise them in [NodeData::]Init(), and I haven't been able to find a way to detect whether a parameter has already been set in GetDDescription().
Is there a way to detect whether a parameter has already been set in GetDDescription()?
Here's more-or-less what I'm currently doing in GetDDescription()
MyPlugin::GetDDescription(GeListNode* node, Description* desc, LONG& flags)
flags |= DESCFLAGS_DESC_LOADED;
LONG dtype = DA_LONG;
BaseContainer descbc = GetCustomDataTypeDefault(dtype);
String name = "my param name";
// this seems to do nothing
descbc.SetLong(DESC_DEFAULT, 2); // for eg
// etc for DESC_MIN, DESC_MAX, DESC_MINSLIDER, DESC_MAXSLIDER
DescID descid(DescLevel(MY_PARAM_ID, dtype, MY_PLUGIN_ID));
if (!desc->SetParameter(descid, descbc, DescLevel(ID_OBJECTPROPERTIES)))
return SUPER::GetDDescription(node, desc, flags);
PS: I've found that CUSTOMGUI_LONGSLIDER uses DESC_MIN and DESC_MAX, not DESC_SLIDERMIN and DESC_SLIDERMAX. Is this intentional?
On 08/12/2003 at 05:44, xxxxxxxx wrote:
Couldn't you provide a default value in GetDParameter()?
On 08/12/2003 at 21:31, xxxxxxxx wrote:
> Couldn't you provide a default value in getdparameter()?
I hadn't known GetDParameter was an option... the doco for it is a little opaque to me! The only examples I can see for it are for using bitmaps. I've now done a couple of tests using GetDParameter but I can't see how I would use it to set a default.
1. it doesn't appear to get called until the UI is exposed, which may happen *after* the parameters are queried
2. no flags or other information appear to be set to indicate when a default should be provided (ie: how can I tell that the current value has not been set by reading from file or by the user?)
3. if I set no flags, the value doesn't get set to the default. if I *do* set flags, (using either DESCFLAGS_PARAM_SET or GET), the value can't be changed from the default, and any other value (eg read from hyperfile) is overwritten.
So all up, it's just as bad as trying to set the value to the default in GetDDescription.
I still wonder what DESC_DEFAULT is there for, if it's not for setting the default value of a parameter.
Here's more-or-less the code I tried for GetDParameter()
MyPlugin::GetDParameter(GeListNode* node, const DescID& id, GeData& t_data,
const LONG MY_DEFAULT = 2; // for eg
t_data = GeData(MY_DEFAULT);
flags |= DESCFLAGS_PARAM_GET; // um...
return SUPER::GetDParameter(node, id, t_data, flags);
How does one know when a parameter needs to be set to the default?