X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/74bcba0e3300839a9184ccaacc25dd5c05c1fad3..cefae4bc3cac29222757afbd605867b34f421af9:/wxPython/demo/SplitTree.py?ds=sidebyside diff --git a/wxPython/demo/SplitTree.py b/wxPython/demo/SplitTree.py index c70802e8bb..da4156b47a 100644 --- a/wxPython/demo/SplitTree.py +++ b/wxPython/demo/SplitTree.py @@ -1,68 +1,54 @@ -from wxPython.wx import * -from wxPython.gizmos import * - -import images +# 11/13/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Updated for wx namespace +# +# 11/26/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Bigtime errors on startup. Blows up with a program error. +# Error: +# +# 21:04:11: Debug: ..\..\src\msw\treectrl.cpp(1508): assert "IsVisible(item)" +# failed: The item you call GetNextVisible() for must be visible itself! +# +# I suspect this error is in the lib itself. +# + +import wx +import wx.gizmos as gizmos + +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") - EVT_PAINT(self, self.OnPaint) +class TestTree(gizmos.RemotelyScrolledTreeCtrl): + def __init__(self, parent, style=wx.TR_HAS_BUTTONS): + gizmos.RemotelyScrolledTreeCtrl.__init__(self, parent, -1, style=style) # make an image list im1 = im2 = -1 - self.il = wxImageList(16, 16) + self.il = wx.ImageList(16, 16) im1 = self.il.Add(images.getFolder1Bitmap()) im2 = self.il.Add(images.getFile1Bitmap()) self.SetImageList(self.il) # 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): child = self.AppendItem(item, "Child %d" % j, im2) self.Expand(root) - def OnPaint(self, evt): - dc = wxPaintDC(self) - - wxTreeCtrl.OnPaint(self, evt) - - # Reset the device origin since it may have been set - dc.SetDeviceOrigin(0, 0) - - pen = wxPen(wxSystemSettings_GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID) - dc.SetPen(pen) - dc.SetBrush(wxTRANSPARENT_BRUSH) - clientSize = self.GetClientSize() - cy = 0 - h = self.GetFirstVisibleItem() - while h.Ok(): - rect = self.GetBoundingRect(h) - if rect is not None: - cy = rect.GetTop() - dc.DrawLine(0, cy, clientSize.x, cy) - lastH = h - h = self.GetNextVisible(h) - rect = self.GetBoundingRect(lastH) - if rect is not None: - cy = rect.GetBottom() - dc.DrawLine(0, cy, clientSize.x, cy) - - - -class TestValueWindow(wxTreeCompanionWindow): - def __init__(self, parent, ID, pos=wxDefaultPosition, size=wxDefaultSize, style=0): - wxTreeCompanionWindow.__init__(self, parent, ID, pos, size, style) +class TestValueWindow(gizmos.TreeCompanionWindow): + def __init__(self, parent, style=0): + gizmos.TreeCompanionWindow.__init__(self, parent, -1, style=style) self.SetBackgroundColour("WHITE") - EVT_ERASE_BACKGROUND(self, self.OEB) + self.Bind(wx.EVT_ERASE_BACKGROUND, self.OEB) def OEB(self, evt): pass @@ -70,51 +56,75 @@ class TestValueWindow(wxTreeCompanionWindow): # 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) - pen = wxPen(wxSystemSettings_GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID) + pen = wx.Pen( + wx.SystemSettings_GetColour(wx.SYS_COLOUR_3DLIGHT), + 1, wx.SOLID + ) + dc.SetPen(pen) - dc.SetBrush(wxBrush(self.GetBackgroundColour(), wxSOLID)) - dc.DrawRectangle(rect.x, rect.y, rect.width+1, rect.height) + dc.SetBrush(wx.Brush(self.GetBackgroundColour(), wx.SOLID)) + dc.DrawRectangle((rect.x, rect.y), (rect.width+1, rect.height+1)) dc.SetTextForeground("BLACK") - dc.SetBackgroundMode(wxTRANSPARENT) + dc.SetBackgroundMode(wx.TRANSPARENT) tw, th = dc.GetTextExtent(text) x = 5 y = rect.y + max(0, (rect.height - th) / 2) - dc.DrawText(text, x, y) + dc.DrawText(text, (x, y)) -class TestPanel(wxPanel): +class TestPanel(wx.Panel): def __init__(self, parent, log): - wxPanel.__init__(self, parent, -1) + wx.Panel.__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) + scroller = gizmos.SplitterScrolledWindow( + self, -1, style=wx.NO_BORDER | wx.CLIP_CHILDREN | wx.VSCROLL + ) + + splitter = gizmos.ThinSplitterWindow( + scroller, -1, style=wx.SP_3DBORDER | wx.CLIP_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) + tree = TestTree(splitter, style = wx.TR_HAS_BUTTONS | + wx.TR_NO_LINES | + wx.TR_ROW_LINES | + #wx.TR_HIDE_ROOT | + wx.NO_BORDER ) - splitter.SplitVertically(self.tree, valueWindow) - splitter.SetSashPosition(150) - scroller.SetTargetWindow(self.tree) - scroller.EnableScrolling(FALSE, FALSE) + valueWindow = TestValueWindow(splitter, style=wx.NO_BORDER) - valueWindow.SetTreeCtrl(self.tree) - self.tree.SetCompanionWindow(valueWindow) + splitter.SplitVertically(tree, valueWindow, 150) + scroller.SetTargetWindow(tree) + scroller.EnableScrolling(False, False) + valueWindow.SetTreeCtrl(tree) + tree.SetCompanionWindow(valueWindow) + + sizer = wx.BoxSizer(wx.VERTICAL) + sizer.Add(scroller, 1, wx.EXPAND|wx.ALL, 25) + self.SetAutoLayout(True) + self.SetSizer(sizer) #---------------------------------------------------------------------- def runTest(frame, nb, log): + if wx.Platform == "__WXMAC__": + wx.MessageBox("This demo currently fails on the Mac. The problem is being looked into...", "Sorry") + return + win = TestPanel(nb, log) return win @@ -122,15 +132,18 @@ def runTest(frame, nb, log): #---------------------------------------------------------------------- - - - 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 +item. The classes are wx.RemotelyScrolledTreeCtrl, wx.TreeCompanionWindow, +wx.ThinSplitterWindow, and wx.SplitterScrolledWindow, some of which may also be useful by themselves. """ + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) +