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]