7 colourList 
= [ "Aquamarine", "Grey", "Blue", "Blue Violet", "Brown", "Cadet Blue", 
   8                "Coral", "Wheat", "Cyan", "Dark Grey", "Dark Green", 
  12 #---------------------------------------------------------------------------- 
  14 def getNextImageID(count
): 
  23 class TestTB(wx
.Treebook
): 
  24     def __init__(self
, parent
, id, log
): 
  25         wx
.Treebook
.__init
__(self
, parent
, id, style
= 
  34         # make an image list using the LBXX images 
  35         il 
= wx
.ImageList(32, 32) 
  37             f 
= getattr(images
, 'getLB%02dBitmap' % (x
+1)) 
  40         self
.AssignImageList(il
) 
  41         imageIdGenerator 
= getNextImageID(il
.GetImageCount()) 
  43         # Now make a bunch of panels for the list book 
  45         for colour 
in colourList
: 
  46             win 
= self
.makeColorPanel(colour
) 
  47             self
.AddPage(win
, colour
, imageId
=imageIdGenerator
.next()) 
  49                 st 
= wx
.StaticText(win
.win
, -1, 
  50                           "You can put nearly any type of window here,\n" 
  51                           "and the wx.TreeCtrl can be on either side of the\n" 
  56             win 
= self
.makeColorPanel(colour
) 
  57             st 
= wx
.StaticText(win
.win
, -1, "this is a sub-page", (10,10)) 
  58             self
.AddSubPage(win
, 'a sub-page', imageId
=imageIdGenerator
.next()) 
  60         self
.Bind(wx
.EVT_TREEBOOK_PAGE_CHANGED
, self
.OnPageChanged
) 
  61         self
.Bind(wx
.EVT_TREEBOOK_PAGE_CHANGING
, self
.OnPageChanging
) 
  63         # This is a workaround for a sizing bug on Mac... 
  64         wx
.FutureCall(100, self
.AdjustSize
) 
  67         print self
.GetTreeCtrl().GetBestSize() 
  68         self
.GetTreeCtrl().InvalidateBestSize() 
  70         print self
.GetTreeCtrl().GetBestSize() 
  73     def makeColorPanel(self
, color
): 
  74         p 
= wx
.Panel(self
, -1) 
  75         win 
= ColorPanel
.ColoredPanel(p
, color
) 
  77         def OnCPSize(evt
, win
=win
): 
  78             win
.SetPosition((0,0)) 
  79             win
.SetSize(evt
.GetSize()) 
  80         p
.Bind(wx
.EVT_SIZE
, OnCPSize
) 
  84     def OnPageChanged(self
, event
): 
  85         old 
= event
.GetOldSelection() 
  86         new 
= event
.GetSelection() 
  87         sel 
= self
.GetSelection() 
  88         self
.log
.write('OnPageChanged,  old:%d, new:%d, sel:%d\n' % (old
, new
, sel
)) 
  91     def OnPageChanging(self
, event
): 
  92         old 
= event
.GetOldSelection() 
  93         new 
= event
.GetSelection() 
  94         sel 
= self
.GetSelection() 
  95         self
.log
.write('OnPageChanging, old:%d, new:%d, sel:%d\n' % (old
, new
, sel
)) 
  98 #---------------------------------------------------------------------------- 
 100 def runTest(frame
, nb
, log
): 
 101     testWin 
= TestTB(nb
, -1, log
) 
 104 #---------------------------------------------------------------------------- 
 111 This class is a control similar to a notebook control, but with a 
 112 wx.TreeCtrl instead of a set of tabs. 
 118 if __name__ 
== '__main__': 
 121     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])