[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue common/src/GDataObjects.py common/src/dbdr...
From: |
Jason Cater |
Subject: |
gnue common/src/GDataObjects.py common/src/dbdr... |
Date: |
Sun, 17 Feb 2002 13:25:32 -0500 |
CVSROOT: /home/cvs
Module name: gnue
Changes by: Jason Cater <address@hidden> 02/02/17 13:25:32
Modified files:
common/src : GDataObjects.py
common/src/dbdrivers/_dbsig: DBdriver.py
common/src/dbdrivers/odbc-db2: DBdriver.py
forms/src : GFDisplayHandler.py GFForm.py GFInstance.py
GFKeyMapper.py UIbase.py
forms/src/GFObjects: GFEntry.py
Log message:
move to typecasted database drivers; more work on input abstraction;
more work on clipboard functions
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/GDataObjects.py.diff?cvsroot=OldCVS&tr1=1.42&tr2=1.43&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/dbdrivers/_dbsig/DBdriver.py.diff?cvsroot=OldCVS&tr1=1.35&tr2=1.36&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/dbdrivers/odbc-db2/DBdriver.py.diff?cvsroot=OldCVS&tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFDisplayHandler.py.diff?cvsroot=OldCVS&tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFForm.py.diff?cvsroot=OldCVS&tr1=1.150&tr2=1.151&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFInstance.py.diff?cvsroot=OldCVS&tr1=1.30&tr2=1.31&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFKeyMapper.py.diff?cvsroot=OldCVS&tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/UIbase.py.diff?cvsroot=OldCVS&tr1=1.56&tr2=1.57&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFEntry.py.diff?cvsroot=OldCVS&tr1=1.45&tr2=1.46&r1=text&r2=text
Patches:
Index: gnue/common/src/GDataObjects.py
diff -c gnue/common/src/GDataObjects.py:1.42
gnue/common/src/GDataObjects.py:1.43
*** gnue/common/src/GDataObjects.py:1.42 Mon Feb 11 23:40:20 2002
--- gnue/common/src/GDataObjects.py Sun Feb 17 13:25:31 2002
***************
*** 599,605 ****
raise ReadOnlyError, "Attempted to modify read only field '%s'" % field
else:
fn = string.lower(field)
! self._fields[fn] = "%s" % value
if trackMod == 1:
self._emptyFlag = 0
if self._parent.isFieldBound(field):
--- 599,605 ----
raise ReadOnlyError, "Attempted to modify read only field '%s'" % field
else:
fn = string.lower(field)
! self._fields[fn] = value
if trackMod == 1:
self._emptyFlag = 0
if self._parent.isFieldBound(field):
Index: gnue/common/src/dbdrivers/_dbsig/DBdriver.py
diff -c gnue/common/src/dbdrivers/_dbsig/DBdriver.py:1.35
gnue/common/src/dbdrivers/_dbsig/DBdriver.py:1.36
*** gnue/common/src/dbdrivers/_dbsig/DBdriver.py:1.35 Tue Feb 5 00:45:53 2002
--- gnue/common/src/dbdrivers/_dbsig/DBdriver.py Sun Feb 17 13:25:31 2002
***************
*** 1,4 ****
--- 1,6 ----
#
+ # Copyright 2000-2002 Free Software Foundation
+ #
# This file is part of GNU Enterprise.
#
# GNU Enterprise is free software; you can redistribute it
***************
*** 15,22 ****
# 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.
- #
- # Copyright 2000, 2001 Free Software Foundation
#
# FILE:
# _dbsig/DBdriver.py
--- 17,22 ----
Index: gnue/common/src/dbdrivers/odbc-db2/DBdriver.py
diff -c gnue/common/src/dbdrivers/odbc-db2/DBdriver.py:1.5
gnue/common/src/dbdrivers/odbc-db2/DBdriver.py:1.6
*** gnue/common/src/dbdrivers/odbc-db2/DBdriver.py:1.5 Tue Jan 29 14:54:42 2002
--- gnue/common/src/dbdrivers/odbc-db2/DBdriver.py Sun Feb 17 13:25:31 2002
***************
*** 1,4 ****
--- 1,6 ----
#
+ # Copyright 2000-2002 Free Software Foundation
+ #
# This file is part of GNU Enterprise.
#
# GNU Enterprise is free software; you can redistribute it
***************
*** 15,22 ****
# 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.
- #
- # Copyright 2000-2002 Free Software Foundation
#
# FILE:
# odbc-db2/DBdriver.py
--- 17,22 ----
Index: gnue/forms/src/GFDisplayHandler.py
diff -c gnue/forms/src/GFDisplayHandler.py:1.6
gnue/forms/src/GFDisplayHandler.py:1.7
*** gnue/forms/src/GFDisplayHandler.py:1.6 Sun Feb 17 01:25:32 2002
--- gnue/forms/src/GFDisplayHandler.py Sun Feb 17 13:25:32 2002
***************
*** 50,65 ****
#
def setValue(self, value):
self.modified = 0
self.value = value
self._buildDisplay()
def getValue(self):
-
- if self.editing and self.modified:
- self._buildValue()
-
return self.value
--- 50,62 ----
#
def setValue(self, value):
+ print "Setting value"
self.modified = 0
self.value = value
self._buildDisplay()
def getValue(self):
return self.value
***************
*** 67,83 ****
return self.display
#####################
#
# Editing methods
#
def beginEdit(self, event):
! print "Editing"
self.editing = 1
self.modified = 0
# TODO: Replace with formatter
if self.value == None:
self.work = ""
else:
--- 64,96 ----
return self.display
+ def getDisplayFiller(self, value):
+ return self._buildDisplayHelper(value, 0)
+
+
+ def generateRefreshEvent(self):
+ print "Refreshing!!"
+ self.dispatchEvent(GFEvent('updateEntryEditor',
+ object = self.entry,
+ display=self.display,
+ cursor=self.cursor,
+ selection=self.getSelectionArea(),
+ ))
+
+
+
#####################
#
# Editing methods
#
def beginEdit(self, event):
! print "beginEdit.. %s" % self.display
self.editing = 1
self.modified = 0
# TODO: Replace with formatter
+ self.setValue(self.entry.getValue())
if self.value == None:
self.work = ""
else:
***************
*** 88,94 ****
def endEdit(self, event):
! print "End Editing"
# If this event returns __error__, then
# the input was invalid and the entry is
--- 101,107 ----
def endEdit(self, event):
! print "endEdit.. %s"
# If this event returns __error__, then
# the input was invalid and the entry is
***************
*** 346,352 ****
print "Cut"
self.clipboardCopy(event)
edevent = GFEvent("requestKEYPRESS", text="")
! self.processEvent(edevent)
def clipboardPaste(self, event):
--- 359,365 ----
print "Cut"
self.clipboardCopy(event)
edevent = GFEvent("requestKEYPRESS", text="")
! self.dispatchEvent(edevent)
def clipboardPaste(self, event):
***************
*** 408,418 ****
self.value = self.work
return 1
def _buildDisplay(self):
if self.editing:
! self.display = self.work
else:
! self.display = str(self.value)
--- 421,438 ----
self.value = self.work
return 1
+ def _buildDisplayHelper(self, value, editing):
+ if value == None:
+ return ""
+ else:
+ return "%s" % value
+
def _buildDisplay(self):
if self.editing:
! self.display = self._buildDisplayHelper(self.work, 1)
else:
! self.display = self._buildDisplayHelper(self.value, 0)
!
***************
*** 442,447 ****
--- 462,488 ----
## DateMask.DateMask(displayMask, inputMask, displayMask))
FieldDisplayHandler.__init__(self, entry, eventHandler, None)
+
+ def setValue(self, value):
+ if value in (None,""):
+ value = None
+ else:
+ value = float(value)
+
+ return FieldDisplayHandler.setValue(self, value)
+
+ # TODO: Replace with format mask
+ def _buildDisplayHelper(self, value, editing):
+ print "building display for '%s'" % value
+ if value in (None,""):
+ return ""
+ value = float(value)
+ if int(value) == value:
+ return "%d" % value
+ else:
+ return "%f" % value
+
+
def _buildValue(self):
try:
self.value = float(self.work)
***************
*** 515,529 ****
return self.falseValue
! def _buildDisplay(self):
!
! if self.editing:
! self.display = self.work
! else:
! if self.value == None:
! self.value = ""
! else:
! self.display = str(self.value)
def getDisplay(self):
--- 556,564 ----
return self.falseValue
! # TODO: Replace with format mask
! def _buildDisplayHelper(self, value, editing):
! return value
def getDisplay(self):
Index: gnue/forms/src/GFForm.py
diff -c gnue/forms/src/GFForm.py:1.150 gnue/forms/src/GFForm.py:1.151
*** gnue/forms/src/GFForm.py:1.150 Sun Feb 17 01:25:32 2002
--- gnue/forms/src/GFForm.py Sun Feb 17 13:25:32 2002
***************
*** 485,490 ****
--- 485,491 ----
self.dispatchEvent(GFEvent('uiABOUT',[version,name,formversion,author,description]))
def rollback(self, recover=0):
+ self.endEditing()
for block in self._blockList:
block.processRollback(recover);
self._currentBlock.jumpRecord(self._currentBlock._currentRecord)
Index: gnue/forms/src/GFInstance.py
diff -c gnue/forms/src/GFInstance.py:1.30 gnue/forms/src/GFInstance.py:1.31
*** gnue/forms/src/GFInstance.py:1.30 Sun Feb 17 01:25:32 2002
--- gnue/forms/src/GFInstance.py Sun Feb 17 13:25:32 2002
***************
*** 1,5 ****
#
! # Copyright 2001 Free Software Foundation
#
# This file is part of GNU Enterprise.
#
--- 1,5 ----
#
! # Copyright 2001-2002 Free Software Foundation
#
# This file is part of GNU Enterprise.
#
***************
*** 156,169 ****
# Refresh entry display if appropriate
if event.refreshDisplay:
! print "Refreshing!!"
! handler = self._form._currentEntry._displayHandler
! self.dispatchEvent(GFEvent('updateEntryEditor',
! object = self._form._currentEntry,
! display=handler.display,
! cursor=handler.cursor,
! selection=handler.getSelectionArea(),
! ))
# If the entry needs an error message displayed,
# then the proxied event should set this to the
--- 156,162 ----
# Refresh entry display if appropriate
if event.refreshDisplay:
! handler.generateRefreshEvent()
# If the entry needs an error message displayed,
# then the proxied event should set this to the
***************
*** 529,534 ****
--- 522,529 ----
# an event source
#
def changeFocus(self, event):
+ if not self._form.endEditing():
+ return
if event.data.getObjectType()=='GFEntry' and (event.data.hidden or
(event.data.readonly and
self._form._currentBlock.mode!='query')):
return
***************
*** 545,550 ****
--- 540,547 ----
def requestQuery(self, event):
+ if not self._form.endEditing():
+ return
if hasattr(self._form._currentBlock,"master"):
messageBox = GFMsgBox(self, "Query from detail blocks currently not
supported")
messageBox.show()
***************
*** 558,563 ****
--- 555,562 ----
self.updateStatus()
def executeCommit(self, event):
+ if not self._form.endEditing():
+ return
message = self._form.commit()
if message:
messageBox = GFMsgBox(self,message)
***************
*** 568,573 ****
--- 567,574 ----
self.updateRecordCounter()
def executeQuery(self, event):
+ if not self._form.endEditing():
+ return
message = self._form.executeQuery()
if message:
messageBox = GFMsgBox(self,message)
Index: gnue/forms/src/GFKeyMapper.py
diff -c gnue/forms/src/GFKeyMapper.py:1.5 gnue/forms/src/GFKeyMapper.py:1.6
*** gnue/forms/src/GFKeyMapper.py:1.5 Sun Feb 17 01:25:32 2002
--- gnue/forms/src/GFKeyMapper.py Sun Feb 17 13:25:32 2002
***************
*** 22,29 ****
# GFKeyMapper.py
#
# DESCRIPTION:
! # Client startup file that parses args, builds form from file
! # and passes control to a UI.
#
# NOTES:
#
--- 22,29 ----
# GFKeyMapper.py
#
# DESCRIPTION:
! # Handles physical to logical key mapping for GNUe Forms.
! # Also performs logical key to Events mapping.
#
# NOTES:
#
Index: gnue/forms/src/GFObjects/GFEntry.py
diff -c gnue/forms/src/GFObjects/GFEntry.py:1.45
gnue/forms/src/GFObjects/GFEntry.py:1.46
*** gnue/forms/src/GFObjects/GFEntry.py:1.45 Sun Feb 17 01:38:59 2002
--- gnue/forms/src/GFObjects/GFEntry.py Sun Feb 17 13:25:32 2002
***************
*** 1,6 ****
#
- # Copyright 2000-2002 Free Software Foundation
- #
# This file is part of GNU Enterprise.
#
# GNU Enterprise is free software; you can redistribute it
--- 1,4 ----
***************
*** 18,23 ****
--- 16,22 ----
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
+ # Copyright 2000-2002 Free Software Foundation
#
# FILE:
# GFObjects.py
***************
*** 129,147 ****
self._inputmask = ""
self._displaymask = ""
! if hasattr(self,'formatmask') and len(self.formatmask):
! self._formatmask = self.formatmask
! self._inputmask = self.formatmask
! self._displaymask = self.formatmask
!
! if hasattr(self,'inputmask') and len(self.inputmask):
! self._inputmask = self.inputmask
!
! if hasattr(self,'displaymask') and len(self.displaymask):
! self._displaymask = self.displaymask
!
! self._maskHandler = formatMaskHandlers[self.typecast](
! self._formatmask, self._inputmask, self._displaymask)
self._cursorPosition = len(self._oldval)
self._block = self.findParentOfType('GFBlock')
--- 128,146 ----
self._inputmask = ""
self._displaymask = ""
! ## if hasattr(self,'formatmask') and len(self.formatmask):
! ## self._formatmask = self.formatmask
! ## self._inputmask = self.formatmask
! ## self._displaymask = self.formatmask
! ##
! ## if hasattr(self,'inputmask') and len(self.inputmask):
! ## self._inputmask = self.inputmask
! ##
! ## if hasattr(self,'displaymask') and len(self.displaymask):
! ## self._displaymask = self.displaymask
! ##
! ## self._maskHandler = formatMaskHandlers[self.typecast](
! ## self._formatmask, self._inputmask, self._displaymask)
self._cursorPosition = len(self._oldval)
self._block = self.findParentOfType('GFBlock')
***************
*** 222,260 ****
if value == '' and self.style == 'checkbox': value = 0
self._oldval = value
! return "%s" % value
!
!
! #
! # Returns a string formatted for display
! #
! def getDisplay(self, hasFocus=0, value=None):
!
! if value == None:
! v = self.getValue()
! else:
! v = value
! if v == None:
! v = ""
!
!
! # TODO: How would format masks work w/styles other than default
- if not self._maskHandler or self.style != 'default':
- return str(v)
- else:
- if hasFocus:
- GDebug.printMesg(15,"calling getFormattedInput with '%s'" % v)
- return self._maskHandler.getFormattedInput(v, "_")
- else:
- return self._maskHandler.getFormattedOutput(v, secondary=1)
def setValue(self, value):
if value =='' and self.style=='checkbox':
value = 0
! value = "%s" % value
self._oldval = value
if self._block.mode == 'query':
self._block._queryValues[self] = value
--- 221,263 ----
if value == '' and self.style == 'checkbox': value = 0
self._oldval = value
! return value
+ ## #
+ ## # Returns a string formatted for display
+ ## #
+ ## def getDisplay(self, hasFocus=0, value=None):
+ ##
+ ## if value == None:
+ ## v = self.getValue()
+ ## else:
+ ## v = value
+ ## if v == None:
+ ## v = ""
+ ##
+ ##
+ ## # TODO: How would format masks work w/styles other than default
+ ##
+ ## if not self._maskHandler or self.style != 'default':
+ ## return str(v)
+ ## else:
+ ## if hasFocus:
+ ## GDebug.printMesg(15,"calling getFormattedInput with '%s'" % v)
+ ## return self._maskHandler.getFormattedInput(v, "_")
+ ## else:
+ ## return self._maskHandler.getFormattedOutput(v, secondary=1)
+ ##
def setValue(self, value):
if value =='' and self.style=='checkbox':
value = 0
!
! # Number fields
! if self.typecast == "number" and value != None:
! value = float(value)
!
self._oldval = value
if self._block.mode == 'query':
self._block._queryValues[self] = value
***************
*** 266,277 ****
# switchRecord
#
def switchRecord(self):
! value = self._block._resultSet.current.getField(self.field)
! if value == None:
! value = ''
! else:
! value = "%s" % value
! self._cursorPosition = len(value)
#
# verifyValue
--- 269,281 ----
# switchRecord
#
def switchRecord(self):
! ## value = self._block._resultSet.current.getField(self.field)
! ## if value == None:
! ## value = ''
! ## else:
! ## value = "%s" % value
! ## self._cursorPosition = len(value)
! pass
#
# verifyValue
***************
*** 279,285 ****
def verifyValue(self):
if not self._allowedValues:
self.allowedValues()
!
# If empty skip test
# TODO: number type is blowing this function up but I'm not
# TODO: sure if jcater wanted to keep data in it's backend
--- 283,289 ----
def verifyValue(self):
if not self._allowedValues:
self.allowedValues()
!
# If empty skip test
# TODO: number type is blowing this function up but I'm not
# TODO: sure if jcater wanted to keep data in it's backend
***************
*** 298,304 ****
datasourceName,fieldName = string.split(self.foreign_key,'.')
rs =
self._block._form._datasourceDictionary[datasourceName]._currentResultSet
!
more = rs.firstRecord()
while more:
if
string.lower(rs.current.getField(self.foreign_key_description)[:len(value)]) ==
string.lower(value):
--- 302,308 ----
datasourceName,fieldName = string.split(self.foreign_key,'.')
rs =
self._block._form._datasourceDictionary[datasourceName]._currentResultSet
!
more = rs.firstRecord()
while more:
if
string.lower(rs.current.getField(self.foreign_key_description)[:len(value)]) ==
string.lower(value):
***************
*** 307,313 ****
break
more = rs.nextRecord()
return newvalue
!
#
# allowedValues
#
--- 311,317 ----
break
more = rs.nextRecord()
return newvalue
!
#
# allowedValues
#
***************
*** 331,336 ****
return self._allowedValues
! formatMaskHandlers = { 'text': FormatMasks.TextMask,
! 'number': FormatMasks.NumberMask,
! 'date': FormatMasks.DateMask }
--- 335,340 ----
return self._allowedValues
! ##formatMaskHandlers = { 'text': FormatMasks.TextMask,
! ## 'number': FormatMasks.NumberMask,
! ## 'date': FormatMasks.DateMask }
Index: gnue/forms/src/UIbase.py
diff -c gnue/forms/src/UIbase.py:1.56 gnue/forms/src/UIbase.py:1.57
*** gnue/forms/src/UIbase.py:1.56 Sun Feb 17 01:25:32 2002
--- gnue/forms/src/UIbase.py Sun Feb 17 13:25:32 2002
***************
*** 170,175 ****
--- 170,176 ----
if self._currentObject[0].getObjectType() in self.containerWidgets:
self.currentWidget.pop(0)
+
#############################################################################
#
# Generic Incoming Event Handlers
***************
*** 275,281 ****
# updateEntryEditor
#
def updateEntryEditor(self, event):
! print "Refreshing!!2"
index = event.object._visibleIndex
--- 276,282 ----
# updateEntryEditor
#
def updateEntryEditor(self, event):
! print "updateEntryEditor()"
index = event.object._visibleIndex
***************
*** 293,304 ****
--- 294,308 ----
# updateEntry
#
def updateEntry(self,event):
+ print "updateEntry()"
if event.data.hidden:
return
entry = event.data
handler = entry._displayHandler
+ prehandling = handler.editing
+ handler.editing = 0
index = entry._visibleIndex
***************
*** 314,324 ****
# Fill the prior spots
if block.mode != 'query':
for count in range(index):
! handler.setValue(block._resultSet.getRecord(currentRecord- \
(index-count)).getField(entry.field))
- value = handler.getDisplay()
-
## if value == None: value = ""
## value = str(value) # Done to remove unicode types which wxpython
doesn't like
## ??????
--- 318,326 ----
# Fill the prior spots
if block.mode != 'query':
for count in range(index):
! value =
handler.getDisplayFiller(block._resultSet.getRecord(currentRecord- \
(index-count)).getField(entry.field))
## if value == None: value = ""
## value = str(value) # Done to remove unicode types which wxpython
doesn't like
## ??????
***************
*** 341,349 ****
## value = value in (1,'1','T','t','TRUE','true')
## self._formToUIWidget[entry].setValue(value, index)
## else:
! handler.setValue(entry.getValue())
! value = handler.getDisplay()
! self._formToUIWidget[entry].setValue(value, index)
## self._formToUIWidget[entry].setCursorPosition(0, index)
# Fill trailing spots
--- 343,353 ----
## value = value in (1,'1','T','t','TRUE','true')
## self._formToUIWidget[entry].setValue(value, index)
## else:
!
! if not prehandling:
! value = handler.getDisplayFiller(entry.getValue())
! self._formToUIWidget[entry].setValue(value, index)
!
## self._formToUIWidget[entry].setCursorPosition(0, index)
# Fill trailing spots
***************
*** 357,369 ****
rec = block._resultSet.getRecord(currentRecord+(count-index))
if rec == None:
! if style == 'checkbox':
! value = int(0)
! else:
! value = ""
else:
! handler.setValue(rec.getField(entry.field))
! value = handler.getDisplay()
##
## if value == None: value = ""
--- 361,371 ----
rec = block._resultSet.getRecord(currentRecord+(count-index))
if rec == None:
! value = handler.getDisplayFiller(None)
else:
! value = handler.getDisplayFiller(rec.getField(entry.field))
!
! self._formToUIWidget[entry].setValue(value, count)
##
## if value == None: value = ""
***************
*** 372,379 ****
## value = event.data.allowedValues()[value]
## elif style == 'checkbox':
## value = value in (1,'1','T','t','TRUE','true') # sets to 1 or 0
- self._formToUIWidget[entry].setValue(value, count)
count += 1
# Called whenever forms goes into a "wait" state in which user cannot
--- 374,382 ----
## value = event.data.allowedValues()[value]
## elif style == 'checkbox':
## value = value in (1,'1','T','t','TRUE','true') # sets to 1 or 0
count += 1
+
+ handler.editing = prehandling
# Called whenever forms goes into a "wait" state in which user cannot
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue common/src/GDataObjects.py common/src/dbdr...,
Jason Cater <=