import wx


class MyDialog(wx.Dialog):
    def __init__ (self, *args, **kwds):
        wx.Dialog.__init__(self, *args, **kwds)
        
        self.scroll = wx.ScrolledWindow(self, -1)
        
        self.chkbox = {} 
        
        self.checkbox_select_all = wx.CheckBox ( self.scroll, label = "Select all" )
        self.buttonOk = wx.Button( self.scroll, wx.ID_OK, "Submit"  )
        self.buttonCancel = wx.Button( self.scroll, wx.ID_CANCEL, "Cancel"  )


        self.__set_properties()
        self.__do_layout()        
        
        
    def __do_layout(self):

        sizer_general = wx.BoxSizer(wx.VERTICAL)

        #
        sizer_principal = wx.StaticBox(self.scroll, wx.ID_ANY, "Select : " )
        sizer_corp = wx.StaticBoxSizer(sizer_principal, wx.VERTICAL)

        sizer_liste = wx.BoxSizer(wx.VERTICAL)
        sizer_liste.Add((-1, 10))
        sizer_liste.Add( self.checkbox_select_all , 0, wx.ALL, 5)
        sizer_liste.Add((-1, 10))
        


        for index in range(0, 30):
                                              
                self.chkbox [index] = wx.CheckBox ( self.scroll, label = str(index) + ' ----- ' + str(index) + ' ----- ')
                
                sizer_liste.Add( self.chkbox [index] , 0, wx.ALL, 5)

        sizer_corp.Add(sizer_liste, 0, wx.ALL, 5)


        #
        sizer_buttons = wx.BoxSizer(wx.HORIZONTAL)

        sizer_buttons.Add(self.buttonOk, 0, wx.ALL, 5)
        sizer_buttons.Add(self.buttonCancel, 0, wx.ALL, 5)

        #
        sizer_general.Add(sizer_corp, 0, wx.ALL|wx.CENTER, 5)
        sizer_general.Add((-1, 5))
        sizer_general.Add(sizer_buttons, 0, wx.ALL|wx.CENTER, 5)
        sizer_general.Add((-1, 5))

        self.scroll.SetSizer(sizer_general)
        sizer_general.Fit(self)

        self.Layout()
        

        self.Center()

    
    def __set_properties(self):   
        
        self.scroll.SetScrollRate(0,25)
        

class MyApp(wx.App):
    def OnInit(self):
        self.dialog = MyDialog(None, wx.ID_ANY, "")
        self.SetTopWindow(self.dialog)
        self.dialog.ShowModal()
        self.dialog.Destroy()
        return True


if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()

 
