]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/SashWindow.py
   4 #--------------------------------------------------------------------------- 
   6 class TestSashWindow(wx
.Panel
): 
  10     ID_WINDOW_BOTTOM 
= 5103 
  13     def __init__(self
, parent
, log
): 
  14         wx
.Panel
.__init
__(self
, parent
, -1) 
  18         # will occupy the space not used by the Layout Algorithm 
  19         self
.remainingSpace 
= wx
.Panel(self
, -1, style
=wx
.SUNKEN_BORDER
) 
  22             wx
.EVT_SASH_DRAGGED_RANGE
, self
.OnSashDrag
, 
  23             id=self
.ID_WINDOW_TOP
, id2
=self
.ID_WINDOW_BOTTOM
,  
  26         self
.Bind(wx
.EVT_SIZE
, self
.OnSize
) 
  29         # Create some layout windows 
  30         # A window like a toolbar 
  31         win 
= wx
.SashLayoutWindow( 
  32             self
, self
.ID_WINDOW_TOP
, wx
.DefaultPosition
, (200, 30),  
  36         win
.SetDefaultSize((1000, 30)) 
  37         win
.SetOrientation(wx
.LAYOUT_HORIZONTAL
) 
  38         win
.SetAlignment(wx
.LAYOUT_TOP
) 
  39         win
.SetBackgroundColour(wx
.Colour(255, 0, 0)) 
  40         win
.SetSashVisible(wx
.SASH_BOTTOM
, True) 
  45         # A window like a statusbar 
  46         win 
= wx
.SashLayoutWindow( 
  47                 self
, self
.ID_WINDOW_BOTTOM
, wx
.DefaultPosition
, (200, 30),  
  51         win
.SetDefaultSize((1000, 30)) 
  52         win
.SetOrientation(wx
.LAYOUT_HORIZONTAL
) 
  53         win
.SetAlignment(wx
.LAYOUT_BOTTOM
) 
  54         win
.SetBackgroundColour(wx
.Colour(0, 0, 255)) 
  55         win
.SetSashVisible(wx
.SASH_TOP
, True) 
  57         self
.bottomWindow 
= win
 
  59         # A window to the left of the client window 
  60         win 
=  wx
.SashLayoutWindow( 
  61                 self
, self
.ID_WINDOW_LEFT1
, wx
.DefaultPosition
, (200, 30),  
  65         win
.SetDefaultSize((120, 1000)) 
  66         win
.SetOrientation(wx
.LAYOUT_VERTICAL
) 
  67         win
.SetAlignment(wx
.LAYOUT_LEFT
) 
  68         win
.SetBackgroundColour(wx
.Colour(0, 255, 0)) 
  69         win
.SetSashVisible(wx
.SASH_RIGHT
, True) 
  70         win
.SetExtraBorderSize(10) 
  71         textWindow 
= wx
.TextCtrl( 
  72                         win
, -1, "", wx
.DefaultPosition
, wx
.DefaultSize
,  
  73                         wx
.TE_MULTILINE|wx
.SUNKEN_BORDER
 
  76         textWindow
.SetValue("A sub window") 
  78         self
.leftWindow1 
= win
 
  81         # Another window to the left of the client window 
  82         win 
= wx
.SashLayoutWindow( 
  83                 self
, self
.ID_WINDOW_LEFT2
, wx
.DefaultPosition
, (200, 30),  
  87         win
.SetDefaultSize((120, 1000)) 
  88         win
.SetOrientation(wx
.LAYOUT_VERTICAL
) 
  89         win
.SetAlignment(wx
.LAYOUT_LEFT
) 
  90         win
.SetBackgroundColour(wx
.Colour(0, 255, 255)) 
  91         win
.SetSashVisible(wx
.SASH_RIGHT
, True) 
  93         self
.leftWindow2 
= win
 
  96     def OnSashDrag(self
, event
): 
  97         if event
.GetDragStatus() == wx
.SASH_STATUS_OUT_OF_RANGE
: 
 102         if eID 
== self
.ID_WINDOW_TOP
: 
 103             self
.topWindow
.SetDefaultSize((1000, event
.GetDragRect().height
)) 
 105         elif eID 
== self
.ID_WINDOW_LEFT1
: 
 106             self
.leftWindow1
.SetDefaultSize((event
.GetDragRect().width
, 1000)) 
 109         elif eID 
== self
.ID_WINDOW_LEFT2
: 
 110             self
.leftWindow2
.SetDefaultSize((event
.GetDragRect().width
, 1000)) 
 112         elif eID 
== self
.ID_WINDOW_BOTTOM
: 
 113             self
.bottomWindow
.SetDefaultSize((1000, event
.GetDragRect().height
)) 
 115         wx
.LayoutAlgorithm().LayoutWindow(self
, self
.remainingSpace
) 
 116         self
.remainingSpace
.Refresh() 
 118     def OnSize(self
, event
): 
 119         wx
.LayoutAlgorithm().LayoutWindow(self
, self
.remainingSpace
) 
 121 #--------------------------------------------------------------------------- 
 123 def runTest(frame
, nb
, log
): 
 124     win 
= TestSashWindow(nb
, log
) 
 127 #--------------------------------------------------------------------------- 
 131 wx.SashLayoutWindow responds to OnCalculateLayout events generated by  
 132 wxLayoutAlgorithm. It allows the application to use simple accessors to  
 133 specify how the window should be laid out, rather than having to respond  
 134 to events. The fact that the class derives from wx.SashWindow allows sashes  
 135 to be used if required, to allow the windows to be user-resizable. 
 137 The documentation for wx.LayoutAlgorithm explains the purpose of this class  
 143 if __name__ 
== '__main__': 
 146     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])