User Data - Get Button Name When Pressed
On 11/05/2018 at 22:15, xxxxxxxx wrote:
I have been using the following function to handle user data button presses:
def message(id, data) : if id == c4d.MSG_DESCRIPTION_COMMAND: messageDataId = data["id"].id if messageDataId == c4d.ID_USERDATA: userDataId = data["id"].id if userDataId == 1: print "button 1 pressed" elif userDataId == 2: print "button 2 pressed"
Is there a way to get the button's name or short name from the message data or id?
On 14/05/2018 at 07:01, xxxxxxxx wrote:
welcome to the Plugin Café forums
I assume you are implementing this inside of a Python generator or tag, right?
In general parameters of objects (or tags, materials,...) are specified in so called Descriptions (also here). With User Data it's a bit special, as you first need to obtain the User Data containers, which store the Descriptions, via GetUserDataContainer().
One more thing you need to know: In Python Generator and Tag there's a predefined global variable op, referencing the actual object (or tag).
For example code could look like so:
def message(id, data) : if id == c4d.MSG_DESCRIPTION_COMMAND: ud = op.GetUserDataContainer() for did, bc in ud: if did == data["id"]: print bc[c4d.DESC_NAME] + " pressed"
On 14/05/2018 at 22:33, xxxxxxxx wrote:
Thanks! That worked perfectly.
Thanks for the explanation. I made several attempts to drill down into the User Data Container but couldn't figure it out.