Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    SimpleListView and ComboBox

    Scheduled Pinned Locked Moved SDK Help
    2 Posts 0 Posters 174 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 15/06/2008 at 22:29, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   R9-R10.5 
      Platform:   Windows  ; Mac  ;  Mac OSX  ; 
      Language(s) :

      ---------
      With respect to a GeModalDialog:

      What do I have to do to initialize a ComboBox? I've tried SetLong(ID, value) and it still comes up blank. All of the children have been added with AddChild().

      What do I have to do to select All/None/Toggle in a SimpleListView? I've tried this in Command() for the button being clicked (SelectAll in this case) :

      bList.GetSelection(selection);
      selection->SelectAll(0L, bpCount-1L);
      bList.SetSelection(selection);
      bList.DataChanged();

      Nothing happens. I've seen similar code in the sdk examples so what's the difference?

      The frustration level here after hours of trying to work this out is at about peak boil.

      And here is the entire dialog class code:

      > //////////////////////////////////////////////////////////////// \> // CreateMasterDialog.cpp \> //////////////////////////////////////////////////////////////// \> // interPoser Pro 'Create Master Dial' Dialog Class \> //////////////////////////////////////////////////////////////// \> // V1.8.6 2008.06.15 Robert Templeton \> //////////////////////////////////////////////////////////////// \> \> // CreateMasterDialog ====================================================================================================== \> enum \> { \>      CMDIALOG_BLIST = 4000L, \>      CMDIALOG_BALL, \>      CMDIALOG_BNONE, \>      CMDIALOG_BTOGGLE, \>      CMDIALOG_MASTERBP, \>      CMDIALOG_NAME, \>      CMDIALOG_MORPHS, \>      CMDIALOG_SCALES, \>      CMDIALOG_ROTS, \>      CMDIALOG_TRANS, \>      CMDIALOG_OK, \>      CMDIALOG_CANCEL, \>      \_cmdialogdummy \> }; \> \> // CLASS: CreateMasterDialog \> class CreateMasterDialog : public GeModalDialog \> { \>      private: \>           SimpleListView          bList; \>           BaseContainer          data; \>           BaseDocument\*          doc; \>           BaseTag\*               ftag; \>           BaseSelect\*               selection; \>           LONG                    masterbp; \>           LONG                    bpCount; \>           // BodyParts to slave Selection set \>           String                    name; \>           Bool                    morphs; \>           Bool                    scales; \>           Bool                    rots; \>           Bool                    trans; \>      public: \>           //\*---------------------------------------------------------------------------\* \>           CreateMasterDialog() \>           //\*---------------------------------------------------------------------------\* \>           { \>                selection =     NULL; \>                masterbp =     0L; \>                bpCount =     0L; \>                morphs = scales = rots = trans = TRUE; \>           } \>           //\*---------------------------------------------------------------------------\* \>           ~CreateMasterDialog() \>           //\*---------------------------------------------------------------------------\* \>           { \>                BaseSelect::Free(selection); \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool CreateLayout() \>           //\*---------------------------------------------------------------------------\* \>           { \>                // Call parent instance \>                if (!GeDialog::CreateLayout()) return FALSE; \>                SetTitle(ftag->GetName()+" - Create Master Dial"); \> \>                GroupBegin(0L,BFH_SCALEFIT|BFV_SCALEFIT,0L,2L,String(),0L); \>                { \>                     GroupBegin(0L,BFH_SCALEFIT|BFV_SCALEFIT,2L,0L,String("Master Configuration"),0L); \>                     { \>                          // MasterDial Configuration \>                          GroupBegin(0L,BFH_SCALEFIT|BFV_SCALEFIT,0L,6L,String("Master Config"),0L); \>                          { \>                               GroupBorder(BORDER_WITH_TITLE|BORDER_GROUP_IN); \>                               GroupBegin(0L,BFH_SCALEFIT|BFV_FIT,2L,0L,String(),0L); \>                               { \>                                    AddStaticText(0L,                    BFH_LEFT|BFV_CENTER, 0L, 0L, "Dial BodyPart", BORDER_NONE); \>                                    AddComboBox(CMDIALOG_MASTERBP,     BFH_LEFT|BFV_CENTER, SizePix(200L), 0L); \>                               } \>                               GroupEnd(); \>                               GroupBegin(0L,BFH_SCALEFIT|BFV_FIT,2L,0L,String(),0L); \>                               { \>                                    AddStaticText(0L,                    BFH_LEFT|BFV_CENTER, 0L, 0L, "Dial Name", BORDER_NONE); \>                                    AddEditText(CMDIALOG_NAME,          BFH_LEFT|BFV_CENTER, SizePix(200L), 0L); \>                               } \>                               GroupEnd(); \>                               AddCheckbox(CMDIALOG_MORPHS,     BFH_LEFT|BFV_CENTER, 0L, 0L, "Morphs"); \>                               AddCheckbox(CMDIALOG_SCALES,     BFH_LEFT|BFV_CENTER, 0L, 0L, "Scales"); \>                               AddCheckbox(CMDIALOG_TRANS,          BFH_LEFT|BFV_CENTER, 0L, 0L, "Translations"); \>                               AddCheckbox(CMDIALOG_ROTS,          BFH_LEFT|BFV_CENTER, 0L, 0L, "Rotations"); \>                          } \>                          GroupEnd(); \>                          // Slave Bodyparts \>                          GroupBegin(0L,BFH_SCALEFIT|BFV_SCALEFIT,0L,2L,String("Slaves from:"),0L); \>                          { \>                               GroupBorder(BORDER_WITH_TITLE|BORDER_GROUP_IN); \>                               // BodyPart ListView \>                               AddListView(CMDIALOG_BLIST,          BFH_SCALEFIT|BFV_SCALEFIT, 0L, SizePix(400L)); \>                               bList.AttachListView(this, CMDIALOG_BLIST); \>                               bList.SetProperty(SLV_MULTIPLESELECTION, TRUE); \>                               // Attributes \>                               GroupBegin(0L,BFH_SCALEFIT|BFV_SCALEFIT,3L,0L,String(),0L); \>                               { \>                                    AddButton(CMDIALOG_BALL,     BFH_LEFT|BFV_CENTER, 0L, 0L, String("All")); \>                                    AddButton(CMDIALOG_BNONE,     BFH_LEFT|BFV_CENTER, 0L, 0L, String("None")); \>                                    AddButton(CMDIALOG_BTOGGLE,     BFH_LEFT|BFV_CENTER, 0L, 0L, String("Toggle")); \>                               } \>                               GroupEnd(); \>                          } \>                          GroupEnd(); \>                     } \>                     GroupEnd(); \>                     // Response \>                     GroupBegin(0L,BFH_CENTER|BFV_FIT,2L,0L,String(),0L); \>                     { \>                          AddButton(CMDIALOG_OK,          BFH_LEFT|BFV_CENTER, 0L, 0L, GeLoadString(IPPS_OK)); \>                          AddButton(CMDIALOG_CANCEL,     BFH_LEFT|BFV_CENTER, 0L, 0L, GeLoadString(IPPS_CANCEL)); \>                     } \>                     GroupEnd(); \>                } \>                GroupEnd(); \> \>                // Master Configuration \>                // - Initialize to root body part \>                SetString(CMDIALOG_NAME,     name); \>                SetBool(CMDIALOG_MORPHS,     morphs); \>                SetBool(CMDIALOG_SCALES,     scales); \>                SetBool(CMDIALOG_TRANS,          trans); \>                SetBool(CMDIALOG_ROTS,          rots); \> \>                // Bodypart ListView \>                data.SetLong('chck',LV_COLUMN_CHECKBOX); \>                data.SetLong('name',LV_COLUMN_TEXT); \>                bList.SetLayout(2, data); \>                bList.DataChanged(); \>                // Add Bodyparts to Bodypart List \>                data.FlushAll(); \>                EnumerateBodyParts(); \>                SetLong(CMDIALOG_MASTERBP,     masterbp, 0L, bpCount); \>                Enable(CMDIALOG_MASTERBP,     TRUE); \> \>                return TRUE; \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool Command(LONG id, const BaseContainer &msg;) \>           //\*---------------------------------------------------------------------------\* \>           { \>                if          (id == CMDIALOG_BALL) \>                { \>                     bList.GetSelection(selection); \>                     selection->SelectAll(0L, bpCount-1L); \>                     bList.SetSelection(selection); \>                     bList.DataChanged(); \>                } \>                else if (id == CMDIALOG_BNONE) \>                { \>                     bList.GetSelection(selection); \>                     selection->DeselectAll(); \>                     bList.SetSelection(selection); \>                     bList.DataChanged(); \>                } \>                else if (id == CMDIALOG_BTOGGLE) \>                { \>                     bList.GetSelection(selection); \>                     selection->ToggleAll(0L, bpCount-1L); \>                     bList.SetSelection(selection); \>                     bList.DataChanged(); \>                } \>                else if (id == CMDIALOG_MASTERBP) \>                { \>                     SetLong(CMDIALOG_MASTERBP, masterbp); \>                } \>                else if (id == CMDIALOG_OK) \>                { \>                     LONG     slaves =          bList.GetSelection(selection); \>                     GetLong(CMDIALOG_MASTERBP,     masterbp); \>                     GetString(CMDIALOG_NAME,     name); \>                     GetBool(CMDIALOG_MORPHS,     morphs); \>                     GetBool(CMDIALOG_SCALES,     scales); \>                     GetBool(CMDIALOG_ROTS,          rots); \>                     GetBool(CMDIALOG_TRANS,          trans); \>                     if (!name.Content())     MessageDialog("No Master Dial Name"); \>                     else if (!slaves)          MessageDialog("No Slave body parts selected"); \>                     else                         Close(TRUE); \>                } \>                else if     (id == CMDIALOG_CANCEL) \>                { \>                     Close(FALSE); \>                } \>                return TRUE; \>           } \>           //\*---------------------------------------------------------------------------\* \>           LONG Message(const BaseContainer& msg, BaseContainer& result) \>           //\*---------------------------------------------------------------------------\* \>           { \>                if (msg.GetId() == BFM_ACTION) \>                { \>                     if (msg.GetLong(BFM_ACTION_ID) == CMDIALOG_MASTERBP) \>                          SetLong(CMDIALOG_MASTERBP, msg.GetLong(BFM_ACTION_VALUE)); \>                } \>                return GeDialog::Message(msg,result); \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool Init(BaseDocument\* t_doc, BaseTag\* t_ftag) \>           //\*---------------------------------------------------------------------------\* \>           { \>                doc =                         t_doc; \>                ftag =                         t_ftag; \>                selection =                    BaseSelect::Alloc(); \>                return (selection != NULL); \>           } \>           // Enumerate BodyParts for selected Figure \>           //\*---------------------------------------------------------------------------\* \>           void EnumerateBodyParts() \>           //\*---------------------------------------------------------------------------\* \>           { \>                BaseContainer\*     bc =     ftag->GetDataInstance(); \>                if (!bc)                    return; \>                IPPFigure\*          ippf =     (IPPFigure\* )ftag->GetNodeData(); \>                if (!ippf)                    return; \>                BaseContainer\*     sbc =     ippf->GetBodyPartContainer(doc, ftag->GetObject(), bc); \>                if (!sbc)                    return; \>                BaseObject\*          obj; \>                bpCount =                    0L; \>                LONG               lm =     bc->GetLong(IPPFIGURE_BPINDEX); \>                // - Retrieve SubContainer for Links to Figure's Body Parts (iPP Bases) \>                for (LONG m = 0L; m != lm; ++m) \>                { \>                     obj =                    sbc->GetObjectLink(m, doc); \>                     if (!obj)               continue; \>                     data.SetBool('chck',     selection->IsSelected(m)); \>                     data.SetString('name',     obj->GetName()); \>                     bList.SetItem(m, data); \>                     AddChild(CMDIALOG_MASTERBP,     m,     obj->GetName()); \>                     ++bpCount; \>                } \>                bList.DataChanged(); \>           } \>           //\*---------------------------------------------------------------------------\* \>           LONG GetMasterBP() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return masterbp; \>           } \>           //\*---------------------------------------------------------------------------\* \>           BaseSelect\* GetSlaves() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return selection; \>           } \>           //\*---------------------------------------------------------------------------\* \>           String GetName() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return name; \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool GetMorphs() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return morphs; \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool GetScales() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return scales; \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool GetRots() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return rots; \>           } \>           //\*---------------------------------------------------------------------------\* \>           Bool GetTrans() \>           //\*---------------------------------------------------------------------------\* \>           { \>                return trans; \>           } \> };

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 16/06/2008 at 00:06, xxxxxxxx wrote:

        Okay, I figured it out. It was the indices that differed between the body parts and the ListView items. Anybody need hair for a wig? 😉

        1 Reply Last reply Reply Quote 0
        • First post
          Last post