dabo Commit
Revision 3453
Date: 2007-10-11 08:20:35 -0700 (Thu, 11 Oct 2007)
Author: Ed
Trac: http://svn.dabodev.com/trac/dabo/changeset/3453
Changed:
U trunk/dabo/ui/uiwx/dGrid.py
Log:
Further refinements to the recent changes. I had to back out some of the
optimization changes dealing with default attibute editors/renderers, as they
were causing some sporadic segfaults on OS X. Removed the refresh delay, as it
was no longer providing significant savings.
This also fixes the problem reported by Larry Long regarding the behavior of
new() not selecting the added record.
Diff:
Modified: trunk/dabo/ui/uiwx/dGrid.py
===================================================================
--- trunk/dabo/ui/uiwx/dGrid.py 2007-10-10 20:12:02 UTC (rev 3452)
+++ trunk/dabo/ui/uiwx/dGrid.py 2007-10-11 15:20:35 UTC (rev 3453)
@@ -728,12 +728,7 @@
if editorClass in (wx.grid.GridCellChoiceEditor,):
kwargs["choices"] = self.ListEditorChoices
editor = editorClass(**kwargs)
- try:
- curr = self._gridColAttr.GetEditor(self.Parent, 0, 0)
- except:
- curr = None
- if curr != editor:
- self._gridColAttr.SetEditor(editor)
+ self._gridColAttr.SetEditor(editor)
def _updateRenderer(self):
@@ -746,12 +741,7 @@
else:
self._rendererClass = rendClass
renderer = rendClass()
- try:
- curr = self._gridColAttr.GetRenderer(self.Parent, 0, 0)
- except:
- curr = None
- if curr != renderer:
- self._gridColAttr.SetRenderer(renderer)
+ self._gridColAttr.SetRenderer(renderer)
def _onFontPropsChanged(self, evt):
@@ -1619,8 +1609,6 @@
self._sortRestored = False
# Internal flag to determine if refresh should be called after
sorting.
self._refreshAfterSort = True
- # Flag to help optimize refresh() calls.
- self._inRefreshDelay = False
# Local count of rows in the data table
self._tableRows = 0
@@ -2595,8 +2583,6 @@
# there are more efficient search algorithms, but for this
purpose, we'll
# just use brute force
for fldval, row in sortList:
-# if not isinstance(fldval, basestring):
-# fldval = str(fldval)
if not compString or caseSensitive:
match = (fldval == srchStr)
else:
@@ -2790,30 +2776,19 @@
def refresh(self, sort=False):
-# if self._inRefreshDelay:
-# dabo.ui.callAfterInterval(300, self._clearRefreshDelay,
sort)
-# return
- self._inRefreshDelay = True
self.Freeze()
if sort:
ref = self._refreshAfterSort
self._refreshAfterSort = False
self._restoreSort()
self._refreshAfterSort = ref
- self._syncCurrentRow()
self._syncColumnCount()
self._syncRowCount()
+ self._syncCurrentRow()
super(dGrid, self).refresh()
-# dabo.ui.callAfterInterval(300, self._clearRefreshDelay, False,
recall=False)
self.Thaw()
-# def _clearRefreshDelay(self, sort, recall=True):
-# self._inRefreshDelay = False
-# if recall:
-# self.refresh(sort)
-
-
def update(self):
self.Freeze()
super(dGrid, self).update()
@@ -2831,9 +2806,10 @@
Has no effect if the grid's DataSource isn't a link to a bizobj.
"""
- bizobj = self.getBizobj()
- if bizobj:
- self.CurrentRow = bizobj.RowNumber
+ try:
+ self.CurrentRow = self.getBizobj().RowNumber
+ except AttributeError:
+ pass
def _syncColumnCount(self):
@@ -2851,9 +2827,7 @@
wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED,
diff)
if msg:
- self.BeginBatch()
self.ProcessTableMessage(msg)
- dabo.ui.callAfterInterval(50, self._endBatch)
def _syncRowCount(self):
@@ -2871,16 +2845,9 @@
wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED,
diff)
if msg:
- self.BeginBatch()
self.ProcessTableMessage(msg)
- dabo.ui.callAfterInterval(50, self._endBatch)
- def _endBatch(self):
- for ii in xrange(self.GetBatchCount()):
- self.EndBatch()
-
-
def _getDefaultGridColAttr(self):
""" Return the GridCellAttr that will be used for all columns
by default."""
attr = wx.grid.GridCellAttr()
@@ -2900,6 +2867,7 @@
ret = app.getUserSetting(settingName)
return ret
+
def _setUserSetting(self, prop, val):
"""Persist the value of prop to the user settings table."""
app = self.Application
@@ -3724,9 +3692,9 @@
if self.DataSource is not None:
ret = None
bo = self.getBizobj()
- if bo:
- ret = bo.getDataSet()
- else:
+ try:
+ ret = self.getBizobj().getDataSet()
+ except AttributeError:
# See if the DataSource is a reference
try:
ret = eval(self.DataSource)
@@ -3749,8 +3717,7 @@
val = dabo.db.dDataSet(val)
self._dataSet = val
dabo.ui.callAfter(self.refresh)
- biz = self.getBizobj()
- if biz:
+ if self.getBizobj():
## I think I want to have the bizobj raise the
RowNumChanged event,
## but for now this will suffice:
self.Form.bindEvent(dEvents.RowNumChanged,
self.__onRowNumChanged)
@@ -3798,10 +3765,9 @@
def _getEncoding(self):
- bo = self.getBizobj()
- if bo is not None:
- ret = bo.Encoding
- else:
+ try:
+ ret = self.getBizobj().Encoding
+ except AttributeError:
ret = self.Application.Encoding
return ret
@@ -3970,6 +3936,10 @@
def _getRowCount(self):
+ try:
+ self._tableRows = self.getBizobj().RowCount
+ except AttributeError:
+ pass
return self._tableRows
_______________________________________________
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/dabo-dev/[EMAIL PROTECTED]