commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r7604 - in trunk: gnue-common/src/datasources gnue-common/src/dat


From: reinhard
Subject: [gnue] r7604 - in trunk: gnue-common/src/datasources gnue-common/src/datasources/drivers/Base gnue-common/src/logic gnue-forms/src gnue-forms/src/GFObjects
Date: Thu, 16 Jun 2005 17:47:10 -0500 (CDT)

Author: reinhard
Date: 2005-06-16 17:47:09 -0500 (Thu, 16 Jun 2005)
New Revision: 7604

Modified:
   trunk/gnue-common/src/datasources/GDataSource.py
   trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
   trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
   trunk/gnue-common/src/logic/GTrigger.py
   trunk/gnue-forms/src/GFInstance.py
   trunk/gnue-forms/src/GFObjects/GFBlock.py
   trunk/gnue-forms/src/GFObjects/GFDataSource.py
Log:
Replace _beforeCommitXxx hook functions in datasources by standard events
system.


Modified: trunk/gnue-common/src/datasources/GDataSource.py
===================================================================
--- trunk/gnue-common/src/datasources/GDataSource.py    2005-06-16 21:45:22 UTC 
(rev 7603)
+++ trunk/gnue-common/src/datasources/GDataSource.py    2005-06-16 22:47:09 UTC 
(rev 7604)
@@ -136,6 +136,7 @@
       return self.createResultSet (conditions, readOnly)
     else:
       return self.createEmptyResultSet()
+
   # ---------------------------------------------------------------------------
 
   def __trigger_simpleQuery (self, maskDict):
@@ -577,8 +578,7 @@
         requery          = self.requery,
         readonly         = readOnly,
         details          = self.__details,
-        eventController  = self.__eventController,
-        dataSource       = self)
+        eventController  = self.__eventController)
 
 
   # ---------------------------------------------------------------------------
@@ -684,34 +684,6 @@
     return result
 
 
-  # ---------------------------------------------------------------------------
-  # Hooks for record-level triggers
-  # ---------------------------------------------------------------------------
-
-  def _beforeCommitInsert(self, record):
-    return 1
-
-  # ---------------------------------------------------------------------------
-
-  def _beforeCommitUpdate(self, record):
-    return 1
-
-  # ---------------------------------------------------------------------------
-
-  def _beforeCommitDelete(self, record):
-    return 1
-
-  # ---------------------------------------------------------------------------
-
-  def _onModification(self, record):
-    return 1
-
-  # ---------------------------------------------------------------------------
-
-  def _onRecordLoaded(self, record):
-    return 1
-
-
 # =============================================================================
 # <sortorder>
 # =============================================================================

Modified: trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-06-16 
21:45:22 UTC (rev 7603)
+++ trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-06-16 
22:47:09 UTC (rev 7604)
@@ -89,7 +89,7 @@
       requery          = True,
       readonly         = False,
       details          = {},
-      dataSource       = None):
+      eventController  = None):
     """
     Create a new RecordSet instance.
 
@@ -121,7 +121,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 dataSource: GDataSource instance to notify of data events.
+    @param eventController: EventController instance to notify of data events.
     """
 
     self.__connection       = connection
@@ -133,7 +133,7 @@
     self.__requery          = requery
     self.__readonly         = readonly
     self.__details          = details
-    self.__dataSource       = dataSource
+    self.__eventController  = eventController
 
     # Record status
     # New recs:      'empty' -(__setitem__)-> 'inserted' -(delete)-> 'void'
@@ -164,8 +164,8 @@
       # Existing record:
       # Set the current state of all fields as given in the parameter
       self.__fields = self.__initialData.copy ()
-      if self.__dataSource is not None:
-        self.__dataSource._onRecordLoaded (self)
+      if self.__eventController is not None:
+        self.__eventController.dispatchEvent ('dsRecordLoaded', record = self)
 
     else:
 
@@ -242,8 +242,8 @@
           self.__status = 'inserted'
         elif self.__status == 'clean':
           self.__status = 'modified'
-        if self.__dataSource is not None:
-          self.__dataSource._onModification (self)
+        if self.__eventController is not None:
+          self.__eventController.dispatchEvent ('dsRecordTouched', record=self)
 
   # ---------------------------------------------------------------------------
 
@@ -522,15 +522,15 @@
     status = self.__status
 
     # Call the hooks for commit-level hooks
-    if self.__dataSource is not None:
+    if self.__eventController is not None:
       # A trigger code could change the status from empty/inserted/modified to
       # deleted. In that case, both triggers would be called.
       if self.__status in ['empty', 'inserted']:
-        self.__dataSource._beforeCommitInsert (self)
+        self.__eventController.dispatchEvent ('dsCommitInsert', record = self)
       if self.__status == 'modified':
-        self.__dataSource._beforeCommitUpdate (self)
+        self.__eventController.dispatchEvent ('dsCommitUpdate', record = self)
       if self.__status == 'deleted':
-        self.__dataSource._beforeCommitDelete (self)
+        self.__eventController.dispatchEvent ('dsCommitDelete', record = self)
 
     # Check for empty primary key and set with the sequence value if so
     if self.__status in ['empty', 'inserted']:

