Quick Tab Radio for GeDialog?
-
Hi,
How do I create the 'quick tab radio' button in the gedialog?
What I found so far is only "radio buttons".The
c4d.gui.QuickTabCustomGui
seems to be for actual tabs where you insert content and not like a button tab buttons.You can see what I am going for here:
https://www.dropbox.com/s/5mik32wlhcwftcm/c4d204_quick_tab_radio_button_for_gedialog.jpg?dl=0There is a relative thread about it here but its not really conclusive.
Is there a way around this?
-
Hi bentraje, the QuickTab Radio widget is obtained by still using the QuickTabCustomGui.
Find below a simplified snippet on how to get the result you'r looking for
import c4d ID_QUICKTABSRADIO_BAR = 1000 # ID for the quicktab customGui class QuickTabRadio(c4d.gui.GeDialog): def __init__(self): self._quickTabRadio = None # Stores the quicktab custom GUI def CreateLayout(self): # Creates a QuickTab Custom Gui bc = c4d.BaseContainer() bc.SetBool(c4d.QUICKTAB_SHOWSINGLE, True) bc.SetBool(c4d.QUICKTAB_NOMULTISELECT, True) self._quickTabRadio = self.AddCustomGui(ID_QUICKTABSRADIO_BAR, c4d.CUSTOMGUI_QUICKTAB, '', c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 0, 0, bc) self._quickTabRadio.AppendString(100, "FK", False) self._quickTabRadio.AppendString(200, "IK", False) return True def Command (self, id, msg): if id == ID_QUICKTABSRADIO_BAR and self._quickTabRadio: if self._quickTabRadio.IsSelected(100): print "FK is selected" if self._quickTabRadio.IsSelected(200): print "IK is selected" return True # Main function def main(): # Initializes the dialog diag = QuickTabRadio() # Opens the dialog in modal mode diag.Open(dlgtype=c4d.DLG_TYPE_MODAL, defaultw=100, defaulth=100) # Execute main() if __name__ == '__main__': main()
-
Hi @bentraje, following up with a discussion with @s_bach (thanks for watching over) you can also consider the following implementation:
import c4d ID_QUICKTABSRADIO_BAR = 1000 # ID for the quicktab customGui class QuickTabRadio(c4d.gui.GeDialog): def CreateLayout(self): items = c4d.BaseContainer() items.SetString(1, "FK") items.SetString(2, "IK") bc = c4d.BaseContainer() bc.SetContainer(c4d.DESC_CYCLE, items) gadet = self.AddCustomGui(ID_QUICKTABSRADIO_BAR, 200000281, '', c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT, 0, 0, bc) # set initial value gadet.SetData(2) return True def Command(self, id, msg): # react to interaction if id == ID_QUICKTABSRADIO_BAR: value = msg[c4d.BFM_ACTION_VALUE] print(value) return c4d.gui.GeDialog.Command(self, id, msg)
-
Thank you for the response and especially for the alternative code (first time to see a line with
msg[c4d.BFM_ACTION_VALUE]
.Both code works as expected.