[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r9973 - in trunk/gnue-common: . src/datasources src/datasources/d
From: |
reinhard |
Subject: |
[gnue] r9973 - in trunk/gnue-common: . src/datasources src/datasources/drivers/Base |
Date: |
Thu, 15 Oct 2009 16:35:36 -0500 (CDT) |
Author: reinhard
Date: 2009-10-15 16:35:36 -0500 (Thu, 15 Oct 2009)
New Revision: 9973
Modified:
trunk/gnue-common/NEWS
trunk/gnue-common/src/datasources/GDataSource.py
trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
Log:
If the master moves to "no record" (index -1), set the resultset in detail
datasources/blocks to None. This situation might occur if the master is a
dropdown and the empty entry is selected there.
Modified: trunk/gnue-common/NEWS
===================================================================
--- trunk/gnue-common/NEWS 2009-10-15 21:32:44 UTC (rev 9972)
+++ trunk/gnue-common/NEWS 2009-10-15 21:35:36 UTC (rev 9973)
@@ -9,6 +9,7 @@
* [base] reworked implementation of "setup" and "version" modules
* [base] new function to search for configuration files
* [datasources] support for Python's builtin sqlite DBSIG2 module
+* [datasources] set detail resultset to None when master moves to "no record"
* Code cleanup
* Removed some unused modules
* Translation updates
Modified: trunk/gnue-common/src/datasources/GDataSource.py
===================================================================
--- trunk/gnue-common/src/datasources/GDataSource.py 2009-10-15 21:32:44 UTC
(rev 9972)
+++ trunk/gnue-common/src/datasources/GDataSource.py 2009-10-15 21:35:36 UTC
(rev 9973)
@@ -678,6 +678,22 @@
# ---------------------------------------------------------------------------
+ # Clear the current result set (meaning that the datasource will not have a
+ # current result set after this)
+ # ---------------------------------------------------------------------------
+
+ def clearResultSet (self):
+ """
+ Clear the current result set.
+
+ After this, the datasource will have no current result set, not even an
+ empty one.
+ """
+
+ self._activateResultSet (None)
+
+
+ # ---------------------------------------------------------------------------
# Create a new ResultSet object instance
# ---------------------------------------------------------------------------
@@ -739,8 +755,12 @@
self.__currentResultSet = resultSet
# Let our details follow
- if self.__currentResultSet.current is not None:
+ if self.__currentResultSet is not None \
+ and self.__currentResultSet.current is not None:
self.__currentResultSet.current._activate()
+ else:
+ for detail_ds in self.__details.keys():
+ detail_ds.clearResultSet()
self.__eventController.dispatchEvent ('dsResultSetActivated',
resultSet = resultSet)
Modified: trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2009-10-15
21:32:44 UTC (rev 9972)
+++ trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2009-10-15
21:35:36 UTC (rev 9973)
@@ -910,13 +910,18 @@
# If the current record has *really* changed (this method can be called
# for non-changing records after requery or merge) to a new current
# record, bring all detail records in sync.
- if self.current and self.current != old_current:
- # If the cursor moved out of an empty record, throw it away.
- if old_current and old_current.isEmpty():
- if old_current in self.__cached_records:
- index = self.__cached_records.index(old_current)
- self.__remove_record(index)
- self.current._activate()
+ if self.current != old_current:
+ if self.current is not None:
+ if old_current and old_current.isEmpty():
+ # If the cursor moved out of an empty record, throw it away
+ if old_current in self.__cached_records:
+ index = self.__cached_records.index(old_current)
+ self.__remove_record(index)
+ self.current._activate()
+ else:
+ # Pointer moved to "no record": Create empty detail resultsets.
+ for detail_ds in self.__details.keys():
+ detail_ds.clearResultSet()
if send_event and self.__eventController is not None:
self.__eventController.dispatchEvent('dsCursorMoved')
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9973 - in trunk/gnue-common: . src/datasources src/datasources/drivers/Base,
reinhard <=