]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/SplitTree.py
HandlePrintClient shouldn't go above a top-level window
[wxWidgets.git] / wxPython / demo / SplitTree.py
CommitLineData
8fa876ca
RD
1# 11/13/2003 - Jeff Grimmett (grimmtooth@softhome.net)
2#
3# o Updated for wx namespace
4#
5# 11/26/2003 - Jeff Grimmett (grimmtooth@softhome.net)
6#
7# o Bigtime errors on startup. Blows up with a program error.
8# Error:
9#
10# 21:04:11: Debug: ..\..\src\msw\treectrl.cpp(1508): assert "IsVisible(item)"
11# failed: The item you call GetNextVisible() for must be visible itself!
12#
13# I suspect this error is in the lib itself.
14#
15
16import wx
17import wx.gizmos as gizmos
18
19import images
611dc22c
RD
20
21#----------------------------------------------------------------------
22
8fa876ca
RD
23class TestTree(gizmos.RemotelyScrolledTreeCtrl):
24 def __init__(self, parent, style=wx.TR_HAS_BUTTONS):
25 gizmos.RemotelyScrolledTreeCtrl.__init__(self, parent, -1, style=style)
611dc22c
RD
26
27 # make an image list
68673975 28 im1 = im2 = -1
8fa876ca 29 self.il = wx.ImageList(16, 16)
78e8819c
RD
30 im1 = self.il.Add(images.getFolder1Bitmap())
31 im2 = self.il.Add(images.getFile1Bitmap())
32 self.SetImageList(self.il)
611dc22c
RD
33
34 # Add some items
35 root = self.AddRoot("Root")
8fa876ca 36
611dc22c
RD
37 for i in range(30):
38 item = self.AppendItem(root, "Item %d" % i, im1)
8fa876ca 39
611dc22c 40 for j in range(10):
78e8819c 41 child = self.AppendItem(item, "Child %d" % j, im2)
611dc22c
RD
42
43 self.Expand(root)
44
45
46
8fa876ca
RD
47class TestValueWindow(gizmos.TreeCompanionWindow):
48 def __init__(self, parent, style=0):
49 gizmos.TreeCompanionWindow.__init__(self, parent, -1, style=style)
611dc22c 50 self.SetBackgroundColour("WHITE")
8fa876ca 51 self.Bind(wx.EVT_ERASE_BACKGROUND, self.OEB)
78e8819c
RD
52
53 def OEB(self, evt):
54 pass
611dc22c
RD
55
56 # This method is called to draw each item in the value window
57 def DrawItem(self, dc, itemId, rect):
58 tree = self.GetTreeCtrl()
8fa876ca 59
611dc22c
RD
60 if tree:
61 text = "This is "
62 parent = tree.GetItemParent(itemId)
8fa876ca 63
611dc22c
RD
64 if parent.IsOk():
65 ptext = tree.GetItemText(parent)
66 text = text + ptext + " --> "
8fa876ca 67
611dc22c 68 text = text + tree.GetItemText(itemId)
8fa876ca 69 pen = wx.Pen(
317d1550 70 wx.SystemSettings_GetColour(wx.SYS_COLOUR_3DLIGHT),
8fa876ca
RD
71 1, wx.SOLID
72 )
73
78e8819c 74 dc.SetPen(pen)
8fa876ca 75 dc.SetBrush(wx.Brush(self.GetBackgroundColour(), wx.SOLID))
d7403ad2 76 dc.DrawRectangle(rect.x, rect.y, rect.width+1, rect.height+1)
611dc22c 77 dc.SetTextForeground("BLACK")
8fa876ca 78 dc.SetBackgroundMode(wx.TRANSPARENT)
611dc22c
RD
79 tw, th = dc.GetTextExtent(text)
80 x = 5
81 y = rect.y + max(0, (rect.height - th) / 2)
d7403ad2 82 dc.DrawText(text, x, y)
611dc22c
RD
83
84
85
8fa876ca 86class TestPanel(wx.Panel):
611dc22c 87 def __init__(self, parent, log):
22c35d91 88 wx.Panel.__init__(self, parent, -1, size=(640,480))
611dc22c
RD
89 self.log = log
90
8fa876ca
RD
91 scroller = gizmos.SplitterScrolledWindow(
92 self, -1, style=wx.NO_BORDER | wx.CLIP_CHILDREN | wx.VSCROLL
93 )
94
95 splitter = gizmos.ThinSplitterWindow(
96 scroller, -1, style=wx.SP_3DBORDER | wx.CLIP_CHILDREN
97 )
98
611dc22c 99 splitter.SetSashSize(2)
317d1550
RD
100 tree = TestTree(splitter, style = wx.TR_HAS_BUTTONS |
101 wx.TR_NO_LINES |
102 wx.TR_ROW_LINES |
103 #wx.TR_HIDE_ROOT |
104 wx.NO_BORDER )
8fa876ca
RD
105
106 valueWindow = TestValueWindow(splitter, style=wx.NO_BORDER)
611dc22c 107
4b7887a9 108 wx.CallAfter(splitter.SplitVertically, tree, valueWindow, 150)
52ad59c2 109 scroller.SetTargetWindow(tree)
1e4a197e 110 scroller.EnableScrolling(False, False)
611dc22c 111
52ad59c2
RD
112 valueWindow.SetTreeCtrl(tree)
113 tree.SetCompanionWindow(valueWindow)
611dc22c 114
8fa876ca
RD
115 sizer = wx.BoxSizer(wx.VERTICAL)
116 sizer.Add(scroller, 1, wx.EXPAND|wx.ALL, 25)
68320e40 117 self.SetSizer(sizer)
22c35d91 118 self.Layout()
611dc22c
RD
119
120#----------------------------------------------------------------------
121
122def runTest(frame, nb, log):
8fa876ca 123 if wx.Platform == "__WXMAC__":
c4ef95da
RD
124 from Main import MessagePanel
125 win = MessagePanel(nb, 'This demo currently fails on the Mac. The problem is being looked into...',
126 'Sorry', wx.ICON_WARNING)
127 return win
1e4a197e 128
611dc22c
RD
129 win = TestPanel(nb, log)
130 return win
131
132
133#----------------------------------------------------------------------
134
135
611dc22c
RD
136overview = """\
137This demo shows a collection of classes that were designed to operate
138together and provide a tree control with additional columns for each
8fa876ca
RD
139item. The classes are wx.RemotelyScrolledTreeCtrl, wx.TreeCompanionWindow,
140wx.ThinSplitterWindow, and wx.SplitterScrolledWindow, some of which may
611dc22c
RD
141also be useful by themselves.
142"""
143
144
63b6646e
RD
145
146if __name__ == '__main__':
147 import sys,os
148 import run
8eca4fef 149 run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
63b6646e 150