On 09/07/2018 at 21:02, xxxxxxxx wrote:
Cinema 4D Version: R18
Platform: Windows ;
Language(s) : C++ ;
I want to have a drop down list that I can change on the fly with user data. The list is a list of image extensions and I would like to allow users to put in there own custom extensions and then add this to this list.
The user clicks on custom, enters a custom extension and this is saved to a user configuration file (I have everything up to this point working fine). Where I'm stuck is how I can populate this list with the saved data so that the user can see their custom extensions each time they open a file.
You can see the code if that makes anything clearer on my GitHub page for the project, the files of interest here are SMDLoader.cpp/.h and fsmdloader.res
Thank you in advanced to anyone who can help point me in the right direction !!
On 09/07/2018 at 22:33, xxxxxxxx wrote:
Here's what I did to fill a dropdown box with filenames and a custom entry
Bool DisplayMode::GetDDescription(GeListNode* node, Description* description, DESCFLAGS_DESC& flags)
// === CHECKER ===
// fill the dropdown with all available checker types
const DescID *singleid = description->GetSingleDescID();
DescID cid = DescLevel(CHECKER_TYPE, DTYPE_LONG, 0);
if (!singleid || cid.IsPartOf(*singleid, nullptr)) // important to check for speedup c4d!
// read the available checker bitmap filenames
// add a fixed "Custom Checker" entry in the list,
// separated from the file entries
// (leave out separator when no file entries)
listBC.SetString(CUSTOM_CHECKER_ID, "Custom Checker");
if (checkerFilenames.GetCount() > 0)
listBC.SetString(-1, ""); // separator
for (SortedStringArray::ConstIterator it = checkerFilenames.Begin(); it != checkerFilenames.End(); ++it)
listBC.SetString(Int32(it - checkerFilenames.Begin()), *it);
// add the items to the dropdown gadget
BaseContainer comboBC = GetCustomDataTypeDefault(DTYPE_LONG);
// re-use the original label from the description
BaseContainer* bc = description->GetParameterI(cid, nullptr);
// store the data into the description
if (!description->SetParameter(cid, comboBC, DescLevel(0)))
On 10/07/2018 at 01:32, xxxxxxxx wrote:
as C4DS showed, you can edit the parameter description of a NodeData based element by implementing GetDDescription(). There are multiple manuals and example available:
An example of editing a drop down list is found in sculptdeformer.cpp.
On 10/07/2018 at 15:52, xxxxxxxx wrote:
This has absolutely done the trick and is working flawlessly :-)