2006-11-11 02:40:41 -05:00
|
|
|
|
|
|
|
import wx
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
label1 = "Click here to show pane"
|
|
|
|
label2 = "Click here to hide pane"
|
|
|
|
|
|
|
|
btnlbl1 = "call Expand(True)"
|
|
|
|
btnlbl2 = "call Expand(False)"
|
|
|
|
|
|
|
|
|
|
|
|
class TestPanel(wx.Panel):
|
|
|
|
def __init__(self, parent, log):
|
|
|
|
self.log = log
|
|
|
|
wx.Panel.__init__(self, parent, -1)
|
|
|
|
|
|
|
|
title = wx.StaticText(self, label="wx.CollapsiblePane")
|
|
|
|
title.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD))
|
|
|
|
title.SetForegroundColour("blue")
|
|
|
|
|
|
|
|
self.cp = cp = wx.CollapsiblePane(self, label=label1)
|
|
|
|
self.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.OnPaneChanged, cp)
|
|
|
|
self.MakePaneContent(cp.GetPane())
|
|
|
|
|
|
|
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
|
|
|
self.SetSizer(sizer)
|
|
|
|
sizer.Add(title, 0, wx.ALL, 25)
|
|
|
|
sizer.Add(cp, 0, wx.RIGHT|wx.LEFT|wx.EXPAND, 25)
|
|
|
|
|
|
|
|
self.btn = btn = wx.Button(self, label=btnlbl1)
|
|
|
|
self.Bind(wx.EVT_BUTTON, self.OnToggle, btn)
|
|
|
|
sizer.Add(btn, 0, wx.ALL, 25)
|
|
|
|
|
|
|
|
|
|
|
|
def OnToggle(self, evt):
|
|
|
|
self.cp.Collapse(self.cp.IsExpanded())
|
|
|
|
self.OnPaneChanged()
|
|
|
|
|
|
|
|
|
|
|
|
def OnPaneChanged(self, evt=None):
|
2006-11-11 21:40:57 -05:00
|
|
|
if evt:
|
|
|
|
self.log.write('wx.EVT_COLLAPSIBLEPANE_CHANGED: %s' % evt.Collapsed)
|
|
|
|
|
|
|
|
# redo the layout
|
2006-11-11 02:40:41 -05:00
|
|
|
self.Layout()
|
2006-11-11 21:40:57 -05:00
|
|
|
|
|
|
|
# and also change the labels
|
2006-11-11 02:40:41 -05:00
|
|
|
if self.cp.IsExpanded():
|
|
|
|
self.cp.SetLabel(label2)
|
|
|
|
self.btn.SetLabel(btnlbl2)
|
|
|
|
else:
|
|
|
|
self.cp.SetLabel(label1)
|
|
|
|
self.btn.SetLabel(btnlbl1)
|
|
|
|
self.btn.SetInitialSize()
|
|
|
|
|
|
|
|
|
|
|
|
def MakePaneContent(self, pane):
|
|
|
|
'''Just make a few controls to put on the collapsible pane'''
|
|
|
|
nameLbl = wx.StaticText(pane, -1, "Name:")
|
|
|
|
name = wx.TextCtrl(pane, -1, "");
|
|
|
|
|
|
|
|
addrLbl = wx.StaticText(pane, -1, "Address:")
|
|
|
|
addr1 = wx.TextCtrl(pane, -1, "");
|
|
|
|
addr2 = wx.TextCtrl(pane, -1, "");
|
|
|
|
|
|
|
|
cstLbl = wx.StaticText(pane, -1, "City, State, Zip:")
|
|
|
|
city = wx.TextCtrl(pane, -1, "", size=(150,-1));
|
|
|
|
state = wx.TextCtrl(pane, -1, "", size=(50,-1));
|
|
|
|
zip = wx.TextCtrl(pane, -1, "", size=(70,-1));
|
|
|
|
|
|
|
|
addrSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
|
|
|
|
addrSizer.AddGrowableCol(1)
|
|
|
|
addrSizer.Add(nameLbl, 0,
|
|
|
|
wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
|
|
|
|
addrSizer.Add(name, 0, wx.EXPAND)
|
|
|
|
addrSizer.Add(addrLbl, 0,
|
|
|
|
wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
|
|
|
|
addrSizer.Add(addr1, 0, wx.EXPAND)
|
2006-11-11 21:40:57 -05:00
|
|
|
addrSizer.Add((5,5))
|
2006-11-11 02:40:41 -05:00
|
|
|
addrSizer.Add(addr2, 0, wx.EXPAND)
|
|
|
|
|
|
|
|
addrSizer.Add(cstLbl, 0,
|
|
|
|
wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
|
|
|
|
|
|
|
|
cstSizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
|
|
cstSizer.Add(city, 1)
|
|
|
|
cstSizer.Add(state, 0, wx.LEFT|wx.RIGHT, 5)
|
|
|
|
cstSizer.Add(zip)
|
|
|
|
addrSizer.Add(cstSizer, 0, wx.EXPAND)
|
|
|
|
|
2006-11-11 21:40:57 -05:00
|
|
|
border = wx.BoxSizer()
|
|
|
|
border.Add(addrSizer, 1, wx.EXPAND|wx.ALL, 5)
|
|
|
|
pane.SetSizer(border)
|
2006-11-11 02:40:41 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
def runTest(frame, nb, log):
|
|
|
|
win = TestPanel(nb, log)
|
|
|
|
return win
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
overview = """<html><body>
|
|
|
|
<h2><center>wx.CollapsiblePane</center></h2>
|
|
|
|
|
|
|
|
A collapsable panel is a container with an embedded button-like
|
|
|
|
control which can be used by the user to collapse or expand the pane's
|
|
|
|
contents.
|
|
|
|
|
|
|
|
</body></html>
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import sys,os
|
|
|
|
import run
|
|
|
|
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
|
|
|
|
|