[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [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,
reinhard <=