Popup desctiption



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

    On 09/12/2010 at 08:47, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   12 
    Platform:   Windows  ;   Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    Hello all,
    i am trying to create a popup description (CUSTOMGUI_POPUP) in GetDDescription of tagdata.
    i can create popup but i can't find the way to add the element inside popup.
    any help ?
    Franz



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

    On 14/12/2010 at 03:26, xxxxxxxx wrote:

    You have to react to the MSG_DESCRIPTION_POPUP message to fill the menu structure.

    Here is a simple example of a popup menu with a sub-menu and some separators.

      
    Bool MorphMixerObject::Message(GeListNode *node, LONG type, void *data)  
    {  
      if (type==MSG_DESCRIPTION_POPUP)  
      {  
          DescriptionPopup *dp = (DescriptionPopup* )data;  
      
          if (dp->id[0]==MORPHMIXER_PRESET)  
          {  
              if (dp->chosen==0)    //fill menu  
              {  
                  dp->popup.InsData(MORPHMIXER_PRESET+1,"hello");  
                  dp->popup.InsData(MORPHMIXER_PRESET+2,"world");  
                  dp->popup.InsData(0,String());    //separator  
                    
                  BaseContainer child;    //sub-container for sub-menu  
                  child.InsData(MORPHMIXER_PRESET+3,"CINEMA 4D");  
                  child.InsData(0,String());    //separator  
                  child.InsData(MORPHMIXER_PRESET+4,"BodyPaint 3D");  
                  child.InsData(1,"Sub-Menu");    //sub-menu name  
                  dp->popup.InsData(0,child);        //insert sub-menu  
                  child.FlushAll();  
              }  
              else    //menu item was chosen  
              {  
                  GePrint(LongToString(dp->chosen));  
              }  
          }  
      }  
      
      return TRUE;  
    }  
      
    Bool MorphMixerObject::GetDDescription(GeListNode *node, Description *description,DESCFLAGS_DESC &flags)  
    {  
      if (!description->LoadDescription(node->GetType())) return FALSE;  
      
      // important to check for speedup c4d!  
      const DescID *singleid = description->GetSingleDescID();  
      
      LONG index = MORPHMIXER_PRESET;  
        
      BaseContainer bc2;  
      
      DescID cid = DescLevel(index,DTYPE_POPUP,0);  
      if (!singleid || cid.IsPartOf(*singleid,NULL)) // important to check for speedup c4d!  
      {  
          bc2 = GetCustomDataTypeDefault(DTYPE_POPUP);  
          bc2.SetLong(DESC_CUSTOMGUI,CUSTOMGUI_POPUP);  
          bc2.SetLong(DESC_ANIMATE,DESC_ANIMATE_OFF);  
          bc2.SetBool(DESC_REMOVEABLE,FALSE);  
          bc2.SetString(DESC_NAME,"Preset");  
          bc2.SetString(DESC_SHORT_NAME,"Preset");  
          if (!description->SetParameter(cid,bc2,DescLevel(ID_OBJECTPROPERTIES))) return FALSE;  
      }  
      
      flags |= DESCFLAGS_DESC_LOADED;  
      
      return SUPER::GetDDescription(node,description,flags);  
    }  
    

    cheers,
    Matthias



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

    On 14/12/2010 at 08:03, xxxxxxxx wrote:

    thans ... very useful
    Franz


Log in to reply