dabo Commit
Revision 3462
Date: 2007-10-12 10:58:29 -0700 (Fri, 12 Oct 2007)
Author: Ed
Trac: http://svn.dabodev.com/trac/dabo/changeset/3462

Changed:
U   trunk/dabo/lib/datanav/PageFrame.py
U   trunk/dabo/lib/datanav2/PageFrame.py
U   trunk/dabo/ui/uiwx/dForm.py
U   trunk/dabo/ui/uiwx/dGrid.py

Log:
Modified the RowNumChanged event to also pass along the bizobj whose row number 
has changed; this way only grids tied to that bizobj will update.

Changed the DataSource property of the grid so that if it is a string, the 
first time it asks the form to resolve it, it replaces the string with the 
bizobj reference, eliminating repeated calls in the future.

Updated the datanav code that relied on the grid's DataSource being a string.


Diff:
Modified: trunk/dabo/lib/datanav/PageFrame.py
===================================================================
--- trunk/dabo/lib/datanav/PageFrame.py 2007-10-12 16:39:02 UTC (rev 3461)
+++ trunk/dabo/lib/datanav/PageFrame.py 2007-10-12 17:58:29 UTC (rev 3462)
@@ -79,14 +79,20 @@
                self.dsEditPages[ds] = self.PageCount - 1
        
        def editByDataSource(self, ds):
+               if isinstance(ds, dabo.biz.dBizobj):
+                       ds = ds.DataSource
                self.SelectedPage = self.dsEditPages[ds]
 
        def newByDataSource(self, ds):
+               if isinstance(ds, dabo.biz.dBizobj):
+                       ds = ds.DataSource
                self.Form.new(ds)
                self.SelectedPage = self.dsEditPages[ds]
                self.SelectedPage.update()
                
        def deleteByDataSource(self, ds):
+               if isinstance(ds, dabo.biz.dBizobj):
+                       ds = ds.DataSource
                self.Form.delete(ds)
                
        def _getChildPageClass(self):

Modified: trunk/dabo/lib/datanav2/PageFrame.py
===================================================================
--- trunk/dabo/lib/datanav2/PageFrame.py        2007-10-12 16:39:02 UTC (rev 
3461)
+++ trunk/dabo/lib/datanav2/PageFrame.py        2007-10-12 17:58:29 UTC (rev 
3462)
@@ -45,17 +45,25 @@
                page = self.addPage(self.Form.EditPageClass, caption, "edit")
                page.DataSource = ds
                self.dsEditPages[ds] = self.PageCount - 1
-       
-       
+
+
        def editByDataSource(self, ds):
+               if isinstance(ds, dabo.biz.dBizobj):
+                       ds = ds.DataSource
                self.SelectedPage = self.dsEditPages[ds]
 
+
        def newByDataSource(self, ds):
+               if isinstance(ds, dabo.biz.dBizobj):
+                       ds = ds.DataSource
                self.Form.new(ds)
                self.SelectedPage = self.dsEditPages[ds]
                self.SelectedPage.update()
-               
+
+
        def deleteByDataSource(self, ds):
+               if isinstance(ds, dabo.biz.dBizobj):
+                       ds = ds.DataSource
                self.Form.delete(ds)    
 
 

Modified: trunk/dabo/ui/uiwx/dForm.py
===================================================================
--- trunk/dabo/ui/uiwx/dForm.py 2007-10-12 16:39:02 UTC (rev 3461)
+++ trunk/dabo/ui/uiwx/dForm.py 2007-10-12 17:58:29 UTC (rev 3462)
@@ -232,17 +232,23 @@
 
        def moveToRowNumber(self, rowNumber, dataSource=None):
                """ Move the record pointer to the specified row."""
-               bizobj = self.getBizobj(dataSource)
+               if isinstance(dataSource, dabo.biz.dBizobj):
+                       bizobj = dataSource
+               else:
+                       bizobj = self.getBizobj(dataSource)
                if bizobj is None:
                        # Running in preview or some other non-live mode
                        return
