import  wx

#---------------------------------------------------------------------------

class MySplitter(wx.SplitterWindow):
   def __init__(self, parent, ID):
       wx.SplitterWindow.__init__(self, parent, ID,
                                  style = wx.SP_3D
                                  #| wx.SP_LIVE_UPDATE
                                  )

       self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED, self.OnSashChanged)
       self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGING, self.OnSashChanging)

   def OnSashChanged(self, evt):
       debug(
             "sash changed to %s\n" % str(evt.GetSashPosition()) )

   def OnSashChanging(self, evt):
       debug("sash changing to %s\n" % str(evt.GetSashPosition()) )

#---------------------------------------------------------------------------

def splitWindow(nb):
   splitter = MySplitter(nb, -1)

   p1 = wx.Window(splitter, -1)
   p1.SetBackgroundColour(wx.RED)
   wx.StaticText(p1, -1, "Panel One", (5,5))#.SetBackgroundColour(wx.RED)

   p2 = wx.Window(splitter, -1)
   p2.SetBackgroundColour(wx.BLUE)
   p2.SetForegroundColour(wx.WHITE)
   wx.StaticText(p2, -1, "Panel Two ", (5,5))#.SetBackgroundColour(wx.BLUE)

   splitter.SetMinimumPaneSize(20)
   splitter.SplitVertically(p1, p2, -100)

   return splitter


#---------------------------------------------------------------------------


overview = """\
This class manages up to two subwindows. The current view can be split
into two programmatically (perhaps from a menu command), and unsplit
either programmatically or via the wx.SplitterWindow user interface.
"""

class App(wx.App):
   def OnInit(self):
       frm = wx.Frame(None)
       frm.SetTitle("Sample")
       frm.Centre(wx.BOTH)

       #If I disable this code the split want work with the panel created
       if True:
           frm.SetSizer(wx.BoxSizer(wx.VERTICAL))
           panel = wx.Panel(frm, -1)
	   panel.sizer = wx.BoxSizer(wx.VERTICAL)
           frm.GetSizer().Add(panel, 1, wx.EXPAND | wx.ALL)
           panel.SetBackgroundColour(wx.GREEN)
           splitter = splitWindow(panel)
	   panel.sizer.Add(splitter, 1, wx.EXPAND|wx.ALL, 0)
	   panel.SetSizer(panel.sizer)
       else:
           splitWindow(frm)


       frm.Show()
       #sfrm.Destroy()

       return True

def debug(*args):
   print __name__, args

if __name__ == '__main__':

   app = App(False)
   app.MainLoop()

