]> git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/SplitTree.py
Updated demo to be a more realistic dialog, to show tab traversal,
[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 wxNO_BORDER )
76 valueWindow = TestValueWindow(splitter, -1, style=wxNO_BORDER)
77
78 splitter.SplitVertically(tree, valueWindow)
79 splitter.SetSashPosition(150)
80 scroller.SetTargetWindow(tree)
81 scroller.EnableScrolling(FALSE, FALSE)
82
83 valueWindow.SetTreeCtrl(tree)
84 tree.SetCompanionWindow(valueWindow)
85
86 sizer = wxBoxSizer(wxVERTICAL)
87 sizer.Add(scroller, 1, wxEXPAND|wxALL, 25)
88 self.SetAutoLayout(true)
89 self.SetSizer(sizer)
90
91
92 #----------------------------------------------------------------------
93
94 def runTest(frame, nb, log):
95 win = TestPanel(nb, log)
96 return win
97
98
99 #----------------------------------------------------------------------
100
101
102
103
104
105 overview = """\
106 This demo shows a collection of classes that were designed to operate
107 together and provide a tree control with additional columns for each
108 item. The classes are wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
109 wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
110 also be useful by themselves.
111 """
112
113