]> git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/SplitTree.py
d&d implementation and checklistbox enabled
[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
87
88 #----------------------------------------------------------------------
89
90 def runTest(frame, nb, log):
91 win = TestPanel(nb, log)
92 return win
93
94
95 #----------------------------------------------------------------------
96
97
98
99
100
101 overview = """\
102 This demo shows a collection of classes that were designed to operate
103 together and provide a tree control with additional columns for each
104 item. The classes are wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
105 wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
106 also be useful by themselves.
107 """
108
109