[z3-checkins] r14843 - z3/zopejam/trunk/src/zopejam

hathawsh at codespeak.net hathawsh at codespeak.net
Thu Jul 21 03:44:52 CEST 2005


Author: hathawsh
Date: Thu Jul 21 03:44:50 2005
New Revision: 14843

Modified:
   z3/zopejam/trunk/src/zopejam/propbook.py
Log:
Show a grid tab


Modified: z3/zopejam/trunk/src/zopejam/propbook.py
==============================================================================
--- z3/zopejam/trunk/src/zopejam/propbook.py	(original)
+++ z3/zopejam/trunk/src/zopejam/propbook.py	Thu Jul 21 03:44:50 2005
@@ -7,6 +7,7 @@
 
 import wx
 import wx.grid
+from wx import xrc
 
 from zopejam import columns
 
@@ -23,27 +24,58 @@
         sizer = wx.BoxSizer(wx.VERTICAL)
         self.props_page.SetSizer(sizer)
         self.notebook.AddPage(self.props_page, "Properties")
+
+        self.grid_page = wx.Panel(self.notebook)
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        self.grid_page.SetSizer(sizer)
+        self.notebook.AddPage(self.grid_page, "Grid")
+        self.grid_table = PropertyGridTable()
+
         self.source_page = wx.Panel(self.notebook)
         self.notebook.AddPage(self.source_page, "Source")
 
     def onSelect(self, directives):
-        self.props_page.DestroyChildren()
-        sizer = self.props_page.GetSizer()
-        if not directives:
-            return
-        if len(directives) > 1:
-            grid = wx.grid.Grid(self.props_page, -1)
-            sizer = self.props_page.GetSizer()
-            sizer.Add(grid, proportion=1, flag=wx.EXPAND)
-            grid.SetTable(PropertyTable(directives))
-            self.props_page.Layout()
-        # else show a friendly property editor with documentation
+        self.grid_page.DestroyChildren()
+        sizer = self.grid_page.GetSizer()
+        if directives:
+            # Display the grid
+            self.grid_table.populate(directives)
+            self.grid = wx.grid.Grid(self.grid_page, -1)
+            self.grid.SetTable(self.grid_table)
+            if len(directives) < 50:
+                self.grid.AutoSizeColumns(setAsMin=False)
+            # else resizing would take a while.
+            sizer.Add(self.grid, proportion=1, flag=wx.EXPAND)
+        else:
+            label = wx.StaticText(
+                self.grid_page, -1, "No directives selected.")
+            sizer.Add(label, flag=wx.EXPAND|wx.ALL, border=4)
+        self.grid_page.Layout()
+            
 
 
-class PropertyTable(wx.grid.PyGridTableBase):
+class PropertyGridTable(wx.grid.PyGridTableBase):
 
-    def __init__(self, directives):
+    def __init__(self):
         wx.grid.PyGridTableBase.__init__(self)
+        self.populate([])
+
+        # prepare self.cell_attrs
+        self.cell_attrs = {}  # {(valid, editable, has_error): GridCellAttr}
+        for valid in (False, True):
+            for editable in (False, True):
+                for has_error in (False, True):
+                    gca = wx.grid.GridCellAttr()
+                    if not valid:
+                        gca.SetBackgroundColour(wx.Colour(224, 224, 224))
+                    elif has_error:
+                        gca.SetBackgroundColour(wx.Colour(255, 127, 127))
+                    elif not editable:
+                        gca.SetBackgroundColour(wx.Colour(224, 224, 224))
+                    gca.SetReadOnly(not valid or not editable)
+                    self.cell_attrs[(valid, editable, has_error)] = gca
+
+    def populate(self, directives):
         self.directives = directives
         ifaces = {}  # { name -> InterfaceInfo }
         for d in directives:
@@ -65,19 +97,6 @@
         for name in names:
             self.columns.append(columns.SchemaAttribute(name))
 
-        # prepare self.cell_attrs
-        self.cell_attrs = {}  # {(valid, editable, has_error): GridCellAttr}
-        for valid in (False, True):
-            for editable in (False, True):
-                for has_error in (False, True):
-                    gca = wx.grid.GridCellAttr()
-                    if not valid:
-                        gca.SetBackgroundColour(wx.Colour(127, 127, 127))
-                    elif has_error:
-                        gca.SetBackgroundColour(wx.Colour(255, 127, 127))
-                    gca.SetReadOnly(not valid or not editable)
-                    self.cell_attrs[(valid, editable, has_error)] = gca
-
     def GetNumberCols(self):
         return len(self.columns)
 


More information about the z3-checkins mailing list