Modified: trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-06-16 
21:45:22 UTC (rev 7603)
+++ trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-06-16 
22:47:09 UTC (rev 7604)
@@ -57,8 +57,7 @@
       requery          = True,
       readonly         = False,
       details          = {},
-      eventController  = None,
-      dataSource       = None):
+      eventController  = None):
     """
     Create a new ResultSet instance.
 
@@ -89,7 +88,6 @@
       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.
     """
 
     self.__defaultData      = defaultData
@@ -103,7 +101,6 @@
     self.__readonly         = readonly
     self.__details          = details
     self.__eventController  = eventController
-    self.__dataSource       = dataSource
 
     # Data for static datasources
     self.__staticData = []
@@ -227,7 +224,7 @@
         requery          = self.__requery,
         readonly         = self.__readonly,
         details          = self.__details,
-        dataSource       = self.__dataSource)
+        eventController  = self.__eventController)
 
     if position is None:
       self.__cachedRecords.append (record)
@@ -340,7 +337,8 @@
     if self.current and self.current != oldCurrent:
       self.current._activate ()
 
-    self.__eventController.dispatchEvent ('dsCursorMoved')
+    if self.__eventController is not None:
+      self.__eventController.dispatchEvent ('dsCursorMoved')
 
 
   # ---------------------------------------------------------------------------

