[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/forms src/GFDisplayHandler.py src/GFForm.p...
From: |
Jason Cater |
Subject: |
gnue/forms src/GFDisplayHandler.py src/GFForm.p... |
Date: |
Thu, 21 Nov 2002 21:57:25 -0500 |
CVSROOT: /home/cvs
Module name: gnue
Changes by: Jason Cater <address@hidden> 02/11/21 21:57:24
Modified files:
forms/src : GFDisplayHandler.py GFForm.py GFInstance.py
GFParser.py
forms/src/GFObjects: GFBlock.py GFButton.py GFEntry.py
GFField.py GFLayout.py GFLogic.py GFPage.py
forms/src/uidrivers/_base: UIdriver.py
forms/utils : gfd04to05.py
Log message:
more work on separation of logic and layout
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFDisplayHandler.py.diff?cvsroot=OldCVS&tr1=1.38&tr2=1.39&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFForm.py.diff?cvsroot=OldCVS&tr1=1.203&tr2=1.204&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFInstance.py.diff?cvsroot=OldCVS&tr1=1.66&tr2=1.67&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFParser.py.diff?cvsroot=OldCVS&tr1=1.87&tr2=1.88&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFBlock.py.diff?cvsroot=OldCVS&tr1=1.63&tr2=1.64&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFButton.py.diff?cvsroot=OldCVS&tr1=1.11&tr2=1.12&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFEntry.py.diff?cvsroot=OldCVS&tr1=1.79&tr2=1.80&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFField.py.diff?cvsroot=OldCVS&tr1=1.79&tr2=1.80&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFLayout.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFLogic.py.diff?cvsroot=OldCVS&tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFObjects/GFPage.py.diff?cvsroot=OldCVS&tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/uidrivers/_base/UIdriver.py.diff?cvsroot=OldCVS&tr1=1.78&tr2=1.79&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/utils/gfd04to05.py.diff?cvsroot=OldCVS&tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: gnue/forms/src/GFDisplayHandler.py
diff -c gnue/forms/src/GFDisplayHandler.py:1.38
gnue/forms/src/GFDisplayHandler.py:1.39
*** gnue/forms/src/GFDisplayHandler.py:1.38 Sun Nov 17 18:39:35 2002
--- gnue/forms/src/GFDisplayHandler.py Thu Nov 21 21:57:23 2002
***************
*** 86,95 ****
# TODO: invalid python so I'm just putting the old line back with what I
think
# TODO: would be the corrected patch line commented out.
# if (self.handleCR and type(self.display)=='str'):
!
if self.handleCR:
self.dispatchEvent(events.Event('updateEntryEditor',
! object = self.entry,
display=self.display, # string.replace(self.display,'\n','\r\n'),
cursor=self.cursor +
len(string.split(self.display[:self.cursor+1],'\n'))-1,
selection=self.getSelectionArea(),
--- 86,95 ----
# TODO: invalid python so I'm just putting the old line back with what I
think
# TODO: would be the corrected patch line commented out.
# if (self.handleCR and type(self.display)=='str'):
!
if self.handleCR:
self.dispatchEvent(events.Event('updateEntryEditor',
! object = self.field,
display=self.display, # string.replace(self.display,'\n','\r\n'),
cursor=self.cursor +
len(string.split(self.display[:self.cursor+1],'\n'))-1,
selection=self.getSelectionArea(),
***************
*** 117,123 ****
self.modified = 0
# TODO: Replace with formatter
! self.setValue(self.entry.getValue())
self.work = self._buildDisplayHelper(self.value, 1)
self._buildDisplay()
--- 117,123 ----
self.modified = 0
# TODO: Replace with formatter
! self.setValue(self.field.getValue())
self.work = self._buildDisplayHelper(self.value, 1)
self._buildDisplay()
***************
*** 133,139 ****
return
if not self._loadedAllowedValues:
! self.entry.allowedValues()
self._loadedAllowedValues = 1
--- 133,139 ----
return
if not self._loadedAllowedValues:
! self.field.allowedValues()
self._loadedAllowedValues = 1
***************
*** 150,156 ****
if self.modified:
if self._buildValue():
! if self.entry._allowedValues and not
self.entry._allowedValues.has_key(str(self.value)):
self.work = ""
event.__error__ = 1
event.__errortext__ = _("Invalid value '%s' for field") % self.value
--- 150,156 ----
if self.modified:
if self._buildValue():
! if self.field._allowedValues and not
self.field._allowedValues.has_key(str(self.value)):
self.work = ""
event.__error__ = 1
event.__errortext__ = _("Invalid value '%s' for field") % self.value
***************
*** 159,165 ****
self.editing = 0
event.__results__ = self.value
event.modified = self.modified
! self.entry.setValue(self.value)
self._buildDisplay()
--- 159,165 ----
self.editing = 0
event.__results__ = self.value
event.modified = self.modified
! self.field.setValue(self.value)
self._buildDisplay()
***************
*** 172,185 ****
value = event.text
! if (self.entry.readonly and not self.entry._block.mode=='query'):
event.__error__ = 1
event.__errortext__ = _("Cannot modify field. Form is read only")
return
! elif self.entry.editOnNull and \
self.value != None and \
self.value != "" and \
! not self.entry._block._resultSet.current.isPending():
event.__error__ = 1
event.__errortext__ = _("Cannot modify field after initial creation.")
return
--- 172,185 ----
value = event.text
! if (self.field.readonly and not self.field._block.mode=='query'):
event.__error__ = 1
event.__errortext__ = _("Cannot modify field. Form is read only")
return
! elif self.field.editOnNull and \
self.value != None and \
self.value != "" and \
! not self.field._block._resultSet.current.isPending():
event.__error__ = 1
event.__errortext__ = _("Cannot modify field after initial creation.")
return
***************
*** 187,203 ****
# Do some appropriate checks on the text
# TODO: This will be moved to the mask system!!
! if self.entry._lowercase:
value = string.lower(event.text)
! if self.entry._uppercase:
value = string.upper(event.text)
! if hasattr(self.entry,'max_length') and \
! len(self.work) + len(value) > self.entry.max_length:
return
! if ( self.entry._numeric and \
! self.entry._block.mode == 'normal' ):
for char in value:
if not (char in string.digits or char in '.'):
return
--- 187,203 ----
# Do some appropriate checks on the text
# TODO: This will be moved to the mask system!!
! if self.field._lowercase:
value = string.lower(event.text)
! if self.field._uppercase:
value = string.upper(event.text)
! if hasattr(self.field,'max_length') and \
! len(self.work) + len(value) > self.field.max_length:
return
! if ( self.field._numeric and \
! self.field._block.mode == 'normal' ):
for char in value:
if not (char in string.digits or char in '.'):
return
***************
*** 225,238 ****
else:
# Otherwise just graft the new text in place
!
self.work = self.work[:self.cursor] \
+ value \
+ self.work[self.cursor:]
self.cursor += len(event.text)
!
event.__dropped__ = 1
self.modified = 1
self._buildDisplay()
--- 225,238 ----
else:
# Otherwise just graft the new text in place
!
self.work = self.work[:self.cursor] \
+ value \
+ self.work[self.cursor:]
self.cursor += len(event.text)
!
event.__dropped__ = 1
self.modified = 1
self._buildDisplay()
***************
*** 408,413 ****
--- 408,414 ----
events.EventAware.__init__(self, eventHandler)
self.entry = entry # Our entry
+ self.field = entry._field
self.editing = 0 # In editing mode??
self.modified = 0 # Have we been modified??
self.value = None # The latest db-compat value
***************
*** 646,666 ****
def beginEdit(self, event):
! if not self._loadedAllowedValues and not
hasattr(self.entry,'_allowedValues'):
! self.entry.allowedValues()
self._loadedAllowedValues = 1
self.editing = 1
self.modified = 0
# TODO: Replace with formatter
! self.setValue(self.entry.getValue())
if self.value == None:
self.work = ""
else:
try:
! self.work = self.entry._allowedValues[str(self.value)]
except KeyError:
self.work = ""
event.__error__ = 1
--- 647,667 ----
def beginEdit(self, event):
! if not self._loadedAllowedValues and not
hasattr(self.field,'_allowedValues'):
! self.field.allowedValues()
self._loadedAllowedValues = 1
self.editing = 1
self.modified = 0
# TODO: Replace with formatter
! self.setValue(self.field.getValue())
if self.value == None:
self.work = ""
else:
try:
! self.work = self.field._allowedValues[str(self.value)]
except KeyError:
self.work = ""
event.__error__ = 1
***************
*** 680,694 ****
if editing:
i = 0
val = string.lower(value)
! for disp in self.entry._allowedValuesDescr:
if disp[:len(val)] == val:
! display =
self.entry._allowedValues[self.entry._allowedValuesReverse[disp]]
self._dropdownIndex = i
return str(display)
return str(value)
else:
! return self.entry._allowedValues[str(value)]
def _buildDisplay(self):
if self.editing:
--- 681,695 ----
if editing:
i = 0
val = string.lower(value)
! for disp in self.field._allowedValuesDescr:
if disp[:len(val)] == val:
! display =
self.field._allowedValues[self.field._allowedValuesReverse[disp]]
self._dropdownIndex = i
return str(display)
return str(value)
else:
! return self.field._allowedValues[str(value)]
def _buildDisplay(self):
if self.editing:
***************
*** 710,716 ****
self.value = '' # None
else:
try:
! self.value = self.entry._allowedValuesReverse[self.display]
except KeyError:
return 0
return 1
--- 711,717 ----
self.value = '' # None
else:
try:
! self.value = self.field._allowedValuesReverse[self.display]
except KeyError:
return 0
return 1
***************
*** 781,787 ****
self.editing = 1
self.modified = 0
! self.setValue(self.entry.getValue())
self.work = self.value
--- 782,788 ----
self.editing = 1
self.modified = 0
! self.setValue(self.field.getValue())
self.work = self.value
Index: gnue/forms/src/GFForm.py
diff -c gnue/forms/src/GFForm.py:1.203 gnue/forms/src/GFForm.py:1.204
*** gnue/forms/src/GFForm.py:1.203 Mon Nov 18 01:40:55 2002
--- gnue/forms/src/GFForm.py Thu Nov 21 21:57:23 2002
***************
*** 69,76 ****
self._currentBlock = None
self._currentEntry = None
- self._blockList = []
- self._pageList = []
self._app = app
--- 69,74 ----
***************
*** 167,172 ****
--- 165,177 ----
# Initialize our events system
events.EventAware.__init__(self, self._app.eventController)
+ # Find the logic and layout controllers
+ for child in self._children:
+ if child._type == 'GFLogic':
+ self._logic = child
+ elif child._type == 'GFLayout':
+ self._layout = child
+
self.initTriggerSystem()
self._triggerns.update(self._triggerNamespaceTree._globalNamespace)
# TODO: Is this right
***************
*** 333,343 ****
#
! def updateUIEntry(self,entry):
! self._app.dispatchEvent(events.Event('updateENTRY',entry));
#
! # Incomming Event handlers
#
def newRecord(self):
--- 338,349 ----
#
! def updateUIEntry(self,field):
! for entry in field._entryList:
! self._app.dispatchEvent(events.Event('updateENTRY',entry));
#
! # Incoming Event handlers
#
def newRecord(self):
***************
*** 349,355 ****
self._currentBlock.deleteRecord()
def isSaved(self):
! for block in self._blockList:
if not block.isSaved():
return 0
return 1
--- 355,361 ----
self._currentBlock.deleteRecord()
def isSaved(self):
! for block in self._logic._blockList:
if not block.isSaved():
return 0
return 1
***************
*** 357,368 ****
def prepQuery(self):
message = None
if self._currentBlock.mode != 'query':
! for block in self._blockList:
if not block.isSaved():
message = _('Data not saved. Save changes or clear the form to
proceed.')
return message
! for block in self._blockList:
block.processRollback()
for entry in block._entryList:
if hasattr(entry,'queryDefault'):
--- 363,374 ----
def prepQuery(self):
message = None
if self._currentBlock.mode != 'query':
! for block in self._logic._blockList:
if not block.isSaved():
message = _('Data not saved. Save changes or clear the form to
proceed.')
return message
! for block in self._logic._blockList:
block.processRollback()
for entry in block._entryList:
if hasattr(entry,'queryDefault'):
***************
*** 399,405 ****
self._app.dispatchEvent(events.Event('endWAIT',None));
return _("Form trigger returned error")
! for block in self._blockList:
GDebug.printMesg(1, "Saving %s"%block.name)
try:
--- 405,411 ----
self._app.dispatchEvent(events.Event('endWAIT',None));
return _("Form trigger returned error")
! for block in self._logic._blockList:
GDebug.printMesg(1, "Saving %s"%block.name)
try:
***************
*** 413,419 ****
return _("Block trigger returned error")
block.processTrigger('Post-Commit')
! for block in self._blockList:
block.switchRecord(0)
else:
--- 419,425 ----
return _("Block trigger returned error")
block.processTrigger('Post-Commit')
! for block in self._logic._blockList:
block.switchRecord(0)
else:
***************
*** 447,453 ****
def rollback(self, recover=0):
self.endEditing()
! for block in self._blockList:
block.processRollback(recover)
self.refreshDisplay(self)
self._currentBlock.jumpRecord(self._currentBlock._currentRecord)
--- 453,459 ----
def rollback(self, recover=0):
self.endEditing()
! for block in self._logic._blockList:
block.processRollback(recover)
self.refreshDisplay(self)
self._currentBlock.jumpRecord(self._currentBlock._currentRecord)
***************
*** 490,496 ****
nextEntry = object
break
! if nextEntry == firstEntry and self._currentBlock.transparentBlock:
# Jump to the next block if block is tagged as transparent
self.nextBlock()
else:
--- 496,502 ----
nextEntry = object
break
! if nextEntry == firstEntry and self._currentBlock.transparent:
# Jump to the next block if block is tagged as transparent
self.nextBlock()
else:
***************
*** 523,529 ****
nextEntry = object
! if self._currentBlock.transparentBlock and nextEntry == lastEntry: # Jump
to the prev block if block is tagged as transparent
prevBlock = self.findPreviousBlock()
# Move to the new last record of the new current block
for object in prevBlock._focusOrder:
--- 529,535 ----
nextEntry = object
! if self._currentBlock.transparent and nextEntry == lastEntry: # Jump to
the prev block if block is tagged as transparent
prevBlock = self.findPreviousBlock()
# Move to the new last record of the new current block
for object in prevBlock._focusOrder:
***************
*** 557,565 ****
def nextBlock(self):
try:
! nextBlock = self._blockList[self._blockList.index(self._currentBlock)+1]
except IndexError:
! nextBlock = self._blockList[0]
self.findAndChangeFocus(nextBlock)
--- 563,571 ----
def nextBlock(self):
try:
! nextBlock =
self._logic._blockList[self._logic._blockList.index(self._currentBlock)+1]
except IndexError:
! nextBlock = self._logic._blockList[0]
self.findAndChangeFocus(nextBlock)
***************
*** 571,579 ****
#
def findPreviousBlock(self):
try:
! return self._blockList[self._blockList.index(self._currentBlock)-1]
except IndexError:
! return self._blockList[-1]
#
--- 577,585 ----
#
def findPreviousBlock(self):
try:
! return
self._logic._blockList[self._logic._blockList.index(self._currentBlock)-1]
except IndexError:
! return self._logic._blockList[-1]
#
Index: gnue/forms/src/GFInstance.py
diff -c gnue/forms/src/GFInstance.py:1.66 gnue/forms/src/GFInstance.py:1.67
*** gnue/forms/src/GFInstance.py:1.66 Sun Nov 17 16:54:48 2002
--- gnue/forms/src/GFInstance.py Thu Nov 21 21:57:23 2002
***************
*** 244,250 ****
def gotoPage(self,event):
if not self._form.endEditing():
return
! self._form.findAndChangeFocus(self._form._pageList[event.data])
self.dispatchEvent(events.Event('gotoENTRY',{'object':self._form._currentEntry}))
self.updateStatus()
--- 244,250 ----
def gotoPage(self,event):
if not self._form.endEditing():
return
! self._form.findAndChangeFocus(self._form._layout._pageList[event.data])
self.dispatchEvent(events.Event('gotoENTRY',{'object':self._form._currentEntry}))
self.updateStatus()
***************
*** 259,265 ****
self.dispatchEvent(events.Event('gotoENTRY',{'object':self._form._currentEntry}))
self.updateRecordCounter()
self.updateRecordStatus()
!
#
# previousRecord
#
--- 259,265 ----
self.dispatchEvent(events.Event('gotoENTRY',{'object':self._form._currentEntry}))
self.updateRecordCounter()
self.updateRecordStatus()
!
#
# previousRecord
#
***************
*** 457,464 ****
self.dispatchEvent(events.Event('uiUPDATESTATUS',[None,None,None,self._form._currentBlock._currentRecord+1,self._form._currentBlock._recordCount,None,None]))
def updatePageCounter(self):
! maxPages = len(self._form._pageList)
! count = self._form._pageList.index(self._form._currentPage)
self.dispatchEvent(events.Event('uiUPDATESTATUS',[None,None,None,None,None,count+1,maxPages]))
def updateTip(self):
--- 457,464 ----
self.dispatchEvent(events.Event('uiUPDATESTATUS',[None,None,None,self._form._currentBlock._currentRecord+1,self._form._currentBlock._recordCount,None,None]))
def updatePageCounter(self):
! maxPages = len(self._form._layout._pageList)
! count = self._form._layout._pageList.index(self._form._currentPage)
self.dispatchEvent(events.Event('uiUPDATESTATUS',[None,None,None,None,None,count+1,maxPages]))
def updateTip(self):
***************
*** 500,507 ****
if not self._form.endEditing():
return
if event.data._type=='GFEntry':
! if event.data.hidden:
! # is it possible ever to get into hidden field?
return
if (event.data.readonly and self._form._currentBlock.mode!='query'):
GDebug.printMesg(2,"You can focus readonly field, but you won't be
able to change it.")
--- 500,507 ----
if not self._form.endEditing():
return
if event.data._type=='GFEntry':
! if not event.data._navigable:
! # is it possible ever to get into non-navigable field?
return
if (event.data.readonly and self._form._currentBlock.mode!='query'):
GDebug.printMesg(2,"You can focus readonly field, but you won't be
able to change it.")
***************
*** 520,526 ****
def requestQuery(self, event):
if not self._form.endEditing():
return
!
# if hasattr(self._form._currentBlock._dataSourceLink,"master"):
# messageBox = GFMsgBox(self, _("Query from detail blocks currently not
supported"))
# messageBox.show()
--- 520,526 ----
def requestQuery(self, event):
if not self._form.endEditing():
return
!
# if hasattr(self._form._currentBlock._dataSourceLink,"master"):
# messageBox = GFMsgBox(self, _("Query from detail blocks currently not
supported"))
# messageBox.show()
***************
*** 571,577 ****
block.mode = 'precommit'
block.processTrigger(trigger)
for child in block._children:
! if child._type == 'GFEntry':
child.processTrigger(trigger)
block.mode = saveMode
--- 571,577 ----
block.mode = 'precommit'
block.processTrigger(trigger)
for child in block._children:
! if child._type == 'GFField':
child.processTrigger(trigger)
block.mode = saveMode
Index: gnue/forms/src/GFObjects/GFBlock.py
diff -c gnue/forms/src/GFObjects/GFBlock.py:1.63
gnue/forms/src/GFObjects/GFBlock.py:1.64
*** gnue/forms/src/GFObjects/GFBlock.py:1.63 Wed Nov 20 22:50:24 2002
--- gnue/forms/src/GFObjects/GFBlock.py Thu Nov 21 21:57:24 2002
***************
*** 57,64 ****
#self._datasource = None
self._resultSet = None
self._dataSourceLink = None
! self._entryList = []
!
self._currentRecord = 0
self._recordCount = 0
self._queryDefaults = {}
--- 57,63 ----
#self._datasource = None
self._resultSet = None
self._dataSourceLink = None
!
self._currentRecord = 0
self._recordCount = 0
self._queryDefaults = {}
***************
*** 67,72 ****
--- 66,78 ----
self._autocreate = int(gConfig('autocreate'))
self._gap = 0
self._rows = 1
+
+ # Populated by GFEntry's initialize
+ self._entryList = []
+
+ # Populated by GFField's initialize
+ self._fieldMap = {}
+ self._fieldList = []
#
# Trigger exposure
***************
*** 76,82 ****
'ON-NEWRECORD': 'On-NewRecord',
'PRE-COMMIT': 'Pre-Commit',
'POST-COMMIT': 'Post-Commit',
! 'POST-QUERY': 'Post-Query',
'PRE-MODIFY': 'Pre-Modify',
'PRE-INSERT': 'Pre-Insert',
'PRE-DELETE': 'Pre-Delete',
--- 82,88 ----
'ON-NEWRECORD': 'On-NewRecord',
'PRE-COMMIT': 'Pre-Commit',
'POST-COMMIT': 'Post-Commit',
! 'POST-QUERY': 'Post-Query',
'PRE-MODIFY': 'Pre-Modify',
'PRE-INSERT': 'Pre-Insert',
'PRE-DELETE': 'Pre-Delete',
***************
*** 91,109 ****
self._triggerFunctions={'clear':{'function':self.processClear,
'description':''},
'commit':{'function':self.commit,
! 'description':''},
'deleteRecord':{'function':self.deleteRecord,
! 'description':''},
'executeQuery':{'function':self.processQuery,
! 'description':''},
'gotoRecord':{'function':self.jumpRecord,
! 'description':''},
'firstRecord':{'function':self.firstRecord,
! 'description':'Navigates the block
to the first record it contains.'},
'isEmpty':{'function':self.isEmpty,
! 'description':'Returns 1 if block is
empty.'},
'isSaved':{'function':self.isSaved,
! 'description':'Returns 1 if block
contains no modified records.'},
'lastRecord':{'function':self.lastRecord,
'description':'Navigates the block to
the last record it contains.'},
'newRecord':{'function':self.newRecord,
--- 97,115 ----
self._triggerFunctions={'clear':{'function':self.processClear,
'description':''},
'commit':{'function':self.commit,
! 'description':''},
'deleteRecord':{'function':self.deleteRecord,
! 'description':''},
'executeQuery':{'function':self.processQuery,
! 'description':''},
'gotoRecord':{'function':self.jumpRecord,
! 'description':''},
'firstRecord':{'function':self.firstRecord,
! 'description':'Navigates the block
to the first record it contains.'},
'isEmpty':{'function':self.isEmpty,
! 'description':'Returns 1 if block is
empty.'},
'isSaved':{'function':self.isSaved,
! 'description':'Returns 1 if block
contains no modified records.'},
'lastRecord':{'function':self.lastRecord,
'description':'Navigates the block to
the last record it contains.'},
'newRecord':{'function':self.newRecord,
***************
*** 152,181 ****
#
def initialize(self):
self._form = form = self.findParentOfType('GFForm')
! ## self._page = self.findParentOfType('GFPage')
! form._blockList.append(self)
# Initialize our events system
! events.EventAware.__init__(self, self._form._app.eventController)
# Get all focusable items, ordered correctly
self._focusOrder = self.getFocusOrder()
- # Find all GFEntry's
- for object in self._focusOrder:
- if object._type == 'GFEntry':
- self._entryList.append(object)
-
# Create a stub/non-bound datasource if we aren't bound to one
if not hasattr(self,'datasource') or not self.datasource:
ds = GFDataSource(self)
self.datasource = ds.name = "dts_%s" % self
! self._form._datasourceDictionary[ds.name] = ds
ds._buildObject()
ds.phaseInit()
! self._dataSourceLink = self._form._datasourceDictionary[self.datasource]
# We will monitor our own resultSet changes
self._dataSourceLink.registerResultSetListener(self._loadResultSet)
--- 158,183 ----
#
def initialize(self):
self._form = form = self.findParentOfType('GFForm')
! self._logic = logic = self.findParentOfType('GFLogic')
! logic._blockList.append(self)
! logic._blockMap[self.name] = self
# Initialize our events system
! events.EventAware.__init__(self, form._app.eventController)
# Get all focusable items, ordered correctly
self._focusOrder = self.getFocusOrder()
# Create a stub/non-bound datasource if we aren't bound to one
if not hasattr(self,'datasource') or not self.datasource:
ds = GFDataSource(self)
self.datasource = ds.name = "dts_%s" % self
! form._datasourceDictionary[ds.name] = ds
ds._buildObject()
ds.phaseInit()
! self._dataSourceLink = form._datasourceDictionary[self.datasource]
# We will monitor our own resultSet changes
self._dataSourceLink.registerResultSetListener(self._loadResultSet)
***************
*** 240,248 ****
#
def switchRecord(self, adjustment):
self._currentRecord = self._resultSet.getRecordNumber()
! for entry in self._entryList:
! entry.recalculateVisible( adjustment, self._currentRecord,
self._recordCount)
! self._form.updateUIEntry(entry)
if adjustment <> 0:
self.processTrigger('ON-SWITCH')
--- 242,252 ----
#
def switchRecord(self, adjustment):
self._currentRecord = self._resultSet.getRecordNumber()
! for field in self._fieldList:
! for entry in field._entryList:
! # This for loop is probably better somewhere else
! entry.recalculateVisible( adjustment, self._currentRecord,
self._recordCount)
! self._form.updateUIEntry(field)
if adjustment <> 0:
self.processTrigger('ON-SWITCH')
***************
*** 357,384 ****
# If Enter-Query is hit thrice, cancel the query and go into normal mode.
if self.mode != 'query':
! for block in self._form._blockList:
block.mode = 'query'
block._query2 = int(gConfig("RememberLastQuery"))
block._queryValues = {}
block._queryValues.update(self._queryDefaults)
block.switchRecord(0)
elif self._query2:
! for block in self._form._blockList:
block._query2 = 0
block._queryValues = {}
block._queryValues.update(block._lastQueryValues)
block.switchRecord(0)
else:
! for block in self._form._blockList:
block.mode = 'normal'
block.switchRecord(0)
!
def processQuery(self):
maxList = [self._dataSourceLink._dataObject]
!
! for block in self._form._blockList:
if block._queryValues.keys():
list = [block._dataSourceLink._dataObject]
while list[-1]._masterObject:
--- 361,388 ----
# If Enter-Query is hit thrice, cancel the query and go into normal mode.
if self.mode != 'query':
! for block in self._logic._blockList:
block.mode = 'query'
block._query2 = int(gConfig("RememberLastQuery"))
block._queryValues = {}
block._queryValues.update(self._queryDefaults)
block.switchRecord(0)
elif self._query2:
! for block in self._logic._blockList:
block._query2 = 0
block._queryValues = {}
block._queryValues.update(block._lastQueryValues)
block.switchRecord(0)
else:
! for block in self._logic._blockList:
block.mode = 'normal'
block.switchRecord(0)
!
def processQuery(self):
maxList = [self._dataSourceLink._dataObject]
!
! for block in self._logic._blockList:
if block._queryValues.keys():
list = [block._dataSourceLink._dataObject]
while list[-1]._masterObject:
***************
*** 387,393 ****
SQL = ""
for dataobject in maxList[:-1]:
! for block in self._form._blockList:
if dataobject == block._dataSourceLink._dataObject:
break
conditions = _generateConditional(block)
--- 391,397 ----
SQL = ""
for dataobject in maxList[:-1]:
! for block in self._logic._blockList:
if dataobject == block._dataSourceLink._dataObject:
break
conditions = _generateConditional(block)
***************
*** 407,419 ****
## newValue += letter+"%"
## entry.setValue(newValue)
! for block in self._form._blockList:
if maxList[-1] == block._dataSourceLink._dataObject:
break
rootBlock = block
# Store block states
! for block in self._form._blockList:
block.mode = 'normal'
block._lastQueryValues = {}
block._lastQueryValues.update(block._queryValues)
--- 411,423 ----
## newValue += letter+"%"
## entry.setValue(newValue)
! for block in self._logic._blockList:
if maxList[-1] == block._dataSourceLink._dataObject:
break
rootBlock = block
# Store block states
! for block in self._logic._blockList:
block.mode = 'normal'
block._lastQueryValues = {}
block._lastQueryValues.update(block._queryValues)
***************
*** 423,429 ****
rootBlock._recordCount = rootBlock._resultSet.getRecordCount()
! for block in self._form._blockList:
block.processTrigger('POST-QUERY')
--- 427,433 ----
rootBlock._recordCount = rootBlock._resultSet.getRecordCount()
! for block in self._logic._blockList:
block.processTrigger('POST-QUERY')
Index: gnue/forms/src/GFObjects/GFButton.py
diff -c gnue/forms/src/GFObjects/GFButton.py:1.11
gnue/forms/src/GFObjects/GFButton.py:1.12
*** gnue/forms/src/GFObjects/GFButton.py:1.11 Mon Nov 18 01:40:55 2002
--- gnue/forms/src/GFObjects/GFButton.py Thu Nov 21 21:57:24 2002
***************
*** 44,50 ****
def initialize(self):
- ## self._block = self.findParentOfType('GFBlock')
self._page = self.findParentOfType('GFPage')
--- 44,49 ----
Index: gnue/forms/src/GFObjects/GFEntry.py
diff -c gnue/forms/src/GFObjects/GFEntry.py:1.79
gnue/forms/src/GFObjects/GFEntry.py:1.80
*** gnue/forms/src/GFObjects/GFEntry.py:1.79 Mon Nov 18 01:40:55 2002
--- gnue/forms/src/GFObjects/GFEntry.py Thu Nov 21 21:57:24 2002
***************
*** 40,69 ****
#
# It send events to its parent GFBlock
#
! class GFEntry(GFValue, GFTabStop):
def __init__(self, parent=None, value=None):
! GFValue.__init__(self, parent, value, 'GFEntry')
# Default attributes (these may be replaced by parser)
self.height = float(gConfig('widgetHeight'))
self.width = float(gConfig('widgetWidth'))
! self.typecast="text"
! self.case="mixed"
! self.style="default"
!
! # Runtime variables
! self._uppercase = 0
! self._lowercase = 0
! self._numeric = 0
! self._queryable = 1
self._inits = [self.initialize]
- self._allowedValues = None
- self._allowedValuesDescr = [""]
self._rows = 1
self._gap = 0
#
# Trigger exposure
#
--- 40,60 ----
#
# It send events to its parent GFBlock
#
! class GFEntry(GFTabStop):
def __init__(self, parent=None, value=None):
! GFTabStop.__init__(self, parent, 'GFEntry')
# Default attributes (these may be replaced by parser)
self.height = float(gConfig('widgetHeight'))
self.width = float(gConfig('widgetWidth'))
! self.style = "default"
self._inits = [self.initialize]
self._rows = 1
self._gap = 0
+ # TODO: Conversion: Dunno about any of these triggers
#
# Trigger exposure
#
***************
*** 71,339 ****
'POST-FOCUSOUT': 'Post-FocusOut',
'PRE-FOCUSIN': 'Pre-FocusIn',
'POST-FOCUSIN': 'Post-FocusIn',
- 'ON-SWITCH': 'On-Switch',
- 'PRE-COMMIT': 'Pre-Commit',
- 'POST-COMMIT': 'Post-Commit',
- 'POST-QUERY': 'Post-Query',
- 'PRE-MODIFY': 'Pre-Modify',
- 'PRE-INSERT': 'Pre-Insert',
- 'PRE-DELETE': 'Pre-Delete',
- 'PRE-UPDATE': 'Pre-Update',
- 'PRE-CHANGE': 'Pre-Change',
- 'POST-CHANGE': 'Post-Change',
}
!
! self._triggerFunctions={'allowedValues':{'function':self.allowedValues,},
!
'autofillBySequence':{'function':self.triggerAutofillBySequence},
! 'isEmpty':{'function':self.isEmpty},
!
'resetForeignKey':{'function':self.resetForeignKey},
! 'set':{'function':self.triggerSetValue},
'get':{'function':self.getValue}
}
- self._triggerProperties={'readonly':{'set':self.setReadonly,
- 'get':self.getReadonly
- },
- 'parent': {'get':self.getParent}
- }
self._triggerSet = self.triggerSetValue
self._triggerGet = self.getValue
! def triggerAutofillBySequence(self,sequenceName):
! if (not self.getValue()) or self.getValue()=="":
! sequenceNumber =
self._block._dataSourceLink._dataObject.triggerExtensions.getSequence(sequenceName)
! self.setValue(sequenceNumber)
! def isEmpty(self):
! return self.getValue() in ("",None)
! def getReadonly(self):
! return self.readonly
! def setReadonly(self,value):
! self.readonly = value
! def _buildObject(self):
! # Convert deprecated attributes
! # Numeric attributes (now typecast="..")
! # DEPRECATED with 0.1.x
! if hasattr(self,'numeric') and self.numeric:
! del self.numeric
! self.typecast = 'number'
!
! # visibleCount attributes... (now rows="..")
! # DEPRECATED with 0.1.x
! if not hasattr(self, 'rows') and hasattr(self,'visibleCount'):
! self.rows = self.visibleCount
! del self.visibleCount
!
! # Case attributes... (now case="..")
! # DEPRECATED with 0.1.x
! if hasattr(self,'uppercase') and self.uppercase:
! del self.uppercase
! self.case = 'upper'
! elif hasattr(self,'lowercase') and self.lowercase:
! del self.lowercase
! self.case = 'lower'
!
! # Foreign keys
! # DEPRECATED with 0.4.x
! if hasattr(self,'foreign_key') and self.foreign_key:
! (self.fk_source, self.fk_key) = string.split(self.foreign_key,'.')
! del self.foreign_key
! if hasattr(self,'foreign_key_description') and
self.foreign_key_description:
! self.fk_description = self.foreign_key_description
! del self.foreign_key_description
!
!
! # Force 'label' styles into "readonly" mode
! if self.style == 'label':
! self.readonly = 1
! self._queryable = 0
- return GFValue._buildObject(self)
! def initialize(self):
! # Find parents/relatives
! self._block = self.findParentOfType('GFBlock')
! self._page = self.findParentOfType('GFPage')
!
! if self.typecast == 'number':
! self._numeric = 1
! self._allowFormulas = gConfig("AllowNumericFormulas")
! if self.case == 'upper':
! self._uppercase = 1
! elif self.case == 'lower':
! self._lowercase = 1
self._formatmask = ""
self._inputmask = hasattr(self,'inputmask') and self.inputmask or ""
self._displaymask = hasattr(self,'displaymask') and self.displaymask or ""
!
! 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, default)
! self._bound = 0
! else:
! self._block._dataSourceLink.referenceField(self.field, default)
! self._bound = 1
!
! # Initialize the foreign key lookup (if necessary)
! if hasattr(self,'fk_source'):
! try:
! self.fk_key
! except NameError:
! raise "fk_source specified, but no fk_key"
!
! try:
! self._fk_descr = string.split(self.fk_description,',')
! except NameError:
! self.fk_description = self.fk_key
! self._fk_descr = string.split(self.fk_key,',')
!
! self._fk_datasource = \
! self._block._form._datasourceDictionary[string.lower(self.fk_source)]
!
! # Reference the foreign keys to their datasources
! # (so they are selected)
! for field in [self.fk_key] + self._fk_descr:
! self._fk_datasource.referenceField(field, None)
!
! if hasattr(self, 'queryDefault') and \
! self.queryDefault != None and \
! self._bound and \
! len(self.queryDefault):
! self._block._queryDefaults[self] = self.queryDefault
!
!
# Create an appropriate display handler
if self.style == 'checkbox':
self._displayHandler = GFDisplayHandler.CheckboxDisplayHandler(self,
! self._block._form._app.eventController)
elif self.style == 'dropdown':
self._displayHandler = GFDisplayHandler.DropdownDisplayHandler(self,
! self._block._form._app.eventController)
! elif self.typecast == 'text':
self._displayHandler = GFDisplayHandler.TextDisplayHandler(self,
! self._block._form._app.eventController,
self._displaymask, self._inputmask)
! elif self.typecast == 'number':
self._displayHandler = GFDisplayHandler.NumberDisplayHandler(self,
! self._block._form._app.eventController,
self._displaymask, self._inputmask)
! elif self.typecast == 'date':
self._displayHandler = GFDisplayHandler.DateDisplayHandler(self,
! self._block._form._app.eventController,
self._displaymask, self._inputmask)
!
! def isQueryable(self):
! return self._queryable
!
!
! #
! # Pulls the proper value from the resultSet
! #
! def getValue(self):
! # TODO: No longer true...
! # We have to check to see if the _block has been
! # setup yet. The Trigger system calls getValue
! # before it's ready so we fake it
! #if hasattr(self,'_block'):
! if self._block.mode == 'query':
! try:
! value = self._block._queryValues[self]
! except KeyError:
! value = None
! elif self._block.mode == 'precommit':
! value = self._block._preCommitWorkingRecord.getField(self.field)
!
! else:
! value = self._block._resultSet.current.getField(self.field)
! # TODO: part of the removed block check from above
! #else:
! # value = None
!
! if value == None: value = ''
!
! # TODO: check to see if this is still needed
! #CheckBox does not work if comment following "if" block (ra3vat)
! if self.style == 'checkbox' and value == '': value = 0
!
! return value
!
! #
! # triggerSetValue
! #
! # does proper typecasting when value is set via a trigger
! #
! def triggerSetValue(self, value):
! if self.style=='checkbox' and value =='':
! value = 0
! if self.typecast == "number" and value != None:
! value = float(value)
! self.setValue(value)
!
! def setValue(self, value):
! # TODO: This is now being done in the display handler
! #if self.style=='checkbox' and value =='':
! # value = 0
! #
! # Number fields
! #if self.typecast == "number" and value != None:
! # value = float(value)
!
! if self._block.mode == 'query':
! self._block._queryValues[self] = value
!
! elif self._block.mode == 'precommit':
! value = self._block._preCommitWorkingRecord.setField(self.field,value)
!
! else:
! self.processTrigger('Pre-Change')
! self._block._resultSet.current.setField(self.field,value)
! self.processTrigger('Post-Change')
! self._block._form.updateUIEntry(self)
!
! #
! # allowedValues
! #
! def allowedValues(self):
! if not self._allowedValues and hasattr(self,'_fk_datasource'):
! rs = self._fk_datasource.createResultSet()
! more = rs.firstRecord()
! self._allowedValues = {"":""}
! self._allowedValuesDescr = [""]
! self._allowedValuesReverse = {"":""}
! dropdownSeparator = gConfig('DropdownSeparator')
! while more:
! try:
! key = "%s" % rs.current.getField(self.fk_key)
! descriptions = []
! for i in self._fk_descr:
! descriptions.append("%s" % rs.current.getField(i))
! descr = string.join(descriptions,dropdownSeparator)
!
! self._allowedValues[key] = descr
! self._allowedValuesDescr.append(descr)
! self._allowedValuesReverse[descr] = key
! except AttributeError:
! # TODO: What's this for?
! self._allowedValues[rs.current.getField(self.fk_key)] = None
! more = rs.nextRecord()
! GDebug.printMesg (5,'Created for DropDown: %s' % self._allowedValues)
!
! return (self._allowedValues, self._allowedValuesDescr)
!
! def resetForeignKey(self):
! self._allowedValues = None
! self.allowedValues()
!
--- 62,140 ----
'POST-FOCUSOUT': 'Post-FocusOut',
'PRE-FOCUSIN': 'Pre-FocusIn',
'POST-FOCUSIN': 'Post-FocusIn',
}
! self._triggerFunctions={'set':{'function':self.triggerSetValue},
'get':{'function':self.getValue}
}
self._triggerSet = self.triggerSetValue
self._triggerGet = self.getValue
! def _buildObject(self):
! return GFTabStop._buildObject(self)
! def initialize(self):
! #
! # Find parents/relatives
! #
! # ...Block
! try:
! self._block = block =
self.findParentOfType('GFForm')._logic._blockMap[self.block]
! block._entryList.append(self)
! except KeyError:
! raise "Entry references non-existent block '%s'" % self.block
!
! # ...Field
! try:
! self._field = field = block._fieldMap[self.field]
! field._entryList.append(self)
! except KeyError:
! raise "Entry references non-existent field '%s'" % self.field
! # ...Page
! self._page = self.findParentOfType('GFPage')
! self._form = self._block._form
! # Navigable? or no?
! self._navigable = self.navigable
! if self.style == 'label' or self.hidden:
! self._navigable = 0
! self._queryable = 0 # TODO: is this used?
self._formatmask = ""
self._inputmask = hasattr(self,'inputmask') and self.inputmask or ""
self._displaymask = hasattr(self,'displaymask') and self.displaymask or ""
! # TODO: Conversion: I'm torn... does this go here or in GFField??
# Create an appropriate display handler
if self.style == 'checkbox':
self._displayHandler = GFDisplayHandler.CheckboxDisplayHandler(self,
! self._form._app.eventController)
elif self.style == 'dropdown':
self._displayHandler = GFDisplayHandler.DropdownDisplayHandler(self,
! self._form._app.eventController)
! elif self._field.typecast == 'text':
self._displayHandler = GFDisplayHandler.TextDisplayHandler(self,
! self._form._app.eventController,
self._displaymask, self._inputmask)
! elif self._field.typecast == 'number':
self._displayHandler = GFDisplayHandler.NumberDisplayHandler(self,
! self._form._app.eventController,
self._displaymask, self._inputmask)
! elif self._field.typecast == 'date':
self._displayHandler = GFDisplayHandler.DateDisplayHandler(self,
! self._form._app.eventController,
self._displaymask, self._inputmask)
! # TODO: Conversion: Does this belong here or not?
! def getValue(self, *args, **parms):
! return self._field.getValue(*args, **parms)
!
! # TODO: Conversion: Does this belong here or not?
! def triggerSetValue(self, *args, **parms):
! return self._field.triggerSetValue(*args, **parms)
Index: gnue/forms/src/GFObjects/GFField.py
diff -c gnue/forms/src/GFObjects/GFField.py:1.79
gnue/forms/src/GFObjects/GFField.py:1.80
*** gnue/forms/src/GFObjects/GFField.py:1.79 Mon Nov 18 01:40:55 2002
--- gnue/forms/src/GFObjects/GFField.py Thu Nov 21 21:57:24 2002
***************
*** 30,36 ****
from gnue.common import GDebug, FormatMasks
from gnue.forms import GFDisplayHandler
from GFValue import GFValue
- from GFTabStop import GFTabStop
import string
############################################################
--- 30,35 ----
***************
*** 40,46 ****
#
# It send events to its parent GFBlock
#
! class GFField(GFValue, GFTabStop):
def __init__(self, parent=None, value=None):
GFValue.__init__(self, parent, value, 'GFField')
--- 39,45 ----
#
# It send events to its parent GFBlock
#
! class GFField(GFValue):
def __init__(self, parent=None, value=None):
GFValue.__init__(self, parent, value, 'GFField')
***************
*** 64,69 ****
--- 63,71 ----
self._rows = 1
self._gap = 0
+ # This will be populated by GFEntry's initialize
+ self._entryList = []
+
#
# Trigger exposure
#
***************
*** 89,100 ****
'resetForeignKey':{'function':self.resetForeignKey},
'set':{'function':self.triggerSetValue},
'get':{'function':self.getValue}
! }
self._triggerProperties={'readonly':{'set':self.setReadonly,
'get':self.getReadonly
},
'parent': {'get':self.getParent}
! }
self._triggerSet = self.triggerSetValue
self._triggerGet = self.getValue
--- 91,102 ----
'resetForeignKey':{'function':self.resetForeignKey},
'set':{'function':self.triggerSetValue},
'get':{'function':self.getValue}
! }
self._triggerProperties={'readonly':{'set':self.setReadonly,
'get':self.getReadonly
},
'parent': {'get':self.getParent}
! }
self._triggerSet = self.triggerSetValue
self._triggerGet = self.getValue
***************
*** 116,142 ****
def _buildObject(self):
# Convert deprecated attributes
- # Numeric attributes (now typecast="..")
- # DEPRECATED with 0.1.x
- if hasattr(self,'numeric') and self.numeric:
- del self.numeric
- self.typecast = 'number'
-
- # visibleCount attributes... (now rows="..")
- # DEPRECATED with 0.1.x
- if not hasattr(self, 'rows') and hasattr(self,'visibleCount'):
- self.rows = self.visibleCount
- del self.visibleCount
-
- # Case attributes... (now case="..")
- # DEPRECATED with 0.1.x
- if hasattr(self,'uppercase') and self.uppercase:
- del self.uppercase
- self.case = 'upper'
- elif hasattr(self,'lowercase') and self.lowercase:
- del self.lowercase
- self.case = 'lower'
-
# Foreign keys
# DEPRECATED with 0.4.x
if hasattr(self,'foreign_key') and self.foreign_key:
--- 118,123 ----
***************
*** 147,160 ****
del self.foreign_key_description
- # Force 'label' styles into "readonly" mode
- if self.style == 'label':
- self.readonly = 1
- self._queryable = 0
-
return GFValue._buildObject(self)
def initialize(self):
if self.typecast == 'number':
self._numeric = 1
self._allowFormulas = gConfig("AllowNumericFormulas")
--- 128,141 ----
del self.foreign_key_description
return GFValue._buildObject(self)
def initialize(self):
+
+ self._block = block = self.findParentOfType('GFBlock')
+ block._fieldMap[self.name] = self
+ block._fieldList.append(self)
+
if self.typecast == 'number':
self._numeric = 1
self._allowFormulas = gConfig("AllowNumericFormulas")
***************
*** 163,173 ****
elif self.case == 'lower':
self._lowercase = 1
- self._formatmask = ""
- self._inputmask = hasattr(self,'inputmask') and self.inputmask or ""
- self._displaymask = hasattr(self,'displaymask') and self.displaymask or ""
! self._block = self.findParentOfType('GFBlock')
if hasattr(self, 'default') and self.default != None and
len(self.default):
default = self.default
--- 144,154 ----
elif self.case == 'lower':
self._lowercase = 1
! ## self._formatmask = ""
! ## self._inputmask = hasattr(self,'inputmask') and self.inputmask or ""
! ## self._displaymask = hasattr(self,'displaymask') and self.displaymask or
""
!
if hasattr(self, 'default') and self.default != None and
len(self.default):
default = self.default
***************
*** 196,202 ****
self._fk_descr = string.split(self.fk_key,',')
self._fk_datasource = \
! self._block._form._datasourceDictionary[string.lower(self.fk_source)]
# Reference the foreign keys to their datasources
# (so they are selected)
--- 177,183 ----
self._fk_descr = string.split(self.fk_key,',')
self._fk_datasource = \
! block._form._datasourceDictionary[string.lower(self.fk_source)]
# Reference the foreign keys to their datasources
# (so they are selected)
***************
*** 207,234 ****
self.queryDefault != None and \
self._bound and \
len(self.queryDefault):
! self._block._queryDefaults[self] = self.queryDefault
! # Create an appropriate display handler
! if self.style == 'checkbox':
! self._displayHandler = GFDisplayHandler.CheckboxDisplayHandler(self,
! self._block._form._app.eventController)
! elif self.style == 'dropdown':
! self._displayHandler = GFDisplayHandler.DropdownDisplayHandler(self,
! self._block._form._app.eventController)
! elif self.typecast == 'text':
! self._displayHandler = GFDisplayHandler.TextDisplayHandler(self,
! self._block._form._app.eventController,
! self._displaymask, self._inputmask)
! elif self.typecast == 'number':
! self._displayHandler = GFDisplayHandler.NumberDisplayHandler(self,
! self._block._form._app.eventController,
! self._displaymask, self._inputmask)
! elif self.typecast == 'date':
! self._displayHandler = GFDisplayHandler.DateDisplayHandler(self,
! self._block._form._app.eventController,
! self._displaymask, self._inputmask)
def isQueryable(self):
--- 188,215 ----
self.queryDefault != None and \
self._bound and \
len(self.queryDefault):
! block._queryDefaults[self] = self.queryDefault
! ## # Create an appropriate display handler
! ## if self.style == 'checkbox':
! ## self._displayHandler = GFDisplayHandler.CheckboxDisplayHandler(self,
! ## self._block._form._app.eventController)
! ## elif self.style == 'dropdown':
! ## self._displayHandler = GFDisplayHandler.DropdownDisplayHandler(self,
! ## self._block._form._app.eventController)
! ## elif self.typecast == 'text':
! ## self._displayHandler = GFDisplayHandler.TextDisplayHandler(self,
! ## self._block._form._app.eventController,
! ## self._displaymask, self._inputmask)
! ## elif self.typecast == 'number':
! ## self._displayHandler = GFDisplayHandler.NumberDisplayHandler(self,
! ## self._block._form._app.eventController,
! ## self._displaymask, self._inputmask)
! ## elif self.typecast == 'date':
! ## self._displayHandler = GFDisplayHandler.DateDisplayHandler(self,
! ## self._block._form._app.eventController,
! ## self._displaymask, self._inputmask)
def isQueryable(self):
Index: gnue/forms/src/GFObjects/GFLayout.py
diff -c gnue/forms/src/GFObjects/GFLayout.py:1.1
gnue/forms/src/GFObjects/GFLayout.py:1.2
*** gnue/forms/src/GFObjects/GFLayout.py:1.1 Wed Nov 20 20:39:37 2002
--- gnue/forms/src/GFObjects/GFLayout.py Thu Nov 21 21:57:24 2002
***************
*** 39,44 ****
--- 39,45 ----
def __init__(self, parent=None):
GFObj.__init__(self, parent, "GFLayout")
self._inits =[self.initialize]
+ self._pageList = []
def _buildObject(self):
return GFObj._buildObject(self)
Index: gnue/forms/src/GFObjects/GFLogic.py
diff -c gnue/forms/src/GFObjects/GFLogic.py:1.1
gnue/forms/src/GFObjects/GFLogic.py:1.2
*** gnue/forms/src/GFObjects/GFLogic.py:1.1 Wed Nov 20 20:39:37 2002
--- gnue/forms/src/GFObjects/GFLogic.py Thu Nov 21 21:57:24 2002
***************
*** 39,44 ****
--- 39,46 ----
def __init__(self, parent=None):
GFObj.__init__(self, parent, "GFLogic")
self._inits =[self.initialize]
+ self._blockMap = {}
+ self._blockList = []
def _buildObject(self):
return GFObj._buildObject(self)
Index: gnue/forms/src/GFObjects/GFPage.py
diff -c gnue/forms/src/GFObjects/GFPage.py:1.5
gnue/forms/src/GFObjects/GFPage.py:1.6
*** gnue/forms/src/GFObjects/GFPage.py:1.5 Thu Oct 31 21:40:53 2002
--- gnue/forms/src/GFObjects/GFPage.py Thu Nov 21 21:57:24 2002
***************
*** 46,53 ****
def initialize(self):
! form = self.findParentOfType('GFForm')
! form._pageList.append(self)
--- 46,53 ----
def initialize(self):
! layout = self.findParentOfType('GFLayout')
! layout._pageList.append(self)
Index: gnue/forms/src/GFParser.py
diff -c gnue/forms/src/GFParser.py:1.87 gnue/forms/src/GFParser.py:1.88
*** gnue/forms/src/GFParser.py:1.87 Wed Nov 20 22:50:24 2002
--- gnue/forms/src/GFParser.py Thu Nov 21 21:57:24 2002
***************
*** 22,28 ****
# GFParser.py
#
# DESCRIPTION:
! # Class that contains a sax based xml processor for GNUE forms
#
# NOTES:
#
--- 22,28 ----
# GFParser.py
#
# DESCRIPTION:
! # Class that contains a sax based xml processor for GNUe forms
#
# NOTES:
#
***************
*** 290,295 ****
--- 290,301 ----
'formatmask': {
'Typecast': GTypecast.text,
'Description': 'TODO' },
+ 'inputmask': {
+ 'Typecast': GTypecast.text,
+ 'Description': 'TODO' },
+ 'displaymask': {
+ 'Typecast': GTypecast.text,
+ 'Description': 'TODO' },
'value': {
'Typecast': GTypecast.text,
'Description': 'TODO' },
***************
*** 382,390 ****
'Required': 1,
'Description': 'The name of the field that this ties to.' },
'block': {
! 'Typecast': GTypecast.block,
'Required': 1,
! 'Description': 'The name of the field that this ties to.' },
'height': {
'Typecast': GTypecast.whole,
'Default': 1,
--- 388,396 ----
'Required': 1,
'Description': 'The name of the field that this ties to.' },
'block': {
! 'Typecast': GTypecast.name,
'Required': 1,
! 'Description': 'The name of the block that this ties to.' },
'height': {
'Typecast': GTypecast.whole,
'Default': 1,
***************
*** 428,439 ****
'{fk_source}, {fk_key}, and {fk_description} '
'attributes. The {label} style implies the '
'{readonly} attribute.' },
- 'inputmask': {
- 'Typecast': GTypecast.text,
- 'Description': 'TODO' },
- 'displaymask': {
- 'Typecast': GTypecast.text,
- 'Description': 'TODO' },
'x': {
'Required': 1,
'Typecast': GTypecast.whole,
--- 434,439 ----
Index: gnue/forms/src/uidrivers/_base/UIdriver.py
diff -c gnue/forms/src/uidrivers/_base/UIdriver.py:1.78
gnue/forms/src/uidrivers/_base/UIdriver.py:1.79
*** gnue/forms/src/uidrivers/_base/UIdriver.py:1.78 Sun Nov 17 20:27:05 2002
--- gnue/forms/src/uidrivers/_base/UIdriver.py Thu Nov 21 21:57:24 2002
***************
*** 327,332 ****
--- 327,333 ----
return
entry = event.data
+ field = entry._field
handler = entry._displayHandler
prehandling = handler.editing
handler.editing = 0
Index: gnue/forms/utils/gfd04to05.py
diff -c gnue/forms/utils/gfd04to05.py:1.3 gnue/forms/utils/gfd04to05.py:1.4
*** gnue/forms/utils/gfd04to05.py:1.3 Wed Nov 20 20:39:37 2002
--- gnue/forms/utils/gfd04to05.py Thu Nov 21 21:57:24 2002
***************
*** 242,248 ****
if attr == 'name':
eattr['field'] = v
elif attr in ('x','y','width','height','style','hidden','focusorder',
! 'rows','rowSpacer','inputmask','displaymask'):
eattr[attr] = v
del object._properties[attr]
--- 242,248 ----
if attr == 'name':
eattr['field'] = v
elif attr in ('x','y','width','height','style','hidden','focusorder',
! 'rows','rowSpacer'):
eattr[attr] = v
del object._properties[attr]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/forms src/GFDisplayHandler.py src/GFForm.p...,
Jason Cater <=