dabo Commit
Revision 5041
Date: 2009-02-08 14:30:40 -0800 (Sun, 08 Feb 2009)
Author: Ed
Trac: http://trac.dabodev.com/changeset/5041

Changed:
U   trunk/dabo/ui/uiwx/__init__.py
U   trunk/dabo/ui/uiwx/dGridSizer.py

Log:
Re-worked the way that spacers are handled within grid sizers, due to an 
apparent bug in wxPython.


Diff:
Modified: trunk/dabo/ui/uiwx/__init__.py
===================================================================
--- trunk/dabo/ui/uiwx/__init__.py      2009-02-08 16:21:01 UTC (rev 5040)
+++ trunk/dabo/ui/uiwx/__init__.py      2009-02-08 22:30:40 UTC (rev 5041)
@@ -1399,7 +1399,7 @@
                return None
        elif isinstance(sz, wx.GridBagSizer):
                # Return a row,col tuple
-               row, col = sz.GetItemPosition(obj)
+               row, col = sz.getGridPos(obj)
                return (row, col)
        else:
                return None

Modified: trunk/dabo/ui/uiwx/dGridSizer.py
===================================================================
--- trunk/dabo/ui/uiwx/dGridSizer.py    2009-02-08 16:21:01 UTC (rev 5040)
+++ trunk/dabo/ui/uiwx/dGridSizer.py    2009-02-08 22:30:40 UTC (rev 5041)
@@ -57,7 +57,7 @@
                        # spacer
                        if isinstance(item, int):
                                item = (item, item)
-                       szItem = self.Add(item, (targetRow, targetCol), 
span=(rowSpan, colSpan) )
+                       szItem = self.Add(item, (targetRow, targetCol), 
span=(rowSpan, colSpan))
                        spc = szItem.GetSpacer()
                        spc._controllingSizer = self
                        spc._controllingSizerItem = szItem
@@ -296,10 +296,12 @@
                """Given an object that is contained in this grid
                sizer, returns a (row,col) tuple for that item's location.
                """
-               if isinstance(obj, (self.GridSizerItem, self.SizerItem)):
-                       obj = self.getItem(obj)
+               if isinstance(obj, self.SizerItem):
+                       szit = obj
+               else:
+                       szit = obj.ControllingSizerItem
                try:
-                       row, col = self.GetItemPosition(obj)
+                       row, col = szit.GetPos()
                except wx.PyAssertionError:
                        # Window isn't controlled by this sizer
                        row, col = None, None
@@ -310,10 +312,12 @@
                """Given an object that is contained in this grid
                sizer, returns a (row,col) tuple for that item's cell span.
                """
-               if isinstance(obj, (self.GridSizerItem, self.SizerItem)):
-                       obj = self.getItem(obj)
+               if isinstance(obj, self.SizerItem):
+                       szit = obj
+               else:
+                       szit = obj.ControllingSizerItem
                try:
-                       row, col = self.GetItemSpan(obj)
+                       row, col = szit.GetSpan()
                except wx.PyAssertionError, e:
                        # Window isn't controlled by this sizer
                        row, col = None, None
@@ -326,18 +330,26 @@
                True if successful, or False if it fails, due to another
                item in the way.
                """
+               itm = None
                if isinstance(obj, (self.GridSizerItem, self.SizerItem)):
+                       itm = obj
                        obj = self.getItem(obj)
-               currRow, currCol = self.getGridSpan(obj)
+               else:
+                       try:
+                               itm = obj.ControllingSizerItem
+                       except AttributeError:
+                               itm = None
+               currRow, currCol = self.getGridSpan(itm)
                if row is None:
                        row = currRow
                if col is None:
                        col = currCol
                spn = wx.GBSpan(row, col)
-               try:
-                       self.SetItemSpan(obj, spn)
-               except wx.PyAssertionError:
-                       raise dabo.ui.GridSizerSpanException(_("An item already 
exists in that location"))
+               if itm is not None:
+                       try:
+                               itm.SetSpan(spn)
+                       except wx.PyAssertionError:
+                               raise dabo.ui.GridSizerSpanException(_("An item 
already exists in that location"))
        
        
        def _clearCells(self, obj, span, typ):



_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to