dabo Commit
Revision 2561
Date: 2006-12-18 15:24:55 -0800 (Mon, 18 Dec 2006)
Author: Ed
Changed:
U trunk/dabo/ui/uiwx/dGrid.py
Log:
Restored the code inadvertantly removed that 'enforced' selection when
MultipleSelection=False. This is the main fix for Tracker #0248; the other is
the setting of MultipleSelection to False in the prop grid that will be posted
next.
Diff:
Modified: trunk/dabo/ui/uiwx/dGrid.py
===================================================================
--- trunk/dabo/ui/uiwx/dGrid.py 2006-12-17 22:51:05 UTC (rev 2560)
+++ trunk/dabo/ui/uiwx/dGrid.py 2006-12-18 23:24:55 UTC (rev 2561)
@@ -2714,6 +2714,11 @@
self._syncColumnCount()
self._syncRowCount()
super(dGrid, self).refresh()
+
+
+ def update(self):
+ super(dGrid, self).update()
+ self.fillGrid()
def _getWxHeader(self):
@@ -3147,16 +3152,94 @@
evt.Skip()
+ def __onWxGridSelectCell(self, evt):
+ if getattr(self, "_inSelect", False):
+ # Avoid recursion
+ return
+ self._inSelect = True
+ if evt.Selecting():
+ self._updateWxSelection(evt)
+ self.raiseEvent(dEvents.GridCellSelected, evt)
+ self._lastRow, self._lastCol = evt.GetRow(), evt.GetCol()
+ evt.Skip()
+ self._inSelect = False
+
+
def __onWxGridRangeSelect(self, evt):
if self._inRangeSelect:
# avoid recursive events
return
self._inRangeSelect = True
+ if evt.Selecting():
+ self._updateWxSelection(evt)
self.raiseEvent(dEvents.GridRangeSelected, evt)
evt.Skip()
self._inRangeSelect = False
-
+
+ def _updateWxSelection(self, evt):
+ if self.MultipleSelection:
+ # Nothing to do
+ return
+ origRow, origCol = self.CurrentRow, self.CurrentColumn
+ mode = self.GetSelectionMode()
+ try:
+ top, bott = evt.GetTopRow(), evt.GetBottomRow()
+ except AttributeError:
+ top = bott = evt.GetRow()
+ try:
+ left, right = evt.GetLeftCol(), evt.GetRightCol()
+ except AttributeError:
+ left = right = evt.GetCol()
+ try:
+ if mode == wx.grid.Grid.wxGridSelectRows:
+ if (top != bott) or (top != origCol):
+ # Attempting to select a range
+ if top == origRow:
+ row = bott
+ else:
+ row = top
+ self.SetGridCursor(row, self._lastCol)
+ self.SelectRow(row)
+ elif mode == wx.grid.Grid.wxGridSelectColumns:
+ if (left != right) or (left != origCol):
+ # Attempting to select a range
+ if left == origCol:
+ col = right
+ else:
+ col = left
+ self.SetGridCursor(self._lastRow, col)
+ self.SelectCol(col)
+ else:
+ # Cells
+ chg = False
+ row, col = origRow, origCol
+ if top != bott:
+ chg = True
+ if top == origRow:
+ row = bott
+ else:
+ row = top
+ elif top != origRow:
+ # New row
+ chg = True
+ row = top
+ if left != right:
+ chg = True
+ if left == origCol:
+ col = right
+ else:
+ col = left
+ elif left != origCol:
+ # New col
+ chg = True
+ col = left
+ if chg:
+ self.SetGridCursor(row, col)
+ self.SelectBlock(row, col, row, col)
+ except: pass
+
+
def __onWxGridEditorShown(self, evt):
self.raiseEvent(dEvents.GridCellEditBegin, evt)
evt.Skip()
@@ -3193,17 +3276,6 @@
evt.Skip()
- def __onWxGridSelectCell(self, evt):
- if getattr(self, "_inSelect", False):
- # Avoid recursion
- return
- self._inSelect = True
- self.raiseEvent(dEvents.GridCellSelected, evt)
- self._lastRow, self._lastCol = evt.GetRow(), evt.GetCol()
- evt.Skip()
- self._inSelect = False
-
-
def __onWxHeaderContextMenu(self, evt):
col, row = self._getColRowForPosition(evt.GetPosition())
self.raiseEvent(dEvents.GridHeaderContextMenu, evt, col=col)
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev