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]

Reply via email to