f30589a9ea
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
635 lines
22 KiB
Python
635 lines
22 KiB
Python
# 11/26/2003 - Jeff Grimmett (grimmtooth@softhome.net)
|
|
#
|
|
# o Had to do a bit of rework for the demo; there was no panel attached
|
|
# to the demo window, so all buttons were showing as dark gray on
|
|
# dark gray. I have no idea why this didn't break before. Robin,
|
|
# please examine my changes to ensure you approve. It's rather
|
|
# hackish looking.
|
|
#
|
|
|
|
#----------------------------------------------------------------------
|
|
# sizer test code
|
|
#----------------------------------------------------------------------
|
|
|
|
import wx
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
class SampleWindow(wx.PyWindow):
|
|
"""
|
|
A simple window that is used as sizer items in the tests below to
|
|
show how the various sizers work.
|
|
"""
|
|
def __init__(self, parent, text, pos=wx.DefaultPosition, size=wx.DefaultSize):
|
|
wx.PyWindow.__init__(self, parent, -1,
|
|
#style=wx.RAISED_BORDER
|
|
#style=wx.SUNKEN_BORDER
|
|
style=wx.SIMPLE_BORDER
|
|
)
|
|
self.text = text
|
|
if size != wx.DefaultSize:
|
|
self.bestsize = size
|
|
else:
|
|
self.bestsize = (80,25)
|
|
self.SetSize(self.GetBestSize())
|
|
|
|
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
|
self.Bind(wx.EVT_SIZE, self.OnSize)
|
|
self.Bind(wx.EVT_LEFT_UP, self.OnCloseParent)
|
|
|
|
|
|
def OnPaint(self, evt):
|
|
sz = self.GetSize()
|
|
dc = wx.PaintDC(self)
|
|
w,h = dc.GetTextExtent(self.text)
|
|
dc.Clear()
|
|
dc.DrawText(self.text, (sz.width-w)/2, (sz.height-h)/2)
|
|
|
|
def OnSize(self, evt):
|
|
self.Refresh()
|
|
|
|
def OnCloseParent(self, evt):
|
|
p = wx.GetTopLevelParent(self)
|
|
if p:
|
|
p.Close()
|
|
|
|
def DoGetBestSize(self):
|
|
return self.bestsize
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox1(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox2(win):
|
|
box = wx.BoxSizer(wx.VERTICAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox3(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox4(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 1, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 1, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox5(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 3, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 1, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox6(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 1, wx.ALIGN_TOP)
|
|
box.Add(SampleWindow(win, "two"), 1, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 1, wx.ALIGN_CENTER)
|
|
box.Add(SampleWindow(win, "four"), 1, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "five"), 1, wx.ALIGN_BOTTOM)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox7(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
|
|
box.Add((60, 20), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBox8(win):
|
|
box = wx.BoxSizer(wx.VERTICAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add((0,0), 1)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.ALIGN_CENTER)
|
|
box.Add((0,0), 1)
|
|
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
|
|
# box.Add(SampleWindow(win, "five"), 1, wx.EXPAND)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBorder1(win):
|
|
bdr = wx.BoxSizer(wx.HORIZONTAL)
|
|
btn = SampleWindow(win, "border")
|
|
btn.SetSize((80, 80))
|
|
bdr.Add(btn, 1, wx.EXPAND|wx.ALL, 15)
|
|
|
|
return bdr
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBorder2(win):
|
|
bdr = wx.BoxSizer(wx.HORIZONTAL)
|
|
btn = SampleWindow(win, "border")
|
|
btn.SetSize((80, 80))
|
|
bdr.Add(btn, 1, wx.EXPAND | wx.EAST | wx.WEST, 15)
|
|
|
|
return bdr
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBorder3(win):
|
|
bdr = wx.BoxSizer(wx.HORIZONTAL)
|
|
btn = SampleWindow(win, "border")
|
|
btn.SetSize((80, 80))
|
|
bdr.Add(btn, 1, wx.EXPAND | wx.NORTH | wx.WEST, 15)
|
|
|
|
return bdr
|
|
|
|
#----------------------------------------------------------------------
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeBoxInBox(win):
|
|
box = wx.BoxSizer(wx.VERTICAL)
|
|
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
|
|
box2 = wx.BoxSizer(wx.HORIZONTAL)
|
|
box2.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
btn3 = SampleWindow(win, "three")
|
|
box2.Add(btn3, 0, wx.EXPAND)
|
|
box2.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
|
|
box2.Add(SampleWindow(win, "five"), 0, wx.EXPAND)
|
|
|
|
box3 = wx.BoxSizer(wx.VERTICAL)
|
|
box3.AddMany([ (SampleWindow(win, "six"), 0, wx.EXPAND),
|
|
(SampleWindow(win, "seven"), 2, wx.EXPAND),
|
|
(SampleWindow(win, "eight"), 1, wx.EXPAND),
|
|
(SampleWindow(win, "nine"), 1, wx.EXPAND),
|
|
])
|
|
|
|
box2.Add(box3, 1, wx.EXPAND)
|
|
box.Add(box2, 1, wx.EXPAND)
|
|
|
|
box.Add(SampleWindow(win, "ten"), 0, wx.EXPAND)
|
|
|
|
##box.Hide(btn3)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeBoxInBorder(win):
|
|
bdr = wx.BoxSizer(wx.HORIZONTAL)
|
|
box = makeSimpleBox3(win)
|
|
bdr.Add(box, 1, wx.EXPAND | wx.ALL, 15)
|
|
|
|
return bdr
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeBorderInBox(win):
|
|
insideBox = wx.BoxSizer(wx.HORIZONTAL)
|
|
|
|
box2 = wx.BoxSizer(wx.HORIZONTAL)
|
|
box2.AddMany([ (SampleWindow(win, "one"), 0, wx.EXPAND),
|
|
(SampleWindow(win, "two"), 0, wx.EXPAND),
|
|
(SampleWindow(win, "three"), 0, wx.EXPAND),
|
|
(SampleWindow(win, "four"), 0, wx.EXPAND),
|
|
(SampleWindow(win, "five"), 0, wx.EXPAND),
|
|
])
|
|
|
|
insideBox.Add(box2, 0, wx.EXPAND)
|
|
|
|
bdr = wx.BoxSizer(wx.HORIZONTAL)
|
|
bdr.Add(SampleWindow(win, "border"), 1, wx.EXPAND | wx.ALL)
|
|
insideBox.Add(bdr, 1, wx.EXPAND | wx.ALL, 20)
|
|
|
|
box3 = wx.BoxSizer(wx.VERTICAL)
|
|
box3.AddMany([ (SampleWindow(win, "six"), 0, wx.EXPAND),
|
|
(SampleWindow(win, "seven"), 2, wx.EXPAND),
|
|
(SampleWindow(win, "eight"), 1, wx.EXPAND),
|
|
(SampleWindow(win, "nine"), 1, wx.EXPAND),
|
|
])
|
|
insideBox.Add(box3, 1, wx.EXPAND)
|
|
|
|
outsideBox = wx.BoxSizer(wx.VERTICAL)
|
|
outsideBox.Add(SampleWindow(win, "top"), 0, wx.EXPAND)
|
|
outsideBox.Add(insideBox, 1, wx.EXPAND)
|
|
outsideBox.Add(SampleWindow(win, "bottom"), 0, wx.EXPAND)
|
|
|
|
return outsideBox
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeGrid1(win):
|
|
gs = wx.GridSizer(3, 3, 2, 2) # rows, cols, hgap, vgap
|
|
|
|
gs.AddMany([ (SampleWindow(win, 'one'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'two'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'three'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'four'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'five'), 0, wx.EXPAND),
|
|
#(75, 50),
|
|
(SampleWindow(win, 'six'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'seven'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'eight'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'nine'), 0, wx.EXPAND),
|
|
])
|
|
|
|
return gs
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeGrid2(win):
|
|
gs = wx.GridSizer(3, 3) # rows, cols, hgap, vgap
|
|
|
|
box = wx.BoxSizer(wx.VERTICAL)
|
|
box.Add(SampleWindow(win, 'A'), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, 'B'), 1, wx.EXPAND)
|
|
|
|
gs2 = wx.GridSizer(2,2, 4, 4)
|
|
gs2.AddMany([ (SampleWindow(win, 'C'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'E'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'F'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'G'), 0, wx.EXPAND)])
|
|
|
|
gs.AddMany([ (SampleWindow(win, 'one'), 0, wx.ALIGN_RIGHT | wx.ALIGN_BOTTOM),
|
|
(SampleWindow(win, 'two'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'three'), 0, wx.ALIGN_LEFT | wx.ALIGN_BOTTOM),
|
|
(SampleWindow(win, 'four'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'five'), 0, wx.ALIGN_CENTER),
|
|
(SampleWindow(win, 'six'), 0, wx.EXPAND),
|
|
(box, 0, wx.EXPAND | wx.ALL, 10),
|
|
(SampleWindow(win, 'eight'), 0, wx.EXPAND),
|
|
(gs2, 0, wx.EXPAND | wx.ALL, 4),
|
|
])
|
|
|
|
return gs
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeGrid3(win):
|
|
gs = wx.FlexGridSizer(3, 3, 2, 2) # rows, cols, hgap, vgap
|
|
|
|
gs.AddMany([ (SampleWindow(win, 'one'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'two'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'three'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'four'), 0, wx.EXPAND),
|
|
#(SampleWindow(win, 'five'), 0, wx.EXPAND),
|
|
((175, 50)),
|
|
(SampleWindow(win, 'six'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'seven'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'eight'), 0, wx.EXPAND),
|
|
(SampleWindow(win, 'nine'), 0, wx.EXPAND),
|
|
])
|
|
|
|
gs.AddGrowableRow(0)
|
|
gs.AddGrowableRow(2)
|
|
gs.AddGrowableCol(1)
|
|
return gs
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeGrid4(win):
|
|
bpos = wx.DefaultPosition
|
|
bsize = wx.Size(100, 50)
|
|
gs = wx.GridSizer(3, 3, 2, 2) # rows, cols, hgap, vgap
|
|
|
|
gs.AddMany([ (SampleWindow(win, 'one', bpos, bsize),
|
|
0, wx.ALIGN_TOP | wx.ALIGN_LEFT ),
|
|
(SampleWindow(win, 'two', bpos, bsize),
|
|
0, wx.ALIGN_TOP | wx.ALIGN_CENTER_HORIZONTAL ),
|
|
(SampleWindow(win, 'three', bpos, bsize),
|
|
0, wx.ALIGN_TOP | wx.ALIGN_RIGHT ),
|
|
(SampleWindow(win, 'four', bpos, bsize),
|
|
0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT ),
|
|
(SampleWindow(win, 'five', bpos, bsize),
|
|
0, wx.ALIGN_CENTER ),
|
|
(SampleWindow(win, 'six', bpos, bsize),
|
|
0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT ),
|
|
(SampleWindow(win, 'seven', bpos, bsize),
|
|
0, wx.ALIGN_BOTTOM | wx.ALIGN_LEFT ),
|
|
(SampleWindow(win, 'eight', bpos, bsize),
|
|
0, wx.ALIGN_BOTTOM | wx.ALIGN_CENTER_HORIZONTAL ),
|
|
(SampleWindow(win, 'nine', bpos, bsize),
|
|
0, wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT ),
|
|
])
|
|
|
|
return gs
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeShapes(win):
|
|
bpos = wx.DefaultPosition
|
|
bsize = wx.Size(100, 50)
|
|
gs = wx.GridSizer(3, 3, 2, 2) # rows, cols, hgap, vgap
|
|
|
|
gs.AddMany([ (SampleWindow(win, 'one', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_TOP | wx.ALIGN_LEFT ),
|
|
(SampleWindow(win, 'two', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_TOP | wx.ALIGN_CENTER_HORIZONTAL ),
|
|
(SampleWindow(win, 'three', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_TOP | wx.ALIGN_RIGHT ),
|
|
(SampleWindow(win, 'four', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT ),
|
|
(SampleWindow(win, 'five', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_CENTER ),
|
|
(SampleWindow(win, 'six', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT ),
|
|
(SampleWindow(win, 'seven', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_BOTTOM | wx.ALIGN_LEFT ),
|
|
(SampleWindow(win, 'eight', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_BOTTOM | wx.ALIGN_CENTER_HORIZONTAL ),
|
|
(SampleWindow(win, 'nine', bpos, bsize),
|
|
0, wx.SHAPED | wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT ),
|
|
])
|
|
|
|
return gs
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def makeSimpleBoxShaped(win):
|
|
box = wx.BoxSizer(wx.HORIZONTAL)
|
|
box.Add(SampleWindow(win, "one"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "two"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "three"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "four"), 0, wx.EXPAND)
|
|
box.Add(SampleWindow(win, "five"), 1, wx.SHAPED)
|
|
|
|
return box
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
theTests = [
|
|
("Simple horizontal boxes", makeSimpleBox1,
|
|
"This is a HORIZONTAL box sizer with four non-stretchable buttons held "
|
|
"within it. Notice that the buttons are added and aligned in the horizontal "
|
|
"dimension. Also notice that they are fixed size in the horizontal dimension, "
|
|
"but will stretch vertically."
|
|
),
|
|
|
|
("Simple vertical boxes", makeSimpleBox2,
|
|
"Exactly the same as the previous sample but using a VERTICAL box sizer "
|
|
"instead of a HORIZONTAL one."
|
|
),
|
|
|
|
("Add a stretchable", makeSimpleBox3,
|
|
"We've added one more button with the stretchable flag turned on. Notice "
|
|
"how it grows to fill the extra space in the otherwise fixed dimension."
|
|
),
|
|
|
|
("More than one stretchable", makeSimpleBox4,
|
|
"Here there are several items that are stretchable, they all divide up the "
|
|
"extra space evenly."
|
|
),
|
|
|
|
("Weighting factor", makeSimpleBox5,
|
|
"This one shows more than one stretchable, but one of them has a weighting "
|
|
"factor so it gets more of the free space."
|
|
),
|
|
|
|
("Edge Affinity", makeSimpleBox6,
|
|
"For items that don't completly fill their allotted space, and don't "
|
|
"stretch, you can specify which side (or the center) they should stay "
|
|
"attached to."
|
|
),
|
|
|
|
("Spacer", makeSimpleBox7,
|
|
"You can add empty space to be managed by a Sizer just as if it were a "
|
|
"window or another Sizer."
|
|
),
|
|
|
|
("Centering in available space", makeSimpleBox8,
|
|
"This one shows an item that does not expand to fill it's space, but rather"
|
|
"stays centered within it."
|
|
),
|
|
|
|
# ("Percent Sizer", makeSimpleBox6,
|
|
# "You can use the wx.BoxSizer like a Percent Sizer. Just make sure that all "
|
|
# "the weighting factors add up to 100!"
|
|
# ),
|
|
|
|
("", None, ""),
|
|
|
|
("Simple border sizer", makeSimpleBorder1,
|
|
"The wx.BoxSizer can leave empty space around its contents. This one "
|
|
"gives a border all the way around."
|
|
),
|
|
|
|
("East and West border", makeSimpleBorder2,
|
|
"You can pick and choose which sides have borders."
|
|
),
|
|
|
|
("North and West border", makeSimpleBorder3,
|
|
"You can pick and choose which sides have borders."
|
|
),
|
|
|
|
("", None, ""),
|
|
|
|
("Boxes inside of boxes", makeBoxInBox,
|
|
"This one shows nesting of boxes within boxes within boxes, using both "
|
|
"orientations. Notice also that button seven has a greater weighting "
|
|
"factor than its siblings."
|
|
),
|
|
|
|
("Boxes inside a Border", makeBoxInBorder,
|
|
"Sizers of different types can be nested within each other as well. "
|
|
"Here is a box sizer with several buttons embedded within a border sizer."
|
|
),
|
|
|
|
("Border in a Box", makeBorderInBox,
|
|
"Another nesting example. This one has Boxes and a Border inside another Box."
|
|
),
|
|
|
|
("", None, ""),
|
|
|
|
("Simple Grid", makeGrid1,
|
|
"This is an example of the wx.GridSizer. In this case all row heights "
|
|
"and column widths are kept the same as all the others and all items "
|
|
"fill their available space. The horizontal and vertical gaps are set to "
|
|
"2 pixels each."
|
|
),
|
|
|
|
("More Grid Features", makeGrid2,
|
|
"This is another example of the wx.GridSizer. This one has no gaps in the grid, "
|
|
"but various cells are given different alignment options and some of them "
|
|
"hold nested sizers."
|
|
),
|
|
|
|
("Flexible Grid", makeGrid3,
|
|
"This grid allows the rows to have different heights and the columns to have "
|
|
"different widths. You can also specify rows and columns that are growable, "
|
|
"which we have done for the first and last row and the middle column for "
|
|
"this example.\n"
|
|
"\nThere is also a spacer in the middle cell instead of an actual window."
|
|
),
|
|
|
|
("Grid with Alignment", makeGrid4,
|
|
"New alignment flags allow for the positioning of items in any corner or centered "
|
|
"position."
|
|
),
|
|
|
|
("", None, ""),
|
|
|
|
("Proportional resize", makeSimpleBoxShaped,
|
|
"Managed items can preserve their original aspect ratio. The last item has the "
|
|
"wx.SHAPED flag set and will resize proportional to its original size."
|
|
),
|
|
|
|
("Proportional resize with Alignments", makeShapes,
|
|
"This one shows various alignments as well as proportional resizing for all items."
|
|
),
|
|
|
|
]
|
|
#----------------------------------------------------------------------
|
|
|
|
class TestFrame(wx.Frame):
|
|
def __init__(self, parent, title, sizerFunc):
|
|
wx.Frame.__init__(self, parent, -1, title)
|
|
|
|
p = wx.Panel(self, -1)
|
|
|
|
self.sizer = sizerFunc(p)
|
|
self.CreateStatusBar()
|
|
self.SetStatusText("Resize this frame to see how the sizers respond...")
|
|
|
|
p.SetSizer(self.sizer)
|
|
self.sizer.Fit(p)
|
|
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
|
self.Fit()
|
|
|
|
def OnCloseWindow(self, event):
|
|
self.MakeModal(False)
|
|
self.Destroy()
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
class TestSelectionPanel(wx.Panel):
|
|
def __init__(self, parent, frame):
|
|
wx.Panel.__init__(self, parent, -1)
|
|
self.frame = frame
|
|
|
|
self.list = wx.ListBox(self, -1,
|
|
wx.DLG_PNT(self, 10, 10), wx.DLG_SZE(self, 100, 100),
|
|
[])
|
|
self.Bind(wx.EVT_LISTBOX, self.OnSelect, id=self.list.GetId())
|
|
self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnDClick, id=self.list.GetId())
|
|
|
|
self.btn = wx.Button(self, -1, "Try it!", wx.DLG_PNT(self, 120, 10)).SetDefault()
|
|
self.Bind(wx.EVT_BUTTON, self.OnDClick)
|
|
|
|
self.text = wx.TextCtrl(self, -1, "",
|
|
wx.DLG_PNT(self, 10, 115),
|
|
wx.DLG_SZE(self, 200, 50),
|
|
wx.TE_MULTILINE | wx.TE_READONLY)
|
|
|
|
for item in theTests:
|
|
self.list.Append(item[0])
|
|
|
|
|
|
def OnSelect(self, event):
|
|
pos = self.list.GetSelection()
|
|
self.text.SetValue(theTests[pos][2])
|
|
|
|
|
|
def OnDClick(self, event):
|
|
pos = self.list.GetSelection()
|
|
title = theTests[pos][0]
|
|
func = theTests[pos][1]
|
|
|
|
if func:
|
|
win = TestFrame(self, title, func)
|
|
win.CentreOnParent(wx.BOTH)
|
|
win.Show(True)
|
|
win.MakeModal(True)
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def runTest(frame, nb, log):
|
|
win = TestSelectionPanel(nb, frame)
|
|
return win
|
|
|
|
overview = ""
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
if __name__ == '__main__':
|
|
|
|
class MainFrame(wx.Frame):
|
|
def __init__(self):
|
|
wx.Frame.__init__(self, None, -1, "Testing...")
|
|
|
|
self.CreateStatusBar()
|
|
mainmenu = wx.MenuBar()
|
|
menu = wx.Menu()
|
|
menu.Append(200, 'E&xit', 'Get the heck outta here!')
|
|
mainmenu.Append(menu, "&File")
|
|
self.SetMenuBar(mainmenu)
|
|
self.Bind(wx.EVT_MENU, self.OnExit, id=200)
|
|
self.panel = TestSelectionPanel(self, self)
|
|
self.SetSize((400, 380))
|
|
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
|
|
|
def OnCloseWindow(self, event):
|
|
self.Destroy()
|
|
|
|
def OnExit(self, event):
|
|
self.Close(True)
|
|
|
|
|
|
class TestApp(wx.App):
|
|
def OnInit(self):
|
|
frame = MainFrame()
|
|
frame.Show(True)
|
|
self.SetTopWindow(frame)
|
|
return True
|
|
|
|
app = TestApp(False)
|
|
app.MainLoop()
|
|
|
|
|
|
#----------------------------------------------------------------------
|