Get CustomGUI Data in python
-
Hello plugincafe!
I have recently created a customgui using the example customgui plugin. The only major thing that I changed, appart from drawing, is that I save a single float value.
I now need to implement this custom gui into a python plugin but I can't seem to find out how to retrieve my saved data from the gui element.Do I need to completely switch to a c++ plugin to do this, or is there a way in python.
Kind Regards,
Florian -
Hi if your data type is already a know python type you shouldn't have any issue and could use the BaseCustomGui.GetData / BaseCustomGui.SetData.
So if we take the C++ example of the String Custom GUI.
You can use it in Python like bellow:import c4d ID_CUSTOM_GUI = 1001 ID_BUTTON_DO = 1002 class myCustomGuiDlg(c4d.gui.GeDialog): def CreateLayout(self): self._customGui = self.AddCustomGui(ID_CUSTOM_GUI, 1034655, 'my value', c4d.BFH_SCALEFIT, 50, 10) self.AddButton(ID_BUTTON_DO,c4d.BFH_SCALEFIT,name = 'Get Data') return True def InitValues(self): self._customGui.SetData("Some custom text") return True def Command(self, id, msg): if id == ID_BUTTON_DO: print self._customGui.GetData() return True if __name__=='__main__': dlg = myCustomGuiDlg() dlg.Open(c4d.DLG_TYPE_ASYNC)
Cheers,
Maxime. -
Hello Maxime,
thanks for you answer!
I actually have my custom gui not in a GeDialog but inside a res file of an ObjectData. How would I be able to access the customgui from there?Best Regards,
Florian -
In an ObjectData plugin, you don't access GUIs. You access parameters. So what is the parameter type that is using your custom GUI? Can you show your *.res file?
-
Hello Sebastian,
basically I have something like this[...]
MY_CUSTOMGUI CUSTOMGUIPARAM { }
[...]that is what I use.
-
Sorry, but this is not how it works. A NodeData's res file looks like this:
STRING ID_RESULT_TEXT { CUSTOMGUI MULTISTRING; ANIM OFF; }
The first symbol is the data type (
STRING
), the second the parameter ID, The custom GUI can be found after theCUSTOMGUI
keyword.So in your case,
MY_CUSTOMGUI
is NOT a custom GUI. It is a custom data type. Is that correct? -
oh... yeah that is true.
I edited the customdata_customgui example to fit my needs. (mainly only the drawing).
So I guess I would have to change my customdata to a REAL customgui? -
Please make sure you understand the difference between a data type and a GUI. A data type stores data of some type. A GUI displays that data and allows interaction with that data in the UI. But it does not persistently store the data.
So if you want to have a parameter in your object that stores a float value, just use a REAL parameter. You can display that parameter in the UI using a custom GUI element. See for example customgui_string.cpp.
best wishes,
Sebastian -
Hello Sebastian,
I now understand what the difference is, thank you very much!
With the customdata_customgui example file I actually made both a GUI and a custom DataType. So I only needed to change my resource file and modifiy my data code a bit!Best Regards,
Florian