-               return self._moveRecordPointer(bizobj.moveToRowNumber, 
dataSource, rowNumber)
+               return self._moveRecordPointer(bizobj.moveToRowNumber, 
dataSource=bizobj, 
+                               rowNumber=rowNumber)
 
 
        def _moveRecordPointer(self, func, dataSource=None, *args, **kwargs):
                """ Move the record pointer using the specified function."""
-               
-               biz = self.getBizobj(dataSource)
+               if isinstance(dataSource, dabo.biz.dBizobj):
+                       biz = dataSource
+               else:
+                       biz = self.getBizobj(dataSource)
                oldRowNum = biz.RowNumber
 
                self.activeControlValid()
@@ -268,7 +274,8 @@
                        if biz.RowNumber != oldRowNum:
                                # Notify listeners that the row number changed:
                                dabo.ui.callAfter(self.raiseEvent, 
dEvents.RowNumChanged, 
-                                               newRowNumber=biz.RowNumber, 
oldRowNumber=oldRowNum)
+                                               newRowNumber=biz.RowNumber, 
oldRowNumber=oldRowNum,
+                                               bizobj=biz)
                        self.update()
                self.afterPointerMove()
                self.refresh()
@@ -425,6 +432,7 @@
                if bizobj is None:
                        # Running in preview or some other non-live mode
                        return
+               oldRowNumber = bizobj.RowNumber
                self.activeControlValid()
 
                err = self.beforeRequery()
@@ -447,8 +455,14 @@
                        self.update()
                        del busy
 
-                       # Notify listeners that the row number changed:
-                       self.raiseEvent(dEvents.RowNumChanged)
+                       newRowNumber = bizobj.RowNumber
+                       if newRowNumber != oldRowNumber:
+                               # Notify listeners that the row number changed:
+                               self.raiseEvent(dEvents.RowNumChanged,
+                                               newRowNumber=newRowNumber, 
oldRowNumber=oldRowNumber,
+                                               bizobj=bizobj)
+
+
                        # We made it through without errors
                        ret = True
                

Modified: trunk/dabo/ui/uiwx/dGrid.py
===================================================================
--- trunk/dabo/ui/uiwx/dGrid.py 2007-10-12 16:39:02 UTC (rev 3461)
+++ trunk/dabo/ui/uiwx/dGrid.py 2007-10-12 17:58:29 UTC (rev 3462)
@@ -1987,7 +1987,7 @@
                if colTypes is None:
                        colTypes = {}
 
-               if isinstance(ds, basestring):
+               if isinstance(ds, basestring) or isinstance(ds, 
dabo.biz.dBizobj):
                        # Assume it is a bizobj datasource.
                        if self.DataSource != ds:
                                self.DataSource = ds
@@ -2773,7 +2773,11 @@
                        form = self.Form
                        while form is not None:
                                if hasattr(form, "getBizobj"):
-                                       return form.getBizobj(ds)
+                                       newDS = form.getBizobj(ds)
+                                       if isinstance(newDS, dabo.biz.dBizobj):
+                                               # Store the reference
+                                               self._dataSource = newDS
+                                       return newDS
                                form = form.Form
                return None
 
@@ -2886,10 +2890,11 @@
        ##----------------------------------------------------------##
        def __onRowNumChanged(self, evt):
                # The form reports that the rownum has changed: sync the grid 
CurrentRow
-               try:
-                       self.CurrentRow = evt.newRowNumber
-               except AttributeError:
-                       pass
+               if evt.bizobj is self.getBizobj():
+                       try:
+                               self.CurrentRow = evt.newRowNumber
+                       except AttributeError:
+                               pass
 
 
        def _onGridCellEdited(self, evt):
@@ -3097,7 +3102,7 @@
                        bizobj = self.getBizobj()
                        if bizobj:
                                if bizobj.RowCount > newRow and 
bizobj.RowNumber != newRow:
-                                       if self._mediateRowNumberThroughForm 
and isinstance(self.Form, dabo.ui.dForm) and not isinstance(self.DataSource, 
dabo.biz.dBizobj):
+                                       if self._mediateRowNumberThroughForm 
and isinstance(self.Form, dabo.ui.dForm):
                                                # run it through the form:
                                                if not 
self.Form.moveToRowNumber(newRow, bizobj.DataSource):
                                                        
dabo.ui.callAfter(self.refresh)




_______________________________________________
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