[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7602 - in trunk: gnue-common/src/datasources gnue-common/src/dat
From: |
reinhard |
Subject: |
[gnue] r7602 - in trunk: gnue-common/src/datasources gnue-common/src/datasources/drivers/Base gnue-forms/src/GFObjects |
Date: |
Thu, 16 Jun 2005 16:27:27 -0500 (CDT) |
Author: reinhard
Date: 2005-06-16 16:27:26 -0500 (Thu, 16 Jun 2005)
New Revision: 7602
Modified:
trunk/gnue-common/src/datasources/GDataSource.py
trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
trunk/gnue-forms/src/GFObjects/GFBlock.py
trunk/gnue-forms/src/GFObjects/GFField.py
Log:
Replaced ResultSet.registerListener system with standard event system.
Modified: trunk/gnue-common/src/datasources/GDataSource.py
===================================================================
--- trunk/gnue-common/src/datasources/GDataSource.py 2005-06-16 20:43:47 UTC
(rev 7601)
+++ trunk/gnue-common/src/datasources/GDataSource.py 2005-06-16 21:27:26 UTC
(rev 7602)
@@ -52,6 +52,8 @@
- dsResultSetChanged (parameters: resultSet) whenever the current ResultSet
has been reloaded from the backend; this happens after each commit if the
"requery" option of this datasource is in use.
+ - dsCursorMoved (parameters: none) whenever the cursor in the current
+ ResultSet is moved, i.e. a different record becomes the current record.
"""
#
---------------------------------------------------------------------------
@@ -583,6 +585,7 @@
requery = self.requery,
readonly = readOnly,
details = self.__details,
+ eventController = self.__eventController,
dataSource = self)
Modified: trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-06-16
20:43:47 UTC (rev 7601)
+++ trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-06-16
21:27:26 UTC (rev 7602)
@@ -57,6 +57,7 @@
requery = True,
readonly = False,
details = {},
+ eventController = None,
dataSource = None):
"""
Create a new ResultSet instance.
@@ -87,6 +88,7 @@
the key is the L{GDataSource} object and the values are tuples
containing a list of primary key fields and a list of the corresponding
foreign key fields.
+ @param eventController: EventController instance to notify of data events.
@param dataSource: GDataSource instance to notify of data events.
"""
@@ -100,6 +102,7 @@
self.__requery = requery
self.__readonly = readonly
self.__details = details
+ self.__eventController = eventController
self.__dataSource = dataSource
# Data for static datasources
@@ -114,9 +117,6 @@
# Number of records
self.__recordCount = 0
- # Objects to get informed about record navigation events
- self.__listeners = []
-
# Generator to yield fieldname/value dictionaries
self.__generator = None
@@ -324,18 +324,6 @@
# Notification of record navigation
# ---------------------------------------------------------------------------
- # Other objects can register here. Their currentRecordMoved method will then
- # get called whenever the current record of this ResultSet changes.
- def registerListener (self, listener):
- if listener not in self.__listeners:
- self.__listeners.append (listener)
- # Inform new listener about current record. This happens whenever the
- # *Resultset* (not the current record but the whole resultset) changes.
- if self.__currentRecord >= 0:
- listener.currentRecordMoved ()
-
- # ---------------------------------------------------------------------------
-
# Sync self.current with self.__currentRecord and adjust detail resultsets
and
# the user interface
def __sync (self):
@@ -352,8 +340,7 @@
if self.current and self.current != oldCurrent:
self.current._activate ()
- for listener in self.__listeners:
- listener.currentRecordMoved ()
+ self.__eventController.dispatchEvent ('dsCursorMoved')
# ---------------------------------------------------------------------------
Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py 2005-06-16 20:43:47 UTC (rev
7601)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py 2005-06-16 21:27:26 UTC (rev
7602)
@@ -230,7 +230,7 @@
self._dataSourceLink.registerEventListeners ({
'dsResultSetActivated': self.__dsResultSetActivated,
'dsResultSetChanged' : self.__dsResultSetActivated, # sic!
- })
+ 'dsCursorMoved' : self.__dsCursorMoved})
# Get min and max child rows, if applicable
try:
@@ -261,24 +261,24 @@
# ---------------------------------------------------------------------------
def __dsResultSetActivated (self, event):
-
self._resultSet = event.resultSet
-
self._recordCount = self._resultSet.getRecordCount ()
+ recno = self._resultSet.getRecordNumber ()
+ if recno == -1:
+ if not self._resultSet.firstRecord ():
+ self.newRecord ()
+ else:
+ self.switchRecord (recno - self._currentRecord)
- # This makes the resultSet call our currentRecordMoved method
- self._resultSet.registerListener (self)
+ # ---------------------------------------------------------------------------
- # Do this again because currentRecordMoved doesn't act on -1
- self._currentRecord = self._resultSet.getRecordNumber ()
+ def __dsCursorMoved (self, event):
+ # Blocks can't cope with current record #-1
+ recno = self._resultSet.getRecordNumber ()
+ if recno != -1:
+ self.switchRecord (recno - self._currentRecord)
- # If the ResultSet already has a current record loaded, stay there.
- # Otherwise, jump to the first record. If there is none, create an empty
- # record.
- if self._currentRecord == -1 and not self._resultSet.firstRecord ():
- self.newRecord ()
-
# ---------------------------------------------------------------------------
#
#
@@ -334,13 +334,6 @@
return self._resultSet
- # This gets called by the resultSet whenever the current record changes
- def currentRecordMoved (self):
- # Blocks can't cope with current record #-1
- recno = self._resultSet.getRecordNumber ()
- if recno != -1:
- self.switchRecord (recno - self._currentRecord)
-
#
#
#
Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py 2005-06-16 20:43:47 UTC (rev
7601)
+++ trunk/gnue-forms/src/GFObjects/GFField.py 2005-06-16 21:27:26 UTC (rev
7602)
@@ -221,7 +221,7 @@
self._fk_datasource.registerEventListeners ({
'dsResultSetActivated': self.__dsResultSetActivated,
'dsResultSetChanged' : self.__dsResultSetActivated, # sic!
- })
+ 'dsCursorMoved' : self.__dsCursorMoved})
if hasattr(self, 'queryDefault') and \
@@ -238,7 +238,15 @@
def __dsResultSetActivated (self, event):
self.__loadAllowedValues (event.resultSet)
+ # ---------------------------------------------------------------------------
+ def __dsCursorMoved (self, event):
+ # The entry causing the fk record change has already posted a setValue for
+ # this field; our current record already contians the correct data. All we
+ # have to do is tell our UI to update.
+ self._block._form.updateUIEntry (self)
+
+
# ---------------------------------------------------------------------------
#
# ---------------------------------------------------------------------------
@@ -435,9 +443,6 @@
# Remember the resultSet for later
self.__fk_resultSet = resultSet
- # Register as a listener to resultset movements
- resultSet.registerListener(self)
-
gDebug (5,'Created for DropDown: %s' % self._allowedValues)
def allowedValues(self):
@@ -457,14 +462,6 @@
pass
- # This gets called by the (FK) resultSet whenever the current record changes.
- # We want the field to follow the selection then.
- def currentRecordMoved (self):
- # The entry causing the fk record change has already posted a setValue for
- # this field; our current record already contians the correct data. All we
- # have to do is tell our UI to update.
- self._block._form.updateUIEntry(self)
-
# This gets called by the block whenever the current record of our own
# resultset changes. We want the fk resultset to follow.
def gotNewCurrentRecord (self):
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7602 - in trunk: gnue-common/src/datasources gnue-common/src/datasources/drivers/Base gnue-forms/src/GFObjects,
reinhard <=