commit-gnue
[Top][All Lists]
Advanced

[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
 
 
 



reply via email to

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