/[papo]/gnue/forms/src/GFDisplayHandler.py
ViewVC logotype

Diff of /gnue/forms/src/GFDisplayHandler.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5.2.6 by styxman, Wed Jun 18 20:17:52 2003 UTC revision 1.5.2.7 by styxman, Tue Jun 24 18:38:45 2003 UTC
# Line 38  except ImportError: Line 38  except ImportError:
38    print """    print """
39     This GNUe tool requires mxDateTime to be installed     This GNUe tool requires mxDateTime to be installed
40    
41     You can find the mxDateTime at     You can find the mxDateTime at
42    
43     http://www.lemburg.com/files/python/mxDateTime.html     http://www.lemburg.com/files/python/mxDateTime.html
44    
# Line 64  class FieldDisplayHandler(GFEventAware): Line 64  class FieldDisplayHandler(GFEventAware):
64    
65    def setValue(self, value):    def setValue(self, value):
66      self.modified = 0      self.modified = 0
     wasEditing= 0  
     if self.editing:  
       wasEditing= 1  
       dummyEvent= GFEvent ('nothing')  
       self.endEdit (dummyEvent)  
67      self.value = value      self.value = value
   
 #     print 'new value! %s [%s]' % (value, self.__class__)  
 #     from traceback import print_stack  
 #     import sys  
 #     print_stack (file=sys.stdout)  
 #     print '-------------'  
   
68      self._buildDisplay()      self._buildDisplay()
     if wasEditing:  
       self.beginEdit (dummyEvent)  
69    
70    
71    def getValue(self):    def getValue(self):
# Line 116  class FieldDisplayHandler(GFEventAware): Line 102  class FieldDisplayHandler(GFEventAware):
102    #    #
103    # Editing methods    # Editing methods
104    #    #
105      
106    #    #
107    # beginEdit    # beginEdit
108    # called when a widget first gets focus    # called when a widget first gets focus
109    #    #
110    def beginEdit(self, event):    def beginEdit(self, event):
111        self.editing = 1
112        self.modified = 0
113    
114      # TODO: Replace with formatter      # TODO: Replace with formatter
115      self.setValue(self.entry.getValue())      self.setValue(self.entry.getValue())
# Line 129  class FieldDisplayHandler(GFEventAware): Line 117  class FieldDisplayHandler(GFEventAware):
117      self._buildDisplay()      self._buildDisplay()
118    
119      self.cursor = len(self.display)      self.cursor = len(self.display)
     self.editing = 1  
     self.modified = 0  
120    
121    #    #
122    # endEdit    # endEdit
# Line 165  class FieldDisplayHandler(GFEventAware): Line 151  class FieldDisplayHandler(GFEventAware):
151            event.__errortext__ = _("Invalid value '%s' for field") % self.value            event.__errortext__ = _("Invalid value '%s' for field") % self.value
152            return            return
153    
154            self.editing = 0
155          event.__results__ = self.value          event.__results__ = self.value
156          event.modified = self.modified          event.modified = self.modified
157          self.entry.setValue(self.value)          self.entry.setValue(self.value)
# Line 176  class FieldDisplayHandler(GFEventAware): Line 163  class FieldDisplayHandler(GFEventAware):
163          event.__errortext__ = _("The entered value\n ") \          event.__errortext__ = _("The entered value\n ") \
164                              + " '%s'\n" % self.work \                              + " '%s'\n" % self.work \
165                              + _("is not a valid entry.")                              + _("is not a valid entry.")
     # must end the editing mode in any case, unless it failed  
     self.editing = 0  
166    
167    
168    def addText(self, event):    def addText(self, event):
169    
170      value = event.text      value = event.text
171    
     if self.entry.readonly:  
       return  
   
172      if (self.entry.readonly and not self.entry._block.mode=='query'):      if (self.entry.readonly and not self.entry._block.mode=='query'):
173        event.__error__ = 1        event.__error__ = 1
174        event.__errortext__ = _("Cannot modify field. Entry is read only")        event.__errortext__ = _("Cannot modify field.  Form is read only")
175        return        return
176      elif self.entry.editOnNull and \      elif self.entry.editOnNull and \
177           self.value != None and \           self.value != None and \
# Line 240  class FieldDisplayHandler(GFEventAware): Line 222  class FieldDisplayHandler(GFEventAware):
222    
223      else:      else:
224        # Otherwise just graft the new text in place        # Otherwise just graft the new text in place
225          
226        self.work = self.work[:self.cursor] \        self.work = self.work[:self.cursor] \
227                     + value                \                     + value                \
228                     + self.work[self.cursor:]                     + self.work[self.cursor:]
229    
230        self.cursor += len(event.text)        self.cursor += len(event.text)
231    
232        
233      event.__dropped__ = 1      event.__dropped__ = 1
234      self.modified = 1      self.modified = 1
235      self._buildDisplay()      self._buildDisplay()
# Line 268  class FieldDisplayHandler(GFEventAware): Line 250  class FieldDisplayHandler(GFEventAware):
250      if self.cursor != precurs:      if self.cursor != precurs:
251        event.overstrike = 1        event.overstrike = 1
252        event.text = ""        event.text = ""
253          
254        self.addText(event)        self.addText(event)
255    
256    # Delete forward one character    # Delete forward one character
257    def delete(self, event):    def delete(self, event):
258      event.overstrike = 1      event.overstrike = 1
259      event.text = ""      event.text = ""
260        
261      self.addText(event)      self.addText(event)
262    
263    
# Line 478  class FieldDisplayHandler(GFEventAware): Line 460  class FieldDisplayHandler(GFEventAware):
460        return "%s" % value        return "%s" % value
461    
462    def _buildDisplay(self):    def _buildDisplay(self):
 #     print "w: %s, v: %s, d: %s, e: %s" % (self.work, self.value, self.display, self.editing)  
 #     from traceback import print_stack  
 #     import sys  
 #     print_stack (file=sys.stdout)  
   
463      if self.editing:      if self.editing:
464        self.display = self._buildDisplayHelper(self.work, 1)        self.display = self._buildDisplayHelper(self.work, 1)
465      else:      else:
466        self.display = self._buildDisplayHelper(self.value, 0)        self.display = self._buildDisplayHelper(self.value, 0)
       if self.value:  
         self.work= str (self.value)  
       else:  
         self.work= ''  
   
 #     print "w: %s, v: %s, d: %s" % (self.work, self.value, self.display)  
 #     print '-------------'  
467    
468    
469    
# Line 551  class NumberDisplayHandler(FieldDisplayH Line 521  class NumberDisplayHandler(FieldDisplayH
521      # hack      # hack
522      if self.displayMask:      if self.displayMask:
523        try:        try:
524          return self.displayMask % value          return displayMask % value
525        except:        except:
526          pass          pass
527    
# Line 619  class DateDisplayHandler(FieldDisplayHan Line 589  class DateDisplayHandler(FieldDisplayHan
589    # TODO: Replace with format mask    # TODO: Replace with format mask
590    def _buildDisplayHelper(self, value, editing):    def _buildDisplayHelper(self, value, editing):
591      format = "%d/%m/%Y"      format = "%d/%m/%Y"
592        
593      if value in (None,""):      if value in (None,""):
594        return ""        return ""
595      try:      try:
# Line 682  class DropdownDisplayHandler(FieldDispla Line 652  class DropdownDisplayHandler(FieldDispla
652        self.entry.allowedValues()        self.entry.allowedValues()
653        self._loadedAllowedValues = 1        self._loadedAllowedValues = 1
654    
655        self.editing = 1
656        self.modified = 0
657    
658      # TODO: Replace with formatter      # TODO: Replace with formatter
659      self.setValue(self.entry.getValue())      self.setValue(self.entry.getValue())
660    
# Line 698  class DropdownDisplayHandler(FieldDispla Line 671  class DropdownDisplayHandler(FieldDispla
671      self._buildDisplay()      self._buildDisplay()
672    
673      self.cursor = len(self.display)      self.cursor = len(self.display)
     self.editing = 1  
     self.modified = 0  
   
674    
675    
676    # TODO: Replace with format mask    # TODO: Replace with format mask
# Line 753  class DropdownDisplayHandler(FieldDispla Line 723  class DropdownDisplayHandler(FieldDispla
723  #  #
724  class TextLookupDisplayHandler(FieldDisplayHandler):  class TextLookupDisplayHandler(FieldDisplayHandler):
725    
726    def __init__(self, entry, eventHandler, displayMask, inputMask= None):    def __init__(self, *args, **params):
727      FieldDisplayHandler.__init__(self, entry, eventHandler, None)      FieldDisplayHandler.__init__(self, *args, **params)
     self.displayMask= entry._displaymask  
     self._currentValue = ""  
     self._currentDisplayValue = ""  
728    
729    def beginEdit(self, event):    def beginEdit(self, event):
730      pass      pass
731    
732    # TODO: Replace with format mask    # TODO: Replace with format mask
733    def _buildDisplayHelper(self, value, editing):    def _buildDisplayHelper(self, value, editing):
     # print "hack! %s" % self.entry.name  
734      if value in (None,""):      if value in (None,""):
735        return ""        return ""
     if value == self._currentValue:  
       return self._currentDisplayValue  
736      descr = ""      descr = ""
737      if hasattr(self.entry,'datasource'):      if hasattr(self.entry,'datasource'):
738        if hasattr(self.entry,'foreign_key'):        if hasattr(self.entry,'foreign_key'):
# Line 777  class TextLookupDisplayHandler(FieldDisp Line 741  class TextLookupDisplayHandler(FieldDisp
741            tmpFieldName = foreignKeyContent[1]+'.'+foreignKeyContent[2]            tmpFieldName = foreignKeyContent[1]+'.'+foreignKeyContent[2]
742          else:          else:
743            tmpFieldName = foreignKeyContent[1]            tmpFieldName = foreignKeyContent[1]
744          
745        lResultSet = self.entry.datasource.createResultSet({tmpFieldName:value})        lResultSet = self.entry.datasource.createResultSet({tmpFieldName:value})
746      if (lResultSet.firstRecord()):      if (lResultSet.firstRecord()):
747        if hasattr(self.entry,'foreign_key_description'):        if hasattr(self.entry,'foreign_key_description'):
748          descr = "%s" % lResultSet.current.getField(self.entry.foreign_key_description)          descr = "%s" % lResultSet.current.getField(self.entry.foreign_key_description)
749    
     # displaymask  
     # hack  
     if self.displayMask:  
       try:  
         descr= self.displayMask % descr  
         # print "hack[1]! %s: %s" % (self.entry.name, str(descr))  
       except:  
         pass  
     self._currentValue = value  
     self._currentDisplayValue = descr  
750      return descr      return descr
751    
752    def _buildDisplay(self):    def _buildDisplay(self):

Legend:
Removed from v.1.5.2.6  
changed lines
  Added in v.1.5.2.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26