]> git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/SplitTree.py
fix Union(empty rect) bug
[wxWidgets.git] / wxPython / demo / SplitTree.py
1 from wxPython.wx import *
2 from wxPython.gizmos import *
3
4 import images
5
6 #----------------------------------------------------------------------
7
8 class TestTree(wxRemotelyScrolledTreeCtrl):
9 def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize,
10 style=wxTR_HAS_BUTTONS):
11 wxRemotelyScrolledTreeCtrl.__init__(self, parent, ID, pos, size, style)
12
13 # make an image list
14 im1 = im2 = -1
15 self.il = wxImageList(16, 16)
16 im1 = self.il.Add(images.getFolder1Bitmap())
17 im2 = self.il.Add(images.getFile1Bitmap())
18 self.SetImageList(self.il)
19
20 # Add some items
21 root = self.AddRoot("Root")
22 for i in range(30):
23 item = self.AppendItem(root, "Item %d" % i, im1)
24 for j in range(10):
25 child = self.AppendItem(item, "Child %d" % j, im2)
26
27 self.Expand(root)
28
29
30
31 class TestValueWindow(wxTreeCompanionWindow):
32 def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize, style=0):
33 wxTreeCompanionWindow.__init__(self, parent, ID, pos, size, style)
34 self.SetBackgroundColour("WHITE")
35 EVT_ERASE_BACKGROUND(self, self.OEB)
36
37 def OEB(self, evt):
38 pass
39
40 # This method is called to draw each item in the value window
41 def DrawItem(self, dc, itemId, rect):
42 tree = self.GetTreeCtrl()
43 if tree:
44 text = "This is "
45 parent = tree.GetItemParent(itemId)
46 if parent.IsOk():
47 ptext = tree.GetItemText(parent)
48 text = text + ptext + " --> "
49 text = text + tree.GetItemText(itemId)
50 pen = wxPen(wxSystemSettings_GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID)
51 dc.SetPen(pen)
52 dc.SetBrush(wxBrush(self.GetBackgroundColour(), wxSOLID))
53 dc.DrawRectangle(rect.x, rect.y, rect.width+1, rect.height+1)
54 dc.SetTextForeground("BLACK")
55 dc.SetBackgroundMode(wxTRANSPARENT)
56 tw, th = dc.GetTextExtent(text)
57 x = 5
58 y = rect.y + max(0, (rect.height - th) / 2)
59 dc.DrawText(text, x, y)
60
61
62
63 class TestPanel(wxPanel):
64 def __init__(self, parent, log):
65 wxPanel.__init__(self, parent, -1)
66 self.log = log
67
68 scroller = wxSplitterScrolledWindow(self, -1, #(50,50), (350, 250),
69 style=wxNO_BORDER | wxCLIP_CHILDREN | wxVSCROLL)
70 splitter = wxThinSplitterWindow(scroller, -1, style=wxSP_3DBORDER | wxCLIP_CHILDREN)
71 splitter.SetSashSize(2)
72 tree = TestTree(splitter, -1, style = wxTR_HAS_BUTTONS |
73 wxTR_NO_LINES |
74 wxTR_ROW_LINES |
75 #wxTR_HIDE_ROOT |
76 wxNO_BORDER )
77 valueWindow = TestValueWindow(splitter, -1, style=wxNO_BORDER)
78
79 splitter.SplitVertically(tree, valueWindow)
80 splitter.SetSashPosition(150)
81 scroller.SetTargetWindow(tree)
82 scroller.EnableScrolling(FALSE, FALSE)
83
84 valueWindow.SetTreeCtrl(tree)
85 tree.SetCompanionWindow(valueWindow)
86
87 sizer = wxBoxSizer(wxVERTICAL)
88 sizer.Add(scroller, 1, wxEXPAND|wxALL, 25)
89 self.SetAutoLayout(true)
90 self.SetSizer(sizer)
91
92
93 #----------------------------------------------------------------------
94
95 def runTest(frame, nb, log):
96 win = TestPanel(nb, log)
97 return win
98
99
100 #----------------------------------------------------------------------
101
102
103
104
105
106 overview = """\
107 This demo shows a collection of classes that were designed to operate
108 together and provide a tree control with additional columns for each
109 item. The classes are wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
110 wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
111 also be useful by themselves.
112 """
113
114
115
116 if __name__ == '__main__':
117 import sys,os
118 import run
119 run.main(['', os.path.basename(sys.argv[0])])
120