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]