2 from wxPython
.wx
import *
4 #---------------------------------------------------------------------------
6 class TestSashWindow(wxPanel
):
10 ID_WINDOW_BOTTOM
= 5103
13 def __init__(self
, parent
, log
):
14 wxPanel
.__init
__(self
, parent
, -1)
18 # will occupy the space not used by the Layout Algorithm
19 self
.remainingSpace
= wxPanel(self
, -1, style
=wxSUNKEN_BORDER
)
21 EVT_SASH_DRAGGED_RANGE(self
, self
.ID_WINDOW_TOP
,
22 self
.ID_WINDOW_BOTTOM
, self
.OnSashDrag
)
23 EVT_SIZE(self
, self
.OnSize
)
26 # Create some layout windows
27 # A window like a toolbar
28 win
= wxSashLayoutWindow(self
, self
.ID_WINDOW_TOP
, wxDefaultPosition
,
29 wxSize(200, 30), wxNO_BORDER|wxSW_3D
)
30 win
.SetDefaultSize(wxSize(1000, 30))
31 win
.SetOrientation(wxLAYOUT_HORIZONTAL
)
32 win
.SetAlignment(wxLAYOUT_TOP
)
33 win
.SetBackgroundColour(wxColour(255, 0, 0))
34 win
.SetSashVisible(wxSASH_BOTTOM
, True)
39 # A window like a statusbar
40 win
= wxSashLayoutWindow(self
, self
.ID_WINDOW_BOTTOM
,
41 wxDefaultPosition
, wxSize(200, 30),
43 win
.SetDefaultSize(wxSize(1000, 30))
44 win
.SetOrientation(wxLAYOUT_HORIZONTAL
)
45 win
.SetAlignment(wxLAYOUT_BOTTOM
)
46 win
.SetBackgroundColour(wxColour(0, 0, 255))
47 win
.SetSashVisible(wxSASH_TOP
, True)
49 self
.bottomWindow
= win
52 # A window to the left of the client window
53 win
= wxSashLayoutWindow(self
, self
.ID_WINDOW_LEFT1
,
54 wxDefaultPosition
, wxSize(200, 30),
56 win
.SetDefaultSize(wxSize(120, 1000))
57 win
.SetOrientation(wxLAYOUT_VERTICAL
)
58 win
.SetAlignment(wxLAYOUT_LEFT
)
59 win
.SetBackgroundColour(wxColour(0, 255, 0))
60 win
.SetSashVisible(wxSASH_RIGHT
, True)
61 win
.SetExtraBorderSize(10)
62 textWindow
= wxTextCtrl(win
, -1, "", wxDefaultPosition
, wxDefaultSize
,
63 wxTE_MULTILINE|wxSUNKEN_BORDER
)
64 textWindow
.SetValue("A sub window")
66 self
.leftWindow1
= win
69 # Another window to the left of the client window
70 win
= wxSashLayoutWindow(self
, self
.ID_WINDOW_LEFT2
,
71 wxDefaultPosition
, wxSize(200, 30),
73 win
.SetDefaultSize(wxSize(120, 1000))
74 win
.SetOrientation(wxLAYOUT_VERTICAL
)
75 win
.SetAlignment(wxLAYOUT_LEFT
)
76 win
.SetBackgroundColour(wxColour(0, 255, 255))
77 win
.SetSashVisible(wxSASH_RIGHT
, True)
79 self
.leftWindow2
= win
82 def OnSashDrag(self
, event
):
83 if event
.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE
:
87 if eID
== self
.ID_WINDOW_TOP
:
88 self
.topWindow
.SetDefaultSize(wxSize(1000, event
.GetDragRect().height
))
90 elif eID
== self
.ID_WINDOW_LEFT1
:
91 self
.leftWindow1
.SetDefaultSize(wxSize(event
.GetDragRect().width
, 1000))
94 elif eID
== self
.ID_WINDOW_LEFT2
:
95 self
.leftWindow2
.SetDefaultSize(wxSize(event
.GetDragRect().width
, 1000))
97 elif eID
== self
.ID_WINDOW_BOTTOM
:
98 self
.bottomWindow
.SetDefaultSize(wxSize(1000, event
.GetDragRect().height
))
100 wxLayoutAlgorithm().LayoutWindow(self
, self
.remainingSpace
)
101 self
.remainingSpace
.Refresh()
103 def OnSize(self
, event
):
104 wxLayoutAlgorithm().LayoutWindow(self
, self
.remainingSpace
)
106 #---------------------------------------------------------------------------
108 def runTest(frame
, nb
, log
):
109 win
= TestSashWindow(nb
, log
)
112 #---------------------------------------------------------------------------
123 if __name__
== '__main__':
126 run
.main(['', os
.path
.basename(sys
.argv
[0])])