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
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Unexpected Margin/Padding on AddCustomGui

    Cinema 4D SDK
    r21 python
    2
    12
    1.3k
    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.
    • B
      bentraje
      last edited by

      @m_adam

      Thanks for the response.

      I added a line with
      bcBitmapButton[c4d.BITMAPBUTTON_FORCE_SIZE] = 100.00
      and revised a line to
      bitmapButton = self.AddCustomGui(buttonId, c4d.CUSTOMGUI_BITMAPBUTTON, "", c4d.BFV_CENTER | c4d.BFV_CENTER , w, h,

      However, it still gives an unwanted margin/padding but this time at the bottom.
      You can see the problem here:
      https://www.dropbox.com/s/i6eb8ccszzc35ov/c4d191_unexpected_margin_on_custom_gui_button_02.jpg?dl=0

      1 Reply Last reply Reply Quote 0
      • M
        m_adam
        last edited by

        Hi @bentraje

        Could you try to use

                w = c4d.gui.SizePix(100)
                h = c4d.gui.SizePix(100)
        

        For more information see GUI Layout Issues.

        If not could you try to zip bmp + a complete working script?

        Thanks in advance,
        Cheers,
        Maxime.

        MAXON SDK Specialist

        Development Blog, MAXON Registered Developer

        1 Reply Last reply Reply Quote 1
        • B
          bentraje
          last edited by

          Thanks for the response.
          Almost close now. is there a way to totally remove the border space within the custom gui buttons?

          You can check it here:
          https://www.dropbox.com/s/vs31t2flu51gnej/c4d191_unexpected_margin_on_custom_gui_button_03.jpg?dl=0

          I tried the self.GroupSpace(0, 0) but it has no effect.
          I also tried self.GroupBorderSpace(0, 0, 0, 0) but the whole button disappeared.

          Are there any other settings for spaces?

          1 Reply Last reply Reply Quote 0
          • M
            m_adam
            last edited by m_adam

            Here is working correctly, please share your code.

                def CreateLayout(self):
                    self.GroupBegin(10002, c4d.BFH_SCALE| c4d.BFV_SCALE,  initw=50, inith=50)
                    
                    bcBitmapButton = c4d.BaseContainer()
                    bcBitmapButton[c4d.BITMAPBUTTON_BUTTON] = True
                    bcBitmapButton[c4d.BITMAPBUTTON_ICONID1] = c4d.Ocube
                    bcBitmapButton[c4d.BITMAPBUTTON_BORDER] = c4d.BORDER_IN
            
                    buttonId = 2000
                    w = c4d.gui.SizePix(100)
                    h = c4d.gui.SizePix(100)
            
                    self.GroupBegin(id=9001, flags=c4d.BFH_SCALEFIT, groupflags = c4d.BFV_GRIDGROUP_EQUALCOLS | c4d.BFV_GRIDGROUP_EQUALROWS, cols=4, rows=4,initw=0, inith=0)
                    self.GroupSpace(0, 0)
                    for imageId in xrange(10):
                        bitmapButton = self.AddCustomGui(imageId, c4d.CUSTOMGUI_BITMAPBUTTON, "", c4d.BFH_FIT|c4d.BFV_TOP, w, h, bcBitmapButton)
            
                    self.GroupEnd()
                    
                    
                    self.GroupEnd()
                    return True
            

            Cheers,
            Maxime.

            MAXON SDK Specialist

            Development Blog, MAXON Registered Developer

            1 Reply Last reply Reply Quote 1
            • B
              bentraje
              last edited by

              @m_adam

              There's actually still space between buttons on your code.
              Anyhow here is my working code for your reference. It's in archive file since it includes the images
              https://www.dropbox.com/s/leb10klpvm4o8ps/c4d191_unexpected_margin_on_custom_gui_button.rar?dl=0

              1 Reply Last reply Reply Quote 0
              • M
                m_adam
                last edited by m_adam

                Hi @bentraje
                thanks for the archive.

                Here my code in R21.115
                spacing_perso.jpg

                In your code you call self.GroupSpace(0, 0) before the GroupBegin it has to be called just after the creation.

                        self.GroupBegin(id=9001, flags=c4d.BFH_SCALEFIT, groupflags = c4d.BFV_GRIDGROUP_EQUALCOLS | c4d.BFV_GRIDGROUP_EQUALROWS, cols=4, rows=4,initw=0, inith=0)
                        self.GroupSpace(0, 0)
                

                Which give me the next result
                spacing_bentraje.jpg

                Cheers,
                Maxime.

                MAXON SDK Specialist

                Development Blog, MAXON Registered Developer

                1 Reply Last reply Reply Quote 1
                • B
                  bentraje
                  last edited by

                  Oh I see. Thanks for pointing that out.

                  Thanks!

                  1 Reply Last reply Reply Quote 0
                  • B
                    bentraje
                    last edited by

                    @m_adam

                    Sorry for reviving the thread but I just hit a snag on using the same code but for colored buttons. It doesn't respect the settings and gives an unnecessary margin even though I used the c4d.gui.SizePix() code.

                    You can see the problem here:
                    https://www.dropbox.com/s/17yqc1i0puoau77/c4d191_unexpected_margin_on_custom_gui_button_04.jpg?dl=0

                    You can see the working code here:

                    import c4d
                    from c4d import bitmaps, documents, gui, plugins, threading, utils
                    
                    class ColorButton(object):
                    
                        def __init__(self):
                            self.width = None
                            self.height = None
                            self.color = None
                            self.btn_id = 3000
                    
                    
                        def create(self, dlg, w, h, color, btn_id):
                    
                            self.width = c4d.gui.SizePix(w)
                            self.height = c4d.gui.SizePix(h)
                            self.color = color
                    
                            bmp_color = c4d.bitmaps.BaseBitmap()
                            bmp_color.Init(w, h)
                    
                            for y in xrange(w):
                                for x in xrange(h):
                                    bmp_color.SetPixel(x, y, color[0], color[1], color[2])
                    
                            bcBitmapButton = c4d.BaseContainer()
                            bcBitmapButton[c4d.BITMAPBUTTON_BUTTON] = True
                            bcBitmapButton[c4d.BITMAPBUTTON_BORDER] = c4d.BORDER_IN
                            
                    
                    
                            bmp_btn = dlg.AddCustomGui(btn_id, c4d.CUSTOMGUI_BITMAPBUTTON, "",c4d.BFH_FIT|c4d.BFV_TOP, w, h, bcBitmapButton)
                    
                            bmp_btn.SetImage(bmp_color, True)
                            
                    class MyDialog(c4d.gui.GeDialog):
                    
                        def CreateLayout(self):
                            self.GroupBegin(10002, c4d.BFH_SCALE| c4d.BFV_SCALE,  initw=50, inith=50)
                            
                            bcBitmapButton = c4d.BaseContainer()
                            bcBitmapButton[c4d.BITMAPBUTTON_BUTTON] = True
                            bcBitmapButton[c4d.BITMAPBUTTON_ICONID1] = c4d.Ocube
                            bcBitmapButton[c4d.BITMAPBUTTON_BORDER] = c4d.BORDER_IN
                    
                            buttonId = 2000
                            w = c4d.gui.SizePix(100)
                            h = c4d.gui.SizePix(100)
                    
                            self.GroupBegin(id=9001, flags=c4d.BFH_SCALEFIT, groupflags = c4d.BFV_GRIDGROUP_EQUALCOLS | c4d.BFV_GRIDGROUP_EQUALROWS, cols=4, rows=4,initw=0, inith=0)
                    
                            self.GroupSpace(0, 0)
                            for imageId in xrange(10):
                                bitmapButton = self.AddCustomGui(imageId, c4d.CUSTOMGUI_BITMAPBUTTON, "", c4d.BFH_FIT|c4d.BFV_TOP, w, h, bcBitmapButton)
                            # Red Button Through Class
                            red_button = ColorButton()
                            red_button.create(self, w=100,h=100,color=(255,0,0), btn_id=6000)
                    
                            self.GroupEnd()
                            
                            
                            self.GroupEnd()
                            return True
                        
                    if __name__ == "__main__":
                        dlg = MyDialog()
                        dlg.Open(dlgtype=c4d.DLG_TYPE_ASYNC)
                    
                    M 1 Reply Last reply Reply Quote 0
                    • M
                      m_adam @bentraje
                      last edited by m_adam

                      @bentraje said in Unexpected Margin/Padding on AddCustomGui:

                      Sorry for reviving the thread but I just hit a snag on using the same code but for colored buttons. It doesn't respect the settings and gives an unnecessary margin even though I used the c4d.gui.SizePix() code.

                          def create(self, dlg, w, h, color, btn_id):
                              bmp_btn = dlg.AddCustomGui(btn_id, c4d.CUSTOMGUI_BITMAPBUTTON, "",c4d.BFH_FIT|c4d.BFV_TOP, w, h, bcBitmapButton)
                      
                              
                      class MyDialog(c4d.gui.GeDialog):
                      
                          def CreateLayout(self):
                              red_button = ColorButton()
                              red_button.create(self, w=100,h=100,color=(255,0,0), btn_id=6000)
                              return True
                      

                      You don't use c4d.gui.SizePix() in your code and that's why it fails.

                      Cheers,
                      Maxime.

                      MAXON SDK Specialist

                      Development Blog, MAXON Registered Developer

                      1 Reply Last reply Reply Quote 1
                      • B
                        bentraje
                        last edited by

                        You are right.

                        self.width = c4d.gui.SizePix(w)
                        self.height = c4d.gui.SizePix(h)
                        self.color = color
                        

                        wasn't actually used.

                        Will close this thread now and crawl to my little cave of shame. lol

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