Modified: trunk/gnue-common/src/logic/GTrigger.py
===================================================================
--- trunk/gnue-common/src/logic/GTrigger.py     2005-06-16 21:45:22 UTC (rev 
7603)
+++ trunk/gnue-common/src/logic/GTrigger.py     2005-06-16 22:47:09 UTC (rev 
7604)
@@ -305,6 +305,7 @@
     """
     key = string.upper(key)
     if key in self._validTriggers.keys():
+      gDebug (9, 'Trigger %s on %s' % (key, repr (self)))
       if self._trigger.has_key(key):
         for function in self._trigger[key]:
           # TODO: do we need to call "updateNamespace" here?

Modified: trunk/gnue-forms/src/GFInstance.py
===================================================================
--- trunk/gnue-forms/src/GFInstance.py  2005-06-16 21:45:22 UTC (rev 7603)
+++ trunk/gnue-forms/src/GFInstance.py  2005-06-16 22:47:09 UTC (rev 7604)
@@ -87,14 +87,6 @@
                            # First, all events are passed to the focus widget
                            '__before__'          : self.__beforeEvent,
 
-                           # Datasource trigger events
-                           'preCommit'           : self.preCommit,
-                           'preUpdate'           : self.preUpdate,
-                           'preInsert'           : self.preInsert,
-                           'preDelete'           : self.preDelete,
-                           'onRecordTouched'     : self.onRecordTouched,
-                           'onQueryNewRecord'    : self.onQueryNewRecord,
-
                            # Focus-related events
                            'requestENTER'        : self.nextEntry,
                            'requestNEXTENTRY'    : self.nextEntry,
@@ -1212,82 +1204,6 @@
 
 
   # ---------------------------------------------------------------------------
-  # Execute block-trigger: Pre-Commit
-  # ---------------------------------------------------------------------------
-
-  def preCommit (self, event):
-
-    self._handlePreCommit (event, 'PRE-COMMIT')
-
-
-  # ---------------------------------------------------------------------------
-  # Execute block-trigger: Pre-Insert
-  # ---------------------------------------------------------------------------
-
-  def preInsert (self, event):
-
-    self._handlePreCommit (event, 'PRE-INSERT')
-
-
-  # ---------------------------------------------------------------------------
-  # Execute block-trigger: Pre-Update
-  # ---------------------------------------------------------------------------
-
-  def preUpdate (self, event):
-
-    self._handlePreCommit (event, 'PRE-UPDATE')
-
-
-  # ---------------------------------------------------------------------------
-  # Execute block-trigger: Pre-Delete
-  # ---------------------------------------------------------------------------
-
-  def preDelete (self, event):
-
-    self._handlePreCommit (event, 'PRE-DELETE')
-
-
-  # ---------------------------------------------------------------------------
-  # Execute block-trigger: Pre-Change
-  # ---------------------------------------------------------------------------
-
-  def onRecordTouched (self, event):
-    
-    self._handlePreCommit (event, 'PRE-CHANGE')
-
-
-  # ---------------------------------------------------------------------------
-  # Process a trigger for a given block and all it's fields
-  # ---------------------------------------------------------------------------
-
-  def _handlePreCommit (self, event, trigger):
-
-    saveMode = event.block.mode
-    event.block._preCommitWorkingRecord = event.record
-    event.block.mode = 'precommit'
-    event.block.processTrigger (trigger)
-
-    for child in event.block._fieldList:
-      child.processTrigger (trigger)
-
-    event.block.mode = saveMode
-
-
-  # ---------------------------------------------------------------------------
-  #
-  # ---------------------------------------------------------------------------
-
-  def onQueryNewRecord (self, event):
-
-    pass
-    # TODO: Running this here causes the trigger to fire prior to all blocks
-    #       being filled
-    #event.block.processTrigger('POST-QUERY')
-    #for child in event.block._fieldList:
-    #  child.processTrigger('POST-QUERY')
-
-
-  # ---------------------------------------------------------------------------
   # Fire a trigger of the form
   # ---------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py   2005-06-16 21:45:22 UTC (rev 
7603)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py   2005-06-16 22:47:09 UTC (rev 
7604)
@@ -224,13 +224,17 @@
           u_("Datasource '%(datasource)s' in block '%(block)s' not found") \
           % {'datasource': self.datasource,
              'block': self.name}
-    self._dataSourceLink.setBlock (self)
 
     # Register event handling functions
     self._dataSourceLink.registerEventListeners ({
         'dsResultSetActivated': self.__dsResultSetActivated,
         'dsResultSetChanged'  : self.__dsResultSetActivated, # sic!
-        'dsCursorMoved'       : self.__dsCursorMoved})
+        'dsCursorMoved'       : self.__dsCursorMoved,
+        'dsRecordLoaded'      : self.__dsRecordLoaded,
+        'dsRecordTouched'     : self.__dsRecordTouched,
+        'dsCommitInsert'      : self.__dsCommitInsert,
+        'dsCommitUpdate'      : self.__dsCommitUpdate,
+        'dsCommitDelete'      : self.__dsCommitDelete})
 
     # Get min and max child rows, if applicable
     try:
@@ -278,8 +282,51 @@
     if recno != -1:
       self.switchRecord (recno - self._currentRecord)
 
+  # ---------------------------------------------------------------------------
 
+  def __dsRecordLoaded (self, event):
+    pass        # TODO: define a trigger for this
+
   # ---------------------------------------------------------------------------
+
+  def __dsRecordTouched (self, event):
+    # This already gets called by GFField??
+    # self.__fireRecordTrigger ('PRE-CHANGE', event.record)
+    pass
+
+  # ---------------------------------------------------------------------------
+
+  def __dsCommitInsert (self, event):
+    self.__fireRecordTrigger ('PRE-INSERT', event.record)
+    self.__fireRecordTrigger ('PRE-COMMIT', event.record)
+
+  # ---------------------------------------------------------------------------
+
+  def __dsCommitUpdate (self, event):
+    self.__fireRecordTrigger ('PRE-UPDATE', event.record)
+    self.__fireRecordTrigger ('PRE-COMMIT', event.record)
+
+  # ---------------------------------------------------------------------------
+
+  def __dsCommitDelete (self, event):
+    self.__fireRecordTrigger ('PRE-DELETE', event.record)
+    self.__fireRecordTrigger ('PRE-COMMIT', event.record)
+
+  # ---------------------------------------------------------------------------
+
+  def __fireRecordTrigger (self, trigger, record):
+    # FIXME: remove record parameter, make ResultSet move "current" pointer
+    # through the records?
+    saveMode = self.mode
+    self._preCommitWorkingRecord = record
+    self.mode = 'precommit'
+    self.processTrigger (trigger)
+    for field in self._fieldList:
+      field.processTrigger (trigger)
+    self.mode = saveMode
+
+
+  # ---------------------------------------------------------------------------
   #
   #
   def getFocusOrder(self):

Modified: trunk/gnue-forms/src/GFObjects/GFDataSource.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFDataSource.py      2005-06-16 21:45:22 UTC 
(rev 7603)
+++ trunk/gnue-forms/src/GFObjects/GFDataSource.py      2005-06-16 22:47:09 UTC 
(rev 7604)
@@ -45,45 +45,3 @@
     GDataSource.__init__(self, parent, 'GFDataSource')
     self._toplevelParent = 'GFForm'
     self._form = self.findParentOfType('GFForm')
-    self.__block = None
-
-
-  # Remember the block this DataSource is bound to
-  def setBlock (self, block):
-    self.__block = block
-
-
-  def getBlock (self):
-    return self.__block
-
-
-  #
-  # Hooks for record-level triggers
-  #
-
-  def _beforeCommitInsert(self, record):
-    if self.__block:
-      self._form.dispatchEvent('preInsert', record=record, block=self.__block)
-      self._form.dispatchEvent('preCommit', record=record, block=self.__block)
-
-  def _beforeCommitUpdate(self, record):
-    if self.__block:
-      self._form.dispatchEvent('preUpdate', record=record, block=self.__block)
-      self._form.dispatchEvent('preCommit', record=record, block=self.__block)
-
-  def _beforeCommitDelete(self, record):
-    if self.__block:
-      self._form.dispatchEvent('preDelete', record=record, block=self.__block)
-      self._form.dispatchEvent('preCommit', record=record, block=self.__block)
-
-  def _onModification(self, record):
-    if self.__block:
-      self._form.dispatchEvent('onRecordTouched', record=record,
-          block=self.__block)
-    return True
-
-  def _onRecordLoaded(self, record):
-    if self.__block:
-      self._form.dispatchEvent('onQueryNewRecord', record=record,
-          block=self.__block)
-    return True





reply via email to

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