Python_gradient gizmo won't maximize



  • On 02/08/2014 at 19:00, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   13 
    Platform:   Windows  ;   
    Language(s) :

    ---------
    I can't open the gradient gizmo's options pallet when creating it with AddCustomGui() function.
    SetLayoutMode(c4d.LAYOUTMODE_MAXIMIZED) does not work.

    Example of the various things I've tried to maximize the gizmo:

    import c4d,os,sys  
    from c4d import plugins, utils, bitmaps, gui, documents  
      
    Plugin_ID = 1000010    #Testing id ONLY!!!!!!!   
      
    MY_GRADIENT = 10001  
      
    class MyDialog_Gui(gui.GeDialog) :  
      
      myGradGizmo = None  
      gradient = c4d.Gradient()  
       
      def CreateLayout(self) :  
             
          #Create the gradient gui here  
          #We will change it's options in the InitValues() method  
      
          gSettings = c4d.BaseContainer()  
          #gSettings.SetBool(c4d.LAYOUTMODE_MAXIMIZED, True)  #<---Wrong!!!  
          #gSettings.SetLong(c4d.LAYOUTMODE_MAXIMIZED, 2)     #<---Wrong!!!  
          #gSettings.SetLayoutMode(c4d.LAYOUTMODE_MAXIMIZED)  #<---Wrong!!!  
          self.myGradGizmo = self.AddCustomGui(MY_GRADIENT, c4d.CUSTOMGUI_GRADIENT, "", c4d.BFH_SCALEFIT|c4d.BFV_CENTER, 0, 0, gSettings)       
      
          return True      
      
      def InitValues(self) :  
      
          #To change the gradient gui we have to first create a gradient object and fill it with data  
          #Then we copy the settings to the CUSTOMGUI_GRADIENT we created in the CreateLayout() method          
            
          self.gradient.InsertKnot(col = c4d.Vector(0.0, 0.0, 0.0), pos = 0.0,index = 0)  
          self.gradient.InsertKnot(col = c4d.Vector(1.0, 1.0, 1.0), pos = 0.5,index = 1)  
          self.gradient.InsertKnot(col = c4d.Vector(1.0, 1.0, 1.0), pos = 1.0,index = 2)  
          self.gradient.SetData(c4d.GRADIENT_INTERPOLATION, c4d.GRADIENT_INTERPOLATION_NONE)  
          self.gradient.SetData(c4d.GRADIENT_MODE, c4d.GRADIENTMODE_COLOR)  
      
          #self.gradient.SetLayoutMode(c4d.LAYOUTMODE_MAXIMIZED)      #<---Wrong!!!          
          #self.myGradGizmo.SetLayoutMode(c4d.LAYOUTMODE_MAXIMIZED)   #<---Wrong!!!  
       
          self.myGradGizmo.SetGradient(self.gradient)  
            
          return True  
      
        
      def Command(self, id, msg) :      
          return True  
            
            
      def CoreMessage(self, id, msg) :  
          return True          
            
       
    #-------------------------------------------------------------------------  
    #   MyDialog_Main --- Where the plugin stuff happens--Don't edit this part  
    #-------------------------------------------------------------------------  
    class myDialog_Main(plugins.CommandData) :  
      dialog = None  
        
      def Execute(self, doc) :  
          #Create the dialog  
          if self.dialog is None:  
              self.dialog = MyDialog_Gui()  
          return self.dialog.Open(dlgtype=c4d.DLG_TYPE_ASYNC, pluginid=Plugin_ID, xpos=-1, ypos=-1)  
            
      def RestoreLayout(self, sec_ref) :  
          #Manage the async dialog so it can be docked in the UI  
          if self.dialog is None:  
              self.dialog = MyDialog_Gui()  
          return self.dialog.Restore(pluginid=Plugin_ID, secret=sec_ref)  
       
      
    if __name__ == "__main__":  
     path, fn = os.path.split(__file__)  
     #bmp = bitmaps.BaseBitmap()  
     #bmp.InitWith(os.path.join(path, "res/icons/", "None")) #Uses a folder called "icons" inside the "res" folder to hold the icon  
     plugins.RegisterCommandPlugin(Plugin_ID, "LinkBox Example", 0, None, "", myDialog_Main())
    

    -ScottA



  • On 13/01/2015 at 04:57, xxxxxxxx wrote:

    I was also struggling with the gradient UI.
    It is now working, also thanks to this above example.

    Except, there are 6 knots in the gradient and not 3 as defined.
    When you drag a knot you can see another one beneath it.
    It seems every knot is inserted twice?

    What am I doing and the example above doing wrong?

    -Pim



  • On 14/01/2015 at 03:47, xxxxxxxx wrote:

    Hello,

    SetLayoutMode() is not available in Python. But it is possible to set a value for CUSTOMGUI_LAYOUTMODE in the BaseContainer used with AddCustomGui() :

      
    bc = c4d.BaseContainer()  
    bc.SetInt32(c4d.CUSTOMGUI_LAYOUTMODE,c4d.LAYOUTMODE_MAXIMIZED)  
    gradient = self.AddCustomGui(id=4000, pluginid=c4d.CUSTOMGUI_GRADIENT, name="gradient", flags=c4d.BFH_LEFT, minw=400, minh=20, customdata = bc)  
    

    The behavior that two knots are inserted instead of one is indeed a bug. A bug report was filed.

    best wishes,
    Sebastian



  • On 14/01/2015 at 04:14, xxxxxxxx wrote:

    Thanks for the reply.
    It is good to know it is a bug.
    I spend about a day debugging/trying/testing before asking the question this forum.


Log in to reply