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

    GeDialog layout

    PYTHON Development
    0
    5
    460
    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
      Helper
      last edited by

      On 07/03/2013 at 12:26, xxxxxxxx wrote:

      Hi all,

      I've adapted some sample code from Per Anders' wiki to experiment with the implementation of a settings dialog for a script I'm writing. Getting a decent dialog layout has been a really try-and-fail process so far, but I think I'm finally starting to grok GeDialog...

      A couple of things are puzzling to me still: 
      - Is there a way to get the multiline edit text box to actually be read-only? I thought I had the flags set correctly, but its still editable
      - Failing that, is the solution really to add a series of static text boxes?

      Here's the script as it stands (Note: it is just a dummy dialog at this point, with none of the hooks back to the functional part of the script).

      ==========

      import c4d
      from c4d import gui
      #Welcome to the world of Python

      GROUP_ID1=1000
      GROUP_ID2=1001
      TEXTBOX=1002
      BUTTON1=1003
      BUTTON2=1004
      HNCHECK=1005
      CONNECTCHECK=1006
      RAILCHECK=1007
      GROUPCHECK=1008

      class SettingsDlg(gui.GeDialog) :

      def CreateLayout(self) :
             #creat the layout of the dialog
             self.GroupBegin(GROUP_ID1, flags=c4d.BFH_SCALEFIT|c4d.BFV_SCALEFIT, cols=1, rows=7, title="AutoNeuron", groupflags=5)
             self.GroupBorderSpace(10, 10, 10, 10)
             
             #add multiline edit box for script description
             self.AddMultiLineEditText(TEXTBOX, flags=c4d.BFH_CENTER|c4d.BFV_TOP, inith=80, initw=300, style=0000400)
             
             #add check boxes for various construction options
             self.AddCheckbox(HNCHECK, flags=c4d.BFH_LEFT, initw=300, inith=0, name="Add HyperNURBs")
             self.SetBool(HNCHECK, True)
             
             self.AddCheckbox(CONNECTCHECK, flags=c4d.BFH_LEFT, initw=300, inith=0, name="Add connect object")
             self.SetBool(CONNECTCHECK, True)
             
             self.AddCheckbox(RAILCHECK, flags=c4d.BFH_LEFT, initw=300, inith=0, name="Add rail splines (controls thickness)")
             self.SetBool(RAILCHECK, True)
             
             self.AddCheckbox(GROUPCHECK, flags=c4d.BFH_LEFT, initw=300, inith=0, name="Group splines")
             self.SetBool(GROUPCHECK, True)

      self.GroupEnd()

      self.GroupBegin(GROUP_ID2, flags=c4d.BFH_RIGHT|c4d.BFV_BOTTOM, cols=2, rows=1, title="", groupflags=5)
             self.GroupBorderSpace(10, 10, 10, 10)
             self.AddButton(BUTTON1, flags=c4d.BFH_RIGHT, name="Cancel")
             self.AddButton(BUTTON2, flags=c4d.BFH_RIGHT, name="Import File")
             self.GroupEnd()
             
             return True

      def InitValues(self) :
             #initiate the gadgets with values
             self.SetString(TEXTBOX, "The AutoNeuron script imports neuromorpho SWC files "
             "and creates spline-based geometry. Choose modeling options below; "
             "if all boxes are unchecked, only the base splines will be added to the scene:")
             return True

      def Command(self, id, msg) :
             #handle user input
             if id==BUTTON1:
                 self.Close()
                 return False
             elif id==BUTTON2:
                 self.Close()
                 return True

      dlg = SettingsDlg()
      dlg.Open(c4d.DLG_TYPE_ASYNC, defaultw=500, defaulth=500)

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

        On 07/03/2013 at 13:40, xxxxxxxx wrote:

        This is a script. Not a plugin.
        Give it a try and see if it answers your question:

        import c4d  
        from c4d import gui  
          
        class YourDialog(gui.GeDialog) :  
          
          BUTTON_ID = 1001  
          TEXTBOX_ID = 1002  
            
          def CreateLayout(self) :  
          
              self.AddButton(self.BUTTON_ID, c4d.BFH_SCALE|c4d.BFV_SCALE, 100, 25, "Close Dialog")  
           
              self.AddMultiLineEditText(self.TEXTBOX_ID, flags=c4d.BFH_CENTER|c4d.BFV_TOP, inith=80, initw=300, style=c4d.DR_MULTILINE_READONLY|c4d.DR_MULTILINE_WORDWRAP)  
           
              return True  
          
          def InitValues(self) :          #This method initializes things when the plugin starts      
          
              self.SetString(self.TEXTBOX_ID, "The AutoNeuron script imports neuromorpho SWC files "\  
             "and creates spline-based geometry. Choose modeling options below; " \  
             "if all boxes are unchecked, only the base splines will be added to the scene:")          
                
              return True  
          
          def Command(self, id, msg) :  
              if id==self.BUTTON_ID:  
                  self.Close()  
              return True  
          
          
        if __name__=='__main__':  
          dlg = YourDialog()   
          dlg.Open(dlgtype=c4d.DLG_TYPE_MODAL, defaultw=400, defaulth=400)
        

        -ScottA

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

          On 07/03/2013 at 14:16, xxxxxxxx wrote:

          Many thanks; that works much better...

          Does anyone else thank that the SDK docs could use some more sample code?

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

            On 28/05/2014 at 10:27, xxxxxxxx wrote:

            Does it have any example code to begin with???  Lol, I would second that.

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

              On 08/07/2014 at 11:40, xxxxxxxx wrote:

              Did you have a look in the "examples" folder of the Python Documentation?

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