commit-gnue
[Top][All Lists]
Advanced

[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):





reply via email to

[Prev in Thread] Current Thread [Next in Thread]