Current Active Tab from TabGroup
-
On 05/08/2016 at 16:03, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 17
Platform: Mac ; Mac OSX ;
Language(s) : C++ ;---------
Couldn't find the answer to this on the forums or in the SDK examples.I have extended the GeDialog class and added a TabGroup to my dialog. Is there a way to figure out what the current active tab is from the Command method? Partial code snippet below:
#define ID_AOVS_TABS 11021114 #define ID_AOVS_TABS_STANDARD 11021115 #define ID_AOVS_TABS_LPE 11021116 #define ID_AOVS_STANDARD_LIST 11030000 #define ID_AOVS_LPE_LIST 11031000 #define ID_AOVS_LISTVIEW 11021120 #define ID_AOVS_CHANNELS_LISTVIEW 11021122 #define ID_AOVS_BUTTON_ADDCHANNEL 11021124 class AOVSDialog: public GeDialog { private: Int32 _lastcoremsg_change; public: AOVSDialog(); virtual ~AOVSDialog(void); virtual Bool CreateLayout(); virtual Bool Command(Int32 id,const BaseContainer & msg ); virtual Bool CoreMessage(Int32 id, const BaseContainer &msg); private: SimpleListView m_aovListView; SimpleListView m_channelListView; SimpleListView m_standardListView; SimpleListView m_lpeListView; Int32 m_activeTab; }; AOVSDialog::AOVSDialog(void) { _lastcoremsg_change = NOTOK; } Bool AOVSDialog::CreateLayout() { SetTitle("Example"); GroupBegin(1000, BFH_SCALEFIT | BFV_FIT, 3, 0, "", BFV_BORDERGROUP_FOLD_OPEN, 400, 100); GroupBorderSpace(10, 10, 10, 10); TabGroupBegin(ID_AOVS_TABS, BFH_SCALEFIT | BFV_SCALEFIT); GroupBegin(ID_AOVS_TABS_STANDARD, BFH_SCALEFIT | BFV_SCALEFIT, 1, 0, "Standard", BFV_BORDERGROUP_FOLD_OPEN, 400, 100); AddListView(ID_AOVS_STANDARD_LIST, BFH_SCALEFIT | BFV_SCALEFIT ); m_standardListView.AttachListView(this, ID_AOVS_STANDARD_LIST); layout.SetInt32('name', LV_COLUMN_TEXT); m_standardListView.SetLayout(1, layout); m_standardListView.SetProperty(SLV_MULTIPLESELECTION, 1); for (size_t i = 0; i < standardAOVS.size(); ++i) { // add stuff to list } GroupEnd(); GroupBegin(ID_AOVS_TABS_LPE, BFH_SCALEFIT | BFV_SCALEFIT, 1, 0, "LPE", BFV_BORDERGROUP_FOLD_OPEN, 400, 100); AddListView(ID_AOVS_LPE_LIST, BFH_SCALEFIT | BFV_SCALEFIT ); m_lpeListView.AttachListView(this, ID_AOVS_LPE_LIST); layout.SetInt32('name', LV_COLUMN_TEXT); m_lpeListView.SetLayout(1, layout); m_lpeListView.SetProperty(SLV_MULTIPLESELECTION, 1); for (size_t i = 0; i < lpeAOVS.size(); ++i) { // add stuff to list } GroupEnd(); GroupEnd(); // TabGroupBegin m_activeTab = ID_AOVS_STANDARD_LIST; AddButton(ID_AOVS_BUTTON_ADDCHANNEL, BFH_LEFT | BFV_CENTER, 0, 10, "Add Channel(s)"); GroupEnd(); Bool AOVSDialog::Command(Int32 id, const BaseContainer & msg) { switch(id) { case (ID_AOVS_TABS) : { // set m_activeTab...how? break; } } }
Thanks!
Ian -
On 05/08/2016 at 16:17, xxxxxxxx wrote:
Each tab has an ID and you can get the ID of the active tab with GeDialog::GetInt32().
Cheers,
-
On 08/08/2016 at 09:02, xxxxxxxx wrote:
Awesome! That worked for me.
Thanks!
Ian