[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue gnue-common/src/GDataObjects.py gnue-commo...
From: |
Jason Cater |
Subject: |
gnue gnue-common/src/GDataObjects.py gnue-commo... |
Date: |
Wed, 19 Sep 2001 01:11:15 -0400 |
CVSROOT: /home/cvs
Module name: gnue
Changes by: Jason Cater <address@hidden> 01/09/19 01:11:15
Modified files:
gnue-common/src: GDataObjects.py GDataSource.py
gnuef/src/GFObjects: GFBlock.py GFEntry.py GFScrollBar.py
Log message:
Added default value support (looks kinda weird on startup & w/querying
on multirecord blocks, but it does work as expected); scrollbar now sets rows=1
always; misc other fixes
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-common/src/GDataObjects.py.diff?cvsroot=OldCVS&tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue-common/src/GDataSource.py.diff?cvsroot=OldCVS&tr1=1.15&tr2=1.16&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/src/GFObjects/GFBlock.py.diff?cvsroot=OldCVS&tr1=1.15&tr2=1.16&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/src/GFObjects/GFEntry.py.diff?cvsroot=OldCVS&tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnuef/src/GFObjects/GFScrollBar.py.diff?cvsroot=OldCVS&tr1=1.2&tr2=1.3&r1=text&r2=text
Patches:
Index: gnue/gnue-common/src/GDataObjects.py
diff -u gnue/gnue-common/src/GDataObjects.py:1.23
gnue/gnue-common/src/GDataObjects.py:1.24
--- gnue/gnue-common/src/GDataObjects.py:1.23 Tue Sep 18 17:58:25 2001
+++ gnue/gnue-common/src/GDataObjects.py Wed Sep 19 01:11:15 2001
@@ -61,7 +61,7 @@
class ConnectionError(Exception):
# Raised when connection raises an exception.
- pass
+ pass
class MasterDetailFieldMismatch(Exception):
# Raised when a the number of master fields doesn't match the
@@ -72,9 +72,9 @@
###########################################################
+#
+#
#
-#
-#
###########################################################
class DataObject:
@@ -86,7 +86,7 @@
self._masterfields = []
self._detailfields = []
- self._masterObject = None
+ self._masterObject = None
self._detailObjects = []
self._dataConnection = None
self._resultSetClass = ResultSet
@@ -96,6 +96,7 @@
self._unboundFieldReferences = {} # Contains names of all unbound
# field references
+ self._defaultValues = {}
self.triggerExtensions = None
@@ -117,7 +118,7 @@
# Designed to be replaced by vendor-specific code
def _createEmptyResultSet(self, readOnly=0, masterRecordSet=None):
- return self.createResultSet(conditions={'1':2}, readOnly=readOnly,
+ return self.createResultSet(conditions={'1':2}, readOnly=readOnly,
masterRecordSet=masterRecordSet)
@@ -204,7 +205,7 @@
#
# Return a list of the types of Schema objects this driver provides
- # Contains tuples of (key, description, dataSource??)
+ # Contains tuples of (key, description, dataSource??)
# dataSource?? is true if this schema type can be a datasource
def getSchemaTypes(self):
return []
@@ -212,7 +213,7 @@
# Return a list of Schema objects
def getSchemaList(self, type=None):
return []
-
+
# Find a schema object with specified name
def getSchemaByName(self, name, type=None):
return None
@@ -291,10 +292,10 @@
# Get a specific record (0=based)
def getRecord(self, record):
- while (record + 1 > len(self._cachedRecords)) and self._loadNextRecord():
+ while (record + 1 > len(self._cachedRecords)) and self._loadNextRecord():
pass
- if record + 1 > len(self._cachedRecords):
+ if record + 1 > len(self._cachedRecords):
return None
else:
return self._cachedRecords[record]
@@ -306,7 +307,7 @@
while (record - 1 > len(self._cachedRecords)) and self._loadNextRecord():
pass
- if record - 1 > len(self._cachedRecords):
+ if record - 1 > len(self._cachedRecords):
return 0
else:
self._currentRecord = record
@@ -320,7 +321,7 @@
if not self._loadNextRecord():
return 0
- self._currentRecord = self._currentRecord + 1
+ self._currentRecord += 1
self.current = self._cachedRecords[self._currentRecord]
self.notifyDetailObjects()
return 1
@@ -328,9 +329,9 @@
# returns 1=New record loaded, 0=At first record
def prevRecord(self):
- if self._currentRecord < 1:
+ if self._currentRecord < 1:
return 0
- else:
+ else:
self._currentRecord = self._currentRecord - 1
self.current = self._cachedRecords[self._currentRecord]
self.notifyDetailObjects()
@@ -370,15 +371,25 @@
raise ReadOnlyError, "Attempted to insert into a read only datasource"
else:
GDebug.printMesg(7,'Inserting a blank record')
- self._currentRecord = self._currentRecord+1
+ self._currentRecord += 1
self._cachedRecords.insert(self._currentRecord,
self._createEmptyRecord())
self._recordCount += 1
self.current = self._cachedRecords[self._currentRecord]
+
+ # Set any dataobject-wide default values
+ for field in self._dataObject._defaultValues.keys():
+ self.current.setField(field, self._dataObject._defaultValues[field],0)
+
+ # Set any resultset specific values
+ for field in self._defaultValues.keys():
+ self.current.setField(field, self._defaultValues[field],0)
+
+ # Pull any primary keys from a master record set
if self._masterRecordSet != None and hasattr(self._dataObject,
'_masterfields'):
i = 0
for field in self._dataObject._masterfields:
self.current.setField(self._dataObject._detailfields[i],self._masterRecordSet.getField(field),0)
- i = i + 1
+ i += 1
self.notifyDetailObjects()
return 1
@@ -423,21 +434,21 @@
###
# Load cacheCount number of new records
- def _loadNextRecord(self):
+ def _loadNextRecord(self):
return 0
- # Load cacheCount number of new records
- def _createEmptyRecord(self):
+ # Create an empty recordset
+ def _createEmptyRecord(self):
return self._recordSetClass(self)
###########################################################
-#
+#
+#
#
-#
###########################################################
-class RecordSet:
+class RecordSet:
def __init__(self, parent, initialData={}, dbIdentifier=None,
defaultData={}):
self._detailObjects = []
Index: gnue/gnue-common/src/GDataSource.py
diff -u gnue/gnue-common/src/GDataSource.py:1.15
gnue/gnue-common/src/GDataSource.py:1.16
--- gnue/gnue-common/src/GDataSource.py:1.15 Thu Sep 13 18:39:21 2001
+++ gnue/gnue-common/src/GDataSource.py Wed Sep 19 01:11:15 2001
@@ -22,7 +22,7 @@
# GDataObjects.py
#
# DESCRIPTION:
-# Class that implements a provider-independent DataSource object
+# Class that implements a provider-independent DataSource object
#
# NOTES:
#
@@ -56,6 +56,7 @@
self._connectionComment = ""
self._fieldReferences = {}
self._unboundFieldReferences = {}
+ self._defaultValues = {}
#
# This method should be called after the object is created
@@ -82,6 +83,7 @@
self._dataObject._fieldReferences = self._fieldReferences
self._dataObject._unboundFieldReferences = self._unboundFieldReferences
+ self._dataObject._defaultValues = self._defaultValues
# Copy all attributes from XML to the dataObject
for attribute in tagAttributes.keys():
@@ -97,24 +99,33 @@
def getDataObject(self):
return self._dataObject
- def referenceField(self, field):
+ def referenceField(self, field, defaultValue=None):
GDebug.printMesg(7,'Field %s implicitly referenced' % field)
self._fieldReferences[field] = 1
- if self._dataObject != None:
- self._dataObject._fieldReferences[field] = 1
+# TODO: These aren't really necessary as we are setting
+# TODO: self._dataObject._fieldReferences to be our _fieldReferences
+# TODO: (i.e., we are not setting it to a copy, but to a "reference"
+# if self._dataObject != None:
+# self._dataObject._fieldReferences[field] = 1
- def referenceUnboundField(self, field):
+ if defaultValue != None:
+ self._defaultValues[field] = defaultValue
+
+ def referenceUnboundField(self, field, defaultValue=None):
GDebug.printMesg(7,'Field %s implicitly referenced' % field)
self._unboundFieldReferences[field] = 1
- if self._dataObject != None:
- self._dataObject._unboundFieldReferences[field] = 1
+# if self._dataObject != None:
+# self._dataObject._unboundFieldReferences[field] = 1
+
+ if defaultValue != None:
+ self._defaultValues[field] = defaultValue
#
# The following are a simple wrapper arround the datasource's dataobject
# to hide the dataobject from the app programmer
- #
- def hasMaster(self):
+ #
+ def hasMaster(self):
return self._dataObject != None and self._dataObject.hasMaster()
def createResultSet(self, conditions={}, readOnly=0):
Index: gnue/gnuef/src/GFObjects/GFBlock.py
diff -u gnue/gnuef/src/GFObjects/GFBlock.py:1.15
gnue/gnuef/src/GFObjects/GFBlock.py:1.16
--- gnue/gnuef/src/GFObjects/GFBlock.py:1.15 Tue Sep 18 14:18:46 2001
+++ gnue/gnuef/src/GFObjects/GFBlock.py Wed Sep 19 01:11:15 2001
@@ -248,7 +248,7 @@
value = entry._value
for letter in value:
if letter != "%":
- newValue=newValue+letter+"%"
+ newValue += letter+"%"
entry.setValue(newValue)
self.mode = 'normal'
Index: gnue/gnuef/src/GFObjects/GFEntry.py
diff -u gnue/gnuef/src/GFObjects/GFEntry.py:1.16
gnue/gnuef/src/GFObjects/GFEntry.py:1.17
--- gnue/gnuef/src/GFObjects/GFEntry.py:1.16 Sun Sep 16 17:16:24 2001
+++ gnue/gnuef/src/GFObjects/GFEntry.py Wed Sep 19 01:11:15 2001
@@ -12,7 +12,7 @@
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
-# License along with program; see the file COPYING. If not,
+# License along with program; see the file COPYING. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
@@ -97,12 +97,18 @@
self._cursorPosition = len(self._oldval)
self._block = self.findParentOfType('GFBlock')
+
+ if hasattr(self, 'default') and self.default != None and len(self.default):
+ default = self.default
+ else:
+ default = None
+
if not hasattr(self,'field') or not len(self.field):
self.field = "__GNUe__%s" % self.name
- self._block._dataSourceLink.referenceUnboundField(self.field)
+ self._block._dataSourceLink.referenceUnboundField(self.field, default)
self._bound = 0
else:
- self._block._dataSourceLink.referenceField(self.field)
+ self._block._dataSourceLink.referenceField(self.field, default)
self._bound = 1
if hasattr(self,'foreign_key'):
@@ -130,12 +136,12 @@
# Pulls the proper value from the resultSet
#
def getValue(self):
- if self._block.mode == 'query':
- if self._block._queryValues.has_key(self):
+ if self._block.mode == 'query':
+ if self._block._queryValues.has_key(self):
value = self._block._queryValues[self]
else:
value = None
- else:
+ else:
value = self._block._resultSet.current.getField(self.field)
if value == None: value = ''
@@ -151,9 +157,9 @@
if value =='' and hasattr(self, 'style') and self.style=='checkbox':
value = 0
self._oldval = value
- if self._block.mode == 'query':
+ if self._block.mode == 'query':
self._block._queryValues[self] = value
- else:
+ else:
self._block._resultSet.current.setField(self.field,value)
self._block._form.updateUIEntry(self)
Index: gnue/gnuef/src/GFObjects/GFScrollBar.py
diff -u gnue/gnuef/src/GFObjects/GFScrollBar.py:1.2
gnue/gnuef/src/GFObjects/GFScrollBar.py:1.3
--- gnue/gnuef/src/GFObjects/GFScrollBar.py:1.2 Wed Jul 18 18:45:01 2001
+++ gnue/gnuef/src/GFObjects/GFScrollBar.py Wed Sep 19 01:11:15 2001
@@ -41,6 +41,7 @@
GFObj.__init__(self, parent)
self._type = "GFScrollBar"
self.label = ""
+ self.rows = 1