Hide/Unhide GeDialog Gizmos?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 06/11/2012 at 12:48, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 13
Platform: Windows ;
Language(s) : C++ ;---------
I'm trying to hide/unhide gizmos in a GeDialog. But once they are hidden I can't manage to bring them back again.Here's my button code that calls the hide/unhide for a gizmo
Hide works fine. But the unhide code does not work:switch (id) { case MY_BUTTON_HIDE: HideElement(MY_GIZMO, TRUE); //Tell C4D to hide this gizmo LayoutFlushGroup(GIMO_GROUP_ID); //Redraw the gizmo's group reflecting the changes LayoutChanged(GIMO_GROUP_ID); //Tell C4D the GeDialog has changed break; case MY_BUTTON_UNHIDE: HideElement(MY_GIZMO, FALSE); LayoutFlushGroup(GIMO_GROUP_ID); //<--This code block does not bring the gizmo back!? LayoutChanged(GIMO_GROUP_ID); break; }
Do I need to use a gadget *ptr for this?
The docs show an example how to create a gadget ptrC4DGadget* ptr = dlg.AddStaticText(123, ...); // Generates GadgetPtr(123)
Which I'm assuming is placed inside the CreateLayout() method?
But then I'm unclear how to actually use this new ptr.Normally I would create a ptr like this as a class member variable so it's available for use in all the methods in my plugin. But the way it's written in the docs it appears to be created as a local CreateLayout() variable.
So I don't know how to actually use that ptr in my Command() method where my buttons code is?-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 06/11/2012 at 16:51, xxxxxxxx wrote:
Doh!
Nevermind. I found what I was doing wrong.By using LayoutFlushGroup() when hiding the gizmo. I am basically deleting the gizmo from the dialog. So it has no way of returning back to where I started from when I choose to unhide it.
So the code needs to be like this:
switch (id) { case MY_BUTTON_HIDE: HideElement(MY_GIZMO, TRUE); //Tell C4D to hide this gizmo LayoutChanged(GIZMO_GROUP_ID); //Tell C4D the group this gizmo is in has changed break; case MY_BUTTON_UNHIDE: HideElement(MY_GIZMO, FALSE); //Tell C4D to unhide this gizmo LayoutChanged(GIZMO_GROUP_ID); //Tell C4D the group this gizmo is in has changed break; }
The way the docs are written. It sort of led me to believe that we had to use Flush to hide/unhide gizmos.
But that's not the case.-ScottA