Dialog Question



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

    On 12/01/2011 at 19:43, xxxxxxxx wrote:

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

    ---------
    okay.. so if you go in to c4d add a sky object.. not a blank sky object, the AR sky object... then click on the BASIC tab and then click LOAD PRESET,  how can I create that type of dialog box?  The one that shows all of the sky presets as images?  How can I accomplish this type of dialog?

    Thanks,

    ~Shawn



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

    On 12/01/2011 at 22:43, xxxxxxxx wrote:

    Not sure if you can exactly mimic it but you can set up each preset from an image as a BitmapButton.  A basic way to do this is in CreateLayout() (or method called from there) using something like this:

    // BitMap Button  
    BaseContainer    thumb_bc;  
    thumb_bc.SetLong(DESC_CUSTOMGUI,                    CUSTOMGUI_BITMAPBUTTON);  
    thumb_bc.SetLong(BITMAPBUTTON_BORDER,                BORDER_IN);  
    thumb_bc.SetBool(BITMAPBUTTON_BUTTON,                TRUE);  
    thumb_bc.SetBool(BITMAPBUTTON_TOGGLE,                FALSE);  
    thumb_bc.SetBool(BITMAPBUTTON_DRAWPOPUPBUTTON,        FALSE);  
    BitmapButtonCustomGui*    bmbutton =    (BitmapButtonCustomGui* )AddCustomGui(id,CUSTOMGUI_BITMAPBUTTON,String(),BFH_CENTER|BFV_CENTER,SizePix(64L),SizePix(64L),thumb_bc);  
    if (!bmbutton) return FALSE;  
    // bm = BaseBitmap* to loaded image  
    bmbutton->SetImage(bm, TRUE, FALSE);
    


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

    On 13/01/2011 at 03:18, xxxxxxxx wrote:

    Yes, that's exactly what I do in my sIBL Loader plugin, which shows a variable number of presets depending on which collection of presets the user has chosen. I add the required number of BitmapButton elements to a ListView so the display of presets can be scrolled within the dialog if necessary.



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

    On 14/01/2011 at 06:40, xxxxxxxx wrote:

    The AR Sky is using the BrowserLibraryPopup function to display the popup. This invlolves some knowledge about Content Browser programming though.

    cheers,
    Matthias



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

    On 14/01/2011 at 06:57, xxxxxxxx wrote:

    Thanks Matthias,  I will check out the SDK for that function when I get home.  Is there literature on Content Browser programming at all anywhere?
     
    ~Shawn
     
    EDIT:   Nevermind.  I got around my work computer's block for downloading the SDK here at work by downloading it on my phone and pulling it off of there.  I can now look through the Browser related functions.  Thanks again Matthias.  :)
     
     
    ~Shawn



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

    On 14/01/2011 at 12:52, xxxxxxxx wrote:

    Okay so I am trying to use : BrowserLibraryPopup

    but am running in to some trouble.   I  saw an earlier post by Matthias HERE.

    Here is the code I am messing with so far.

      
    //MESSAGE  
    //====================================================//  
    Bool PlanetXObject::Message(GeListNode *node, LONG type, void *t_data){  
         
      BaseContainer state;  
       GetInputState(BFM_INPUT_MOUSE, 0/*BFM_INPUT_MOUSELEFT*/, state);  
       LONG mx = state.GetReal(BFM_INPUT_X);  
       LONG my = state.GetReal(BFM_INPUT_Y);  
      
      switch (type){  
      
          case MSG_DESCRIPTION_COMMAND:  
              BrowserLibraryPopup(mx, my, 200, 200, MYWINDOWID, CBPluginTypeObjectPreset, NULL, BPop);  
      }  
      
      
      return TRUE;  
    }  
    

    my problem is,  that Bpop  is supposed to be a

    BrowserPopupCallback_<_h4_>_

    and I have no idea how to use that.  Could someone explain that better to me?

    Thanks,

    ~Shawn



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

    On 14/01/2011 at 17:11, xxxxxxxx wrote:

    So if I want to create a Browser Plugin ,  Do I have my class inherit from

    **SDKBrowser** or should it inherit from **SDKBrowserPluginInterfaceInfo ?  
      
      
     Thanks,  
      
    Shawn  
    **  
    


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

    On 17/01/2011 at 05:41, xxxxxxxx wrote:

    okay so I am able to get the dialog to open like this.

      
          case MSG_DESCRIPTION_COMMAND:{  
                
              DescriptionCommand *dc = (DescriptionCommand* ) t_data;  
              if(!dc)return FALSE;  
            
              //LOAD PRESET  
              if (dc->id==(DescID)PLANETX_SURFACE_LOAD_PRESET)  
              {  
                  BrowserLibraryPopup(mx, my, width, height,ID_SURFACEPRESETS_WINDOW, CBPluginTypeDefaults, NULL, NULL);  
              }  
      
              //SAVE PRESET  
              if (dc->id==(DescID)PLANETX_SURFACE_SAVE_PRESET)  
              {  
                  GePrint("Save Preset");  
              }  
          }  
    

    Now my question is, how do I get a specific .lib4d file to load in to the dialog ?

    ~Shawn



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

    On 17/01/2011 at 13:45, xxxxxxxx wrote:

    Anyone know anything about calling in files from the content browser?  :)

    ~Shawn



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

    On 18/01/2011 at 06:56, xxxxxxxx wrote:

    In order to show your own presets you need to program your own content browser plugin. I will try to put an example together.

    cheers,
    Matthias



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

    On 18/01/2011 at 09:42, xxxxxxxx wrote:

    Thanks Matthias,   that would be extremely helpful.   I appreciate you taking the time to do it. 
     
    :)
     
    ~Shawn



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

    On 25/01/2011 at 19:47, xxxxxxxx wrote:

    Is a broswer plugin made with SDKBrowser or SDKBrowserPluginInterfaceInfo ?



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

    On 26/01/2011 at 01:35, xxxxxxxx wrote:

    The plugin is derived from SDKBrowserPluginInterfaceInfo and registered with SDKBrowser::RegisterBrowserPlugin().

    I have never written a browser plugin myself so currently I can't tell you much about it. I am still waiting for an answer from our developers.

    cheers,
    Matthias



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

    On 26/01/2011 at 03:13, xxxxxxxx wrote:

    Thanks Matthias,

    I'm gonna have a play with it to see if I can piece one together until you hear back from them.

    ~Shawn



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

    On 30/01/2011 at 15:27, xxxxxxxx wrote:

    Okay so here is my first attempt at writing a browser plugin.

    Everything works except the registration function.  Does anyone see what I am doing wrong with the registration function for this plugin?

    I am using the class as the SDKBrowserPluginInterfaceInfo that is required in the registration.

    Here's the code:

      
      
    //BROWSER INTERFACE PLUGIN  
      
    #include "c4d.h"  
    #include "c4d_symbols.h"  
    #include "lib_browser.h"  
      
    //PLUGIN ID  
    #define PXG_BROWSER_PLUGIN 1026577   
      
    class PXGBrowserPlugin : public SDKBrowserPluginInterfaceInfo{  
      
    public:  
      
      virtual LONG GetPluginID(String* plugin_name);  
      virtual Bool Identify(const SDKBrowserURL& url, UCHAR* probe, LONG size, ULONG flags);  
      virtual String GetTypeName(const SDKBrowserContentNodeRef node, const SDKBrowserURL* url, LONG mode);  
     // virtual String* GetTypeNames(LONG mode, LONG* no_strings);  
      
      virtual SDKBrowserPreviewData* OpenPreviewBitmap(BaseThread* thread, const SDKBrowserContentNodeRef node, const SDKBrowserURL* url, SDKBrowserPreviewInfo* info);  
      virtual void ClosePreviewBitmap(SDKBrowserPreviewData* data);  
      virtual BaseBitmap* GetPreviewBitmap(SDKBrowserPreviewData* data, LONG w, LONG h, LONG quality);  
      
      virtual SDKBrowserIcon* GetIcon(const SDKBrowserURL& url, LONG pref_wh);  
      
      virtual SubDialog* OpenPreviewDialog(SDKBrowserContentNodeRef node, LONG tab_id);  
      virtual LONG ClosePreviewDialog(SDKBrowserContentNodeRef node, SubDialog* s);  
      virtual Bool Open(SDKBrowserContentNodeRef node, const SDKBrowserURL* url, LONG flags);  
    };  
      
      
    LONG PXGBrowserPlugin::GetPluginID(String* plugin_name){  
        
      return NULL;  
    }  
      
    Bool PXGBrowserPlugin::Identify(const SDKBrowserURL& url, UCHAR* probe, LONG size, ULONG flags){  
      
      return TRUE;  
    }  
      
    String PXGBrowserPlugin::GetTypeName(const SDKBrowserContentNodeRef node, const SDKBrowserURL* url, LONG mode){  
      
      String test = "Test";  
      return test;  
    }  
    /*  
    String* PXGBrowserPlugin::GetTypeNames(LONG mode, LONG* no_strings){  
      
      String *test = "Test";  
      return test;  
      
    }*/  
      
    SDKBrowserPreviewData* PXGBrowserPlugin::OpenPreviewBitmap(BaseThread* thread, const SDKBrowserContentNodeRef node, const SDKBrowserURL* url, SDKBrowserPreviewInfo* info){  
      
      
    }  
      
    void PXGBrowserPlugin::ClosePreviewBitmap(SDKBrowserPreviewData* data){  
      
    }  
      
    BaseBitmap* PXGBrowserPlugin::GetPreviewBitmap(SDKBrowserPreviewData* data, LONG w, LONG h, LONG quality){  
      
      AutoAlloc<BaseBitmap> bmap;  
      return bmap;  
    }  
      
    SDKBrowserIcon* PXGBrowserPlugin::GetIcon(const SDKBrowserURL& url, LONG pref_wh){  
      
      SDKBrowserIcon *ico;  
      return ico;  
    }  
      
    SubDialog* PXGBrowserPlugin::OpenPreviewDialog(SDKBrowserContentNodeRef node, LONG tab_id){  
        
      SubDialog* sd;  
      return sd;  
    }  
      
    LONG PXGBrowserPlugin::ClosePreviewDialog(SDKBrowserContentNodeRef node, SubDialog* s){  
      
      return NULL;  
    }  
      
    Bool PXGBrowserPlugin::Open(SDKBrowserContentNodeRef node, const SDKBrowserURL* url, LONG flags){  
      
      return TRUE;  
    }  
      
    Bool RegisterPXGBrowserPlugin(void){  
        
      SDKBrowser *browser;   
      return browser->RegisterBrowserPlugin(PXGBrowserPlugin, 0);  
    }  
      
    


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

    On 31/01/2011 at 02:44, xxxxxxxx wrote:

    RegisterBrowserPlugin is a static method. You call it like this:

    EDIT: wrong code

    cheers,
    Matthias



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

    On 31/01/2011 at 03:11, xxxxxxxx wrote:

    Thanks matthias.   I still get this error:

      
    1>pxgbrowserplugin.cpp  
    1>c:\program files\maxon\cinema 4d r12 demo\plugins\planet x generator 2.0\source\object\pxgbrowserplugin.cpp(86) : error C2275: 'PXGBrowserPlugin' : illegal use of this type as an expression  
    

    Am I not allowed to use the class for the first argument for RegisterBrowserPlugin()?

    ~Shawn



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

    On 31/01/2011 at 03:20, xxxxxxxx wrote:

    Sorry I had an error in my code. You have to pass the allocted class.

      
    Bool RegisterPXGBrowserPlugin(void)  
    {  
      return SDKBrowser::RegisterBrowserPlugin(gNew PXGBrowserPlugin, 0);  
    }  
    

    cheers,
    Matthias



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

    On 31/01/2011 at 03:36, xxxxxxxx wrote:

    Thanks Matthias.  It works now.  Just have to make sure I override all methods because it's abstract.  :)

    LOL

    ~Shawn


Log in to reply