]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/SplitTree.py
1 # 11/13/2003 - Jeff Grimmett (grimmtooth@softhome.net)
3 # o Updated for wx namespace
5 # 11/26/2003 - Jeff Grimmett (grimmtooth@softhome.net)
7 # o Bigtime errors on startup. Blows up with a program error.
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!
13 # I suspect this error is in the lib itself.
17 import wx
.gizmos
as gizmos
21 #----------------------------------------------------------------------
23 class TestTree(gizmos
.RemotelyScrolledTreeCtrl
):
24 def __init__(self
, parent
, style
=wx
.TR_HAS_BUTTONS
):
25 gizmos
.RemotelyScrolledTreeCtrl
.__init
__(self
, parent
, -1, style
=style
)
29 self
.il
= wx
.ImageList(16, 16)
30 im1
= self
.il
.Add(images
.getFolder1Bitmap())
31 im2
= self
.il
.Add(images
.getFile1Bitmap())
32 self
.SetImageList(self
.il
)
35 root
= self
.AddRoot("Root")
38 item
= self
.AppendItem(root
, "Item %d" % i
, im1
)
41 child
= self
.AppendItem(item
, "Child %d" % j
, im2
)
47 class TestValueWindow(gizmos
.TreeCompanionWindow
):
48 def __init__(self
, parent
, style
=0):
49 gizmos
.TreeCompanionWindow
.__init
__(self
, parent
, -1, style
=style
)
50 self
.SetBackgroundColour("WHITE")
52 # This method is called to draw each item in the value window
53 def DrawItem(self
, dc
, itemId
, rect
):
54 tree
= self
.GetTreeCtrl()
58 parent
= tree
.GetItemParent(itemId
)
61 ptext
= tree
.GetItemText(parent
)
62 text
= text
+ ptext
+ " --> "
64 text
= text
+ tree
.GetItemText(itemId
)
66 wx
.SystemSettings_GetColour(wx
.SYS_COLOUR_3DLIGHT
),
71 dc
.SetBrush(wx
.Brush(self
.GetBackgroundColour(), wx
.SOLID
))
72 dc
.DrawRectangle(rect
.x
, rect
.y
, rect
.width
+1, rect
.height
+1)
73 dc
.SetTextForeground("BLACK")
74 dc
.SetBackgroundMode(wx
.TRANSPARENT
)
75 tw
, th
= dc
.GetTextExtent(text
)
77 y
= rect
.y
+ max(0, (rect
.height
- th
) / 2)
78 dc
.DrawText(text
, x
, y
)
82 class TestPanel(wx
.Panel
):
83 def __init__(self
, parent
, log
):
84 wx
.Panel
.__init
__(self
, parent
, -1, size
=(640,480))
87 scroller
= gizmos
.SplitterScrolledWindow(
88 self
, -1, style
=wx
.NO_BORDER | wx
.CLIP_CHILDREN | wx
.VSCROLL
91 splitter
= gizmos
.ThinSplitterWindow(
92 scroller
, -1, style
=wx
.SP_3DBORDER | wx
.CLIP_CHILDREN
95 splitter
.SetSashSize(2)
96 tree
= TestTree(splitter
, style
= wx
.TR_HAS_BUTTONS |
102 valueWindow
= TestValueWindow(splitter
, style
=wx
.NO_BORDER
)
104 wx
.CallAfter(splitter
.SplitVertically
, tree
, valueWindow
, 150)
105 scroller
.SetTargetWindow(tree
)
106 scroller
.EnableScrolling(False, False)
108 valueWindow
.SetTreeCtrl(tree
)
109 tree
.SetCompanionWindow(valueWindow
)
111 sizer
= wx
.BoxSizer(wx
.VERTICAL
)
112 sizer
.Add(scroller
, 1, wx
.EXPAND|wx
.ALL
, 25)
116 #----------------------------------------------------------------------
118 def runTest(frame
, nb
, log
):
119 if wx
.Platform
== "__WXMAC__":
120 from Main
import MessagePanel
121 win
= MessagePanel(nb
, 'This demo currently fails on the Mac. The problem is being looked into...',
122 'Sorry', wx
.ICON_WARNING
)
125 win
= TestPanel(nb
, log
)
129 #----------------------------------------------------------------------
133 This demo shows a collection of classes that were designed to operate
134 together and provide a tree control with additional columns for each
135 item. The classes are wx.RemotelyScrolledTreeCtrl, wx.TreeCompanionWindow,
136 wx.ThinSplitterWindow, and wx.SplitterScrolledWindow, some of which may
137 also be useful by themselves.
142 if __name__
== '__main__':
145 run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])