]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/SplitTree.py
Added config checks for wxUSE_IMAGE = 0.
[wxWidgets.git] / wxPython / demo / SplitTree.py
index c70802e8bb7e29c9fc5c06dc7b066449198db85b..c7666ef8165dcfa9307e3be3b9bc1b35a6a183a5 100644 (file)
@@ -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])])
+