X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/643b97f8a7f3ba5b2b22fe2545a7b9ec20207d34..611dc22ceee63fcfd8b6af38f7f74ba9f3c5a268:/wxPython/demo/SplitTree.py diff --git a/wxPython/demo/SplitTree.py b/wxPython/demo/SplitTree.py new file mode 100644 index 0000000000..ee6b5f1321 --- /dev/null +++ b/wxPython/demo/SplitTree.py @@ -0,0 +1,97 @@ +from wxPython.wx import * +from wxPython.gizmos import * + +import images + +#---------------------------------------------------------------------- + +class TestTree(wxRemotelyScrolledTreeCtrl): + def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize, + style=wxTR_HAS_BUTTONS): + wxRemotelyScrolledTreeCtrl.__init__(self, parent, ID, pos, size, style) + self.SetBackgroundColour("LIGHT BLUE") + + # make an image list + self.il = wxImageList(16, 16) + im1 = self.il.AddIcon(wxIconFromXPMData(images.getFolder1Data())) + im2 = self.il.AddIcon(wxIconFromXPMData(images.getFile1Data())) + + # Add some items + root = self.AddRoot("Root") + for i in range(30): + item = self.AppendItem(root, "Item %d" % i, im1) + for j in range(10): + self.AppendItem(item, "Child %d" % j, im2) + + self.Expand(root) + + + +class TestValueWindow(wxTreeCompanionWindow): + def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize, style=0): + wxTreeCompanionWindow.__init__(self, parent, ID, pos, size, style) + self.SetBackgroundColour("WHITE") + + # This method is called to draw each item in the value window + def DrawItem(self, dc, itemId, rect): + tree = self.GetTreeCtrl() + if tree: + text = "This is " + parent = tree.GetItemParent(itemId) + if parent.IsOk(): + ptext = tree.GetItemText(parent) + text = text + ptext + " --> " + text = text + tree.GetItemText(itemId) + dc.SetTextForeground("BLACK") + dc.SetBackgroundMode(wxTRANSPARENT) + tw, th = dc.GetTextExtent(text) + x = 5 + y = rect.y + max(0, (rect.height - th) / 2) + dc.DrawText(text, x, y) + + + +class TestPanel(wxPanel): + def __init__(self, parent, log): + wxPanel.__init__(self, parent, -1) + self.log = log + + scroller = wxSplitterScrolledWindow(self, -1, (50,50), (350, 250), + style=wxNO_BORDER | wxCLIP_CHILDREN | wxVSCROLL) + splitter = wxThinSplitterWindow(scroller, -1, style=wxSP_3DBORDER | wxCLIP_CHILDREN) + splitter.SetSashSize(2) + self.tree = TestTree(splitter, -1, style=wxTR_HAS_BUTTONS | wxTR_NO_LINES | wxNO_BORDER) + valueWindow = TestValueWindow(splitter, -1, style=wxNO_BORDER) + + splitter.SplitVertically(self.tree, valueWindow) + splitter.SetSashPosition(150) + scroller.SetTargetWindow(self.tree) + scroller.EnableScrolling(FALSE, FALSE) + + valueWindow.SetTreeCtrl(self.tree) + self.tree.SetCompanionWindow(valueWindow) + + + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb, log) + return win + + +#---------------------------------------------------------------------- + + + + + +overview = """\ +This demo shows a collection of classes that were designed to operate +together and provide a tree control with additional columns for each +item. The classes are wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow, +wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may +also be useful by themselves. +""" + +