[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r9757 - in trunk/gnue-common/src: . external formatting
From: |
reinhard |
Subject: |
[gnue] r9757 - in trunk/gnue-common/src: . external formatting |
Date: |
Thu, 12 Jul 2007 12:04:23 -0500 (CDT) |
Author: reinhard
Date: 2007-07-12 12:04:23 -0500 (Thu, 12 Jul 2007)
New Revision: 9757
Removed:
trunk/gnue-common/src/cursing/
trunk/gnue-common/src/datatypes/
trunk/gnue-common/src/external/README.plex
trunk/gnue-common/src/external/plex/
trunk/gnue-common/src/formatting/BaseMask.py
trunk/gnue-common/src/formatting/DateMask.py
trunk/gnue-common/src/formatting/FormatExceptions.py
trunk/gnue-common/src/formatting/NumberMask.py
trunk/gnue-common/src/formatting/TextMask.py
trunk/gnue-common/src/formatting/masks/
Log:
Removed some old stuff. Still available in svn attic if it should be needed
again.
Deleted: trunk/gnue-common/src/external/README.plex
===================================================================
--- trunk/gnue-common/src/external/README.plex 2007-07-12 14:25:21 UTC (rev
9756)
+++ trunk/gnue-common/src/external/README.plex 2007-07-12 17:04:23 UTC (rev
9757)
@@ -1,37 +0,0 @@
-This is version 1.1.4 of Plex, a Python module for building lexical
-analysers. See the doc directory for instructions on using it.
-
-Plex is free of any restrictions. You can use it, redistribute it,
-sell it, whatever you want. All I ask is that you give me credit if
-you distribute any code derived from it.
-
-
-Greg Ewing,
-Computer Science Department,
-University of Canterbury,
-Christchurch,
-New Zealand
-
address@hidden
-
-Version History
----------------
-
-1.1.4 Fixed bug causing argument of Rep or Rep1 to
- fail to match following a newline.
-
-1.1.3 Fixed bug causing Eol to fail to match at the
- beginning of a line in some circumstances.
-
-1.1.2 Changed Scanner.yield() to Scanner.produce() to
- accommodate Python 2.3, where yield is a keyword.
-
- Changed test10 to not rely so much on details of
- string repr.
-
-1.1.1 Fixed two minor bugs: uncommented Scanner.next_char() and
- added import of types to Regexps.py.
-
-1.1 Added support for case-insensitive matches.
-
-1.0 First official release.
Deleted: trunk/gnue-common/src/formatting/BaseMask.py
===================================================================
--- trunk/gnue-common/src/formatting/BaseMask.py 2007-07-12 14:25:21 UTC
(rev 9756)
+++ trunk/gnue-common/src/formatting/BaseMask.py 2007-07-12 17:04:23 UTC
(rev 9757)
@@ -1,432 +0,0 @@
-#
-# This file is part of GNU Enterprise.
-#
-# GNU Enterprise is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2, or (at your option) any later version.
-#
-# GNU Enterprise is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# 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,
-# write to the Free Software Foundation, Inc., 59 Temple Place
-# - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Copyright 2001-2007 Free Software Foundation
-#
-# FILE:
-# BaseMask.py
-#
-# DESCRIPTION:
-#
-# NOTES:
-#
-
-from gnue.common.apps import GDebug
-from FormatExceptions import *
-
-# TODO: i18n
-# import locale
-# locale.nl_langinfo( option)
-#
-# Return some locale-specific information as a string. This function is
-# not available on all systems, and the set of possible options might
-# also vary across platforms. The possible argument values are numbers,
-# for which symbolic constants are available in the locale module.
-#
-# DAY_1 ... DAY_7
-# Return name of the n-th day of the week.
-#
-# ABDAY_1 ... ABDAY_7
-# Return abbreviated name of the n-th day of the week.
-#
-# MON_1 ... MON_12
-# Return name of the n-th month.
-#
-# ABMON_1 ... ABMON_12
-# Return abbreviated name of the n-th month.
-
-
-# This is a class for a mask literal element
-class Literal:
- def __init__(self, literal):
- self.literal = literal
-
- def getFormattedValue(self, value):
- return self.literal
-
- def isValidEntry(self, value):
- return value == self.literal
-
- def isCompleteEntry(self, value):
- return 0
-
-class BaseMask:
- value = ""
- maskMappings = {}
- inputHandlers = []
- outputHandlers = []
- output2Handlers = []
- predefinedLiterals = ""
- basetype = "base"
- defaultmask = ""
- literalClass = Literal
-
- def __init__(self, outputMask, inputMask=None, outputMask2=None):
-
- self.outputHandlers = self.parseMask(outputMask)
- print "Creating mask handler: %s;%s" % (outputMask,inputMask)
- print self.outputHandlers
-
- if inputMask != None:
- self.inputHandlers = self.parseMask(inputMask)
- if outputMask2 != None:
- self.output2Handlers = self.parseMask(outputMask2)
-
- # Calculate our array lengths once to speed up
- # our code. This should always be equivalent to:
- # len(self.inputHandlers)
- # len(self.inputMaskPos)
- # len(self.inputMaskLen)
- # len(self.inputDisplayLen)
- self.inputCount = len(self.inputHandlers)
-
- self.reset()
-
-
- def reset(self):
-
- # Holds the starting positions of each element section...
- self.inputMaskPos = [0] * self.inputCount
-
- # Holds the length of each element section...
- self.inputMaskLen = [0] * self.inputCount
-
- # Holds the length of each formatted element section...
- self.inputDisplayLen = [0] * self.inputCount
- # .. including padding
- self.inputFormattedLen = [0] * self.inputCount
-
-
- self.index = 0
- self.cursor = 0
- self.display = ""
- self.input = ""
-
-
- # Take a mask string and break it into its elements and map it to handlers
- def parseMask(self, mask, edit=0):
- assert gDebug(7,'parseMask("%s")' % mask)
- maskHandler = []
-
- # Load a predefined mask, if that's what user specified
- # TODO: Should predefined masks be pulled from other than gnue.conf?
- if len(mask) > 1 and mask[0] == '&':
- for i in range(edit+1):
- edstr = ('edit','')[i]
- if mask[1:] == self.basetype:
- try:
- mask = gConfig('%s%smask' % (self.basetype, edstr),
self.defaultmask)
- except KeyError:
- pass
- else:
- try:
- mask = gConfig('%smask_%s' % (self.basetype, edstr, mask[1:]))
- except KeyError:
- pass
- if not len(mask):
- tmsg = u_('The requested format mask "%(mask)s" is not defined for '
- '%(type)s fields') \
- % {'mask': mask [1:],
- 'type': self.basetype}
- raise PredefinedMaskNotFound, tmsg
-
- # Process each character in mask at a time
- isLiteral = 0
- for ch in mask:
- if ch == '\\':
- isLiteral = 1
- elif isLiteral or ch in self.predefinedLiterals:
- isLiteral = 0
- maskHandler.append(self.literalClass(ch))
- elif self.maskMappings.has_key(ch):
- maskHandler.append(self.maskMappings[ch])
- else:
- tmsg = u_('Unexpected character "%(char)s" in %(type)s mask.') \
- % {'char': ch,
- 'type': self.basetype}
- raise InvalidCharInMask, tmsg
-
- return maskHandler
-
- # If secondary is true, then use secondary mask (outputMask2)
- def getFormattedOutput(self, secondary=0):
- pass
-
- def getFormattedInput(self):
- pass
-
-
- def setText(self, text):
- self.input = text
- self.display = text
- self.reset()
-
- def isValid(self):
- return 1
-
- # Returns (value, formatted text, cursor)
- def addText(self, value, text, pos, replaces=0, padding="_"):
- shift = 0
- cursor = self.cursor
- for size in self.inputDisplayLen:
- shift -= size
-
- print "Starting cursor: %s; shift: %s" % (cursor, shift)
-
-
- value = self.processEdit(value, text, pos, replaces)
- formatted = self.getFormattedInput(value,padding=padding)
-
- for size in self.inputDisplayLen:
- shift += size
-
- self.cursor = cursor + shift
- self.moveCursorRelative(0)
-
- print "Ending cursor: %s; shift: %s" % (self.cursor, shift)
-
- return (value, formatted, self.cursor)
-
-
-
- # Returns (value, formatted text, cursor)
- def deleteText(self, text, pos, characters):
- pass
-
-
-
- #
- # Given a display cursor, calculate the index into the string
- #
- def cursorToIndex(self, cursor):
- # TODO
- pos = 0
- index = 0
- i = 0
- while ( i < self.inputCount - 1 ) and \
- ( cursor < pos + self.inputDisplayLen[i] ) :
- pos += self.inputDisplayLen[i]
- i += 1
-
-
- diff = cursor - pos - self.inputDisplayLen[i]
- if diff > self.inputMaskLen[i]:
- diff = self.inputMaskLen[i]
-
- return max(self.inputMaskPos[i] + diff,0)
-
-
- #
- # Given an index into the string, calculate the display cursor,
- #
- def indexToCursor(self, index):
-
- i = 0
- while ( i < self.inputCount - 1 ) and \
- ( index < self.inputMaskPos[i] ) :
- i += 1
-
- pos = self.inputMaskPos[i]
-
- diff = index - pos - self.inputMaskLen[i]
-
- # TODO
- return max(pos + diff,0)
-
-
- #
- # Move cursor using relative units
- #
- # If relative > 0, move cursor to the right <relative> units
- # If relative < 0, move cursor to the left |<relative>| units
- # This takes into account Literals, etc.
- #
- def moveCursorRelative(self, relative):
-
- print "*** moveCursorRelative(%s)" % relative
-
- # Direction = -1 (left) or 1 (right).
- direction = relative == 0 or int(relative/abs(relative))
-
- print "relative=%s" % relative
- print "direction=%s" % direction
-
- self.cursor = self.cursor + relative
-
- print "cursor #1: %s" % self.cursor
-
- if self.cursor <= 0:
- self.cursor = 0
- self.direction = 1
- elif self.cursor > len(self.display):
- self.cursor = len(self.display)
- self.direction = -1
-
- print "cursor #2: %s" % self.cursor
-
- pos = 0
- section = 0
- while section < self.inputCount and \
- ((pos + self.inputDisplayLen[section]) < self.cursor):
-
- pos += self.inputDisplayLen[section]
- print "%s; %s" %(section, pos)
- section += 1
-
-
- print "pos=%s" % pos
- print "section=%s" % pos
-
- if pos + self.inputFormattedLen[section] == self.cursor:
- print "cursor #2b: %s" % self.cursor
- section += direction
-
- print "section=%s" % section
-
- if section == self.inputCount:
-# self.cursor = pos + self.inputDisplayLen[-1]
- print "cursor #3: %s" % self.cursor
- section -= 1
-
-
-
- print "section=%s" % section
- if isinstance(self.inputHandlers[section], Literal):
- self.moveCursorRelative(direction)
- print "cursor #4: %s" % self.cursor
-
- self.index = self.cursorToIndex(self.cursor)
-
- print "New cursor position: %s" % self.cursor
-
- return self.cursor
-
-
- #
- # Move cursor to the beginning of the field
- #
- def moveCursorToBegin(self):
-
- # Reset cursor to beginning
- self.cursor = 0
- self.index = 0
-
- # This will handle if the first character is a literal
- # (e.g., for phone numbers (999) 999-9999, this will move
- # to the first '9', not the '('
- return self.moveCursorRelative(0)
-
-
- #
- # Move cursor to the beginning of the field
- #
- def moveCursorToEnd(self):
-
- # Reset cursor to beginning
- self.cursor = self.indexToCursor(self.lastInputPos)
-
- return self.moveCursorRelative(0)
-
-
-
- #
- # Edit the value
- #
- def processEdit (self, value, str, pos=0, replaces=0):
- print "-"*50
- assert gDebug(7,'processEdit(%s,%s,%s,%s)' % (value,str,pos,replaces))
- nv = value
-
- if pos == len(nv):
- nv += str
- else:
- nv = "%s%s%s" % (nv[:pos],str,nv[pos+replaces:])
-
- assert gDebug(7,"inputMaskPos=%s" % self.inputMaskPos)
-
- print "pos=%s"%pos
-
- section = 0
- while section < self.inputCount and \
- self.inputMaskPos[section] < pos and \
- self.inputMaskPos[section] > 0:
- section += 1
- i = pos
-
- # Debug...
- section = 0
- i = 0
-
- while i < len(nv):
- if not self.inputHandlers[section]\
- .isValidEntry(nv[self.inputMaskPos[section]:i+1]):
- if i == self.inputMaskPos[section] and \
- not isinstance(self.inputHandlers[section],Literal):
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
- return nv
- else:
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
- if section == self.inputCount - 1:
- if i != len(nv)-1:
- return nv
- else:
- break
- else:
- section += 1
- self.inputMaskPos[section] = i
- self.inputMaskLen[section] = 0
- else:
- i += 1
-
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
-
- for i in range(section+1, self.inputCount):
- self.inputMaskLen[i] = 0
-
- self.index = pos + len(value)
- self.cursor = self.indexToCursor(self.index)
- print "after processEdit, index=%s;cursor=%s" % (self.index, self.cursor)
-
- assert gDebug(7,"<< %s" % nv)
- return nv
-
-
-
-# This is a base class for mask elements
-class MaskSection:
-
- def __init__(self):
- self.minLength = 0
- self.maxLength = 0
-
- self.intersperse = 0
- self.intersperseString = ","
- self.intersperseRepeat = 1
-
-
- def getFormattedValue(self):
- return self.value
-
- def isValidEntry(self, value):
- return 0
-
- def isCompleteEntry(self, value):
- return len(value) == self.maxLength
-
-
-
Deleted: trunk/gnue-common/src/formatting/DateMask.py
===================================================================
--- trunk/gnue-common/src/formatting/DateMask.py 2007-07-12 14:25:21 UTC
(rev 9756)
+++ trunk/gnue-common/src/formatting/DateMask.py 2007-07-12 17:04:23 UTC
(rev 9757)
@@ -1,666 +0,0 @@
-#
-# This file is part of GNU Enterprise.
-#
-# GNU Enterprise is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2, or (at your option) any later version.
-#
-# GNU Enterprise is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# 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,
-# write to the Free Software Foundation, Inc., 59 Temple Place
-# - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Copyright 2001-2007 Free Software Foundation
-#
-# FILE:
-# DateMask.py
-#
-# DESCRIPTION:
-#
-# NOTES:
-#
-# \ Next character is a literal
-# a Abbreviated weekday name (Sun..Sat)
-# b Abbreviated month name (Jan..Dec)
-# d day of month (01..31)
-# h hour (01..12)
-# g hour (00..23)
-# j day of year (001..366)
-# m month (01..12)
-# i minute (00..59)
-# p am or pm
-# s second (00..60)
-# u week number of year with Sunday as first day of
-# week (00..53)
-# v week number of year with Monday as first day of
-# week (01..52)
-# y year
-#
-# Predefined literals: "/-.:, "
-#
-# Example:
-#
-# m/d/y 01/23/01
-# m/Y 01/2001
-# h:i p 12:29 pm
-#
-#####################################################################
-
-
-from BaseMask import BaseMask, MaskSection, Literal
-from gnue.common.apps import GDebug
-from gnue.common.utils.GDateTime import GDateTime, InvalidDate
-from FormatExceptions import *
-
-
-# TODO: This is obviously not Internationalized!
-monthNames = ['January','February','March','April','May','June',
- 'July','August','September','October','November','December']
-
-monthAbbrevNames = ['Jan','Feb','Mar','Apr','May','Jun',
- 'Jul','Aug','Sep','Oct','Nov','Dec']
-
-weekdayNames = ['Sunday','Monday','Tuesday','Wednesday',
- 'Thursday','Friday','Saturday']
-
-weekdayAbbrevNames = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
-
-
-predefinedDateLiterals = "-./: ,"
-
-
-class DateLiteral (Literal):
- def addSelfToDate(self, value, date):
- pass
-
- def isValidEntry(self, value):
- return value == self.literal or len(value) == 1 and value in
predefinedDateLiterals
-
-
-class DateMask (BaseMask):
- def __init__(self, outputMask, inputMask=None, outputMask2=None):
-
- self.predefinedLiterals = predefinedDateLiterals
-
- self.basetype = "date"
- self.literalClass = DateLiteral
-
- # TODO: Make DateMask's defaultmask be based on locale settings
- self.defaultmask = "m/d/y"
-
- # Reference the module-level mask mappings
- # These should never change from the values created
- # at init time.
- self.maskMappings = maskMappings
-
- BaseMask.__init__(self, outputMask, inputMask, outputMask2)
-
- self.value = GDateTime()
- self.entry = ""
-
-
- def getFormattedOutput(self, value, secondary=0):
- if value in (None,''):
- return ""
-
- rv = ""
- val = self._buildDate(value, 1)
- if secondary:
- handlers = self.output2Handlers
- else:
- handlers = self.outputHandlers
-
- try:
- for m in self.outputHandlers:
- rv += m.getFormattedValue(val)
-
- return rv
- except InvalidDate, msg:
- raise InvalidEntry, msg
-
-
- def getFormattedInput(self, value, padding=""):
-
- assert gDebug(7,'getFormattedInput(%s,%s)' % (value,padding))
- print "**** Formattin dis puppy!"
-
- val = self._buildDate(value, 0)
-
- self.display = ""
- self.lastInputPos = 0
- lastElement = self.inputCount - 1
-
- print o(u_("inputMaskPos=%s") % self.inputMaskLen)
- print o(u_("inputMaskLen=%s") % self.inputMaskLen)
-
-
- for i in range(self.inputCount):
-
- # Keep track of the last valid position
- if self.inputMaskLen[i]:
- self.lastInputPos = i + self.inputMaskLen[i] - 1
-
- piece = ""
- pad = ""
- partial = value[self.inputMaskPos[i]: \
- self.inputMaskPos[i]+self.inputMaskLen[i]]
-
- # If this is a "literal" print it as is
- if isinstance(self.inputHandlers[i],Literal):
- piece = self.inputHandlers[i].getFormattedValue(val)
-
- else:
-
- # If this is the very last (partial) section, add it unformatted
- if self.inputMaskLen[i] and \
- ( (i == lastElement) or \
- ( ( i < lastElement) and \
- not self.inputMaskLen[i+1] and \
- not self.inputHandlers[i].isCompleteEntry(partial)) ) :
-
-
- piece = partial
-
- # Pad any extra space in this section
- if len(padding):
- pad = padding * (self.inputHandlers[i].maxLength - len(piece))
-
- # .. or if we have data to output, format it appropriately
- elif self.inputMaskLen[i]:
- piece = self.inputHandlers[i].getFormattedValue(val)
-
- # .. or if we have no data but are padding, pad appropriately
- elif len(padding):
- pad = padding * self.inputHandlers[i].maxLength
-
- self.inputDisplayLen[i] = len(piece)
- self.inputFormattedLen[i] = len(piece+pad)
- self.display += piece + pad
-
- return self.display
-
-
- def _buildDate(self, value, mustValidate=0):
- date = GDateTime()
-
- for i in range(self.inputCount):
- if (self.inputMaskLen[i] or isinstance(self.inputHandlers[i],Literal)):
-# if self.inputHandlers[i].isValidEntry(value[ self.inputMaskPos[i]: \
-# self.inputMaskPos[i] + self.inputMaskLen[i]]):
- self.inputHandlers[i].addSelfToDate(
- value[ self.inputMaskPos[i]: \
- self.inputMaskPos[i] + self.inputMaskLen[i]], date )
-# else:
-# raise InvalidEntry, "Invalid Entry"
-
- return date
-
-
-
-
-#####################################################################
-#
-# Mask elements
-#
-#####################################################################
-
-class _baseDateSection (MaskSection):
- def __init__(self):
- pass
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _numberRangeSection (_baseDateSection):
-
- minLength = 0
- maxLength = 0
- valueRange = (0,0)
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= self.valueRange[0] and v <= self.valueRange[1] \
- and len(value) <= self.maxLength) or \
- (v <= self.valueRange[1] and len(value) < self.maxLength)
- except ValueError:
- return 0
-
- def isCompleteEntry(self, value):
- v = int(value)
- return v >= self.valueRange[0] \
- and v <= self.valueRange[1] \
- and (len(value) == self.maxLength or
- v * 10 > self.valueRange[1])
-
-
-
-class _aSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return weekdayAbbrevNames[date.getDayOfWeek()]
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _ASection(_aSection):
- def getFormattedValue(self, date):
- return weekdayNames[date.getDayOfWeek()]
-
-
-class _bSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return monthAbbrevNames[(date.month or 1) - 1]
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _BSection(_bSection):
- def getFormattedValue(self, date):
- return monthNames[(date.month or 1) - 1]
-
-
-class _cSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _dSection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
- self.valueRange = (0,31)
-
- def getFormattedValue(self, date):
- return "%02i" % date.day
-
- def addSelfToDate(self, value, date):
- date.day = int(value or 1)
-
-
-class _DSection(_dSection):
- def getFormattedValue(self, date):
- return "%i" % date.day
-
-
-class _hSection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
- self.valueRange = (0,24)
-
- def getFormattedValue(self, date):
- return "%02i" % date.hour
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- date.hour = int(value or 0)
-
-
-class _HSection(_hSection):
- def getFormattedValue(self, date):
- return "%i" % date.hour
-
-
-class _gSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _GSection(_gSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _jSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _JSection(_jSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _mSection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
- self.valueRange = (1,12)
-
- def getFormattedValue(self, date):
- return "%02i" % date.month
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 12 and len(value) <= 2) or \
- (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.month = int(value or 1)
-
-
-class _MSection(_baseDateSection):
- def getFormattedValue(self, date):
- return "%i" % date.month
-
-
-class _iSection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
- self.valueRange = (0,59)
-
- def getFormattedValue(self, date):
- return "%02i" % date.minute
-
- def addSelfToDate(self, value, date):
- date.minute = int(value)
-
-
-class _ISection(_iSection):
- def getFormattedValue(self, date):
- return "%2i" % date.minute
-
-
-class _pSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return date.hour >= 12 and 'pm' or 'am'
-
- def isValidEntry(self, value):
- return string.upper(string.replace(string.replace(value,' ',''),'.','')) \
- in ('A','AM','P','PM')
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _PSection(_pSection):
- def getFormattedValue(self, date):
- return date.hour >= 12 and 'PM' or 'AM'
-
-
-class _sSection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
- self.valueRange = (0,59)
-
- def getFormattedValue(self, date):
- return "%02i" % date.second
-
- def addSelfToDate(self, value, date):
- date.second = int(value)
-
-
-class _SSection(_sSection):
- def getFormattedValue(self, date):
- return "%2i" % date.second
-
-
-class _uSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _USection(_uSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _vSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _VSection(_vSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _wSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _xSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _XSection(_xSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _ySection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 2
- self.maxLength = 2
- self.valueRange = (0,99)
-
- def getFormattedValue(self, date):
- return "%02i" % divmod(date.year, 100)[1]
-
- def addSelfToDate(self, value, date):
- # TODO: Temporary year hack!
- v = int(value)
- if v >= 50:
- date.year = 1900 + v
- else:
- date.year = 2000 + v
-
-
-class _YSection(_numberRangeSection):
- def __init__(self):
- _numberRangeSection.__init__(self)
- self.minLength = 2
- self.maxLength = 4
- self.valueRange = (0,9999)
-
- def getFormattedValue(self, date):
- return "%04i" % date.year
-
- def addSelfToDate(self, value, date):
- date.year = int(value)
-
-
-
-#####################################################################
-#
-# Mask mappings
-#
-#####################################################################
-
-
-# Map the mask characters to their corresponding classes...
-# Since these can be reused, we will create one instance at
-# the module level... this will add a *little* overhead at
-# module load time, but will save significant time when many
-# masks are used by the app.
-maskMappings = {
- 'a': _aSection(), 'A': _ASection(),
- 'b': _bSection(), 'B': _BSection(),
- 'c': _cSection(), 'd': _dSection(),
- 'D': _DSection(),
- 'h': _hSection(), 'H': _HSection(),
- 'g': _gSection(), 'G': _GSection(),
- 'j': _jSection(), 'J': _JSection(),
- 'm': _mSection(), 'M': _mSection(),
- 'i': _iSection(), 'I': _ISection(),
- 'p': _pSection(), 'P': _PSection(),
- 's': _sSection(), 'S': _SSection(),
- 'u': _uSection(), 'U': _USection(),
- 'v': _vSection(), 'V': _VSection(),
- 'w': _wSection(),
- 'x': _xSection(), 'X': _XSection(),
- 'y': _ySection(), 'Y': _YSection() }
-
-
-
-
-
-#####################################################################
-#
-# Debugging stuff
-#
-#####################################################################
-
-if __name__ == '__main__':
- GDebug.setDebug(20)
- val = ""
- dates = DateMask(r'\D\a\t\e: A, B d, Y \T\i\m\e: h:i:s','m.d.y')
-
-# val = dates.processEdit(val, '07/161',0,0)
-# print "processEdit <= %s" % val
-# print dates.getFormattedInput(val, "_")
-
- val = dates.processEdit(val, '1',0,0)
- print "processEdit <= %s" % val
- print dates.getFormattedInput(val, "_")
-
- val = dates.processEdit(val, '2',1,0)
- print "processEdit <= %s" % val
- print dates.getFormattedInput(val, "_")
-
- val = dates.processEdit(val, '091',1,1)
- print "processEdit <= %s" % val
- print dates.getFormattedInput(val, "_")
-
- val = dates.processEdit(val, '',1,1)
- print "processEdit <= %s" % val
- print dates.getFormattedInput(val, "_")
-
-
Deleted: trunk/gnue-common/src/formatting/FormatExceptions.py
===================================================================
--- trunk/gnue-common/src/formatting/FormatExceptions.py 2007-07-12
14:25:21 UTC (rev 9756)
+++ trunk/gnue-common/src/formatting/FormatExceptions.py 2007-07-12
17:04:23 UTC (rev 9757)
@@ -1,53 +0,0 @@
-#
-# This file is part of GNU Enterprise.
-#
-# GNU Enterprise is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2, or (at your option) any later version.
-#
-# GNU Enterprise is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# 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,
-# write to the Free Software Foundation, Inc., 59 Temple Place
-# - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Copyright 2001-2007 Free Software Foundation
-#
-# FILE:
-# BaseMask.py
-#
-# DESCRIPTION:
-#
-# NOTES:
-#
-
-from gnue.common.apps import errors
-
-# Base Exception for markup problems with mask
-class MaskMarkupError (errors.ApplicationError):
- pass
-
-# Developer specified a predefined mask (using "&name" notation)
-# that does not exist
-class PredefinedMaskNotFound (MaskMarkupError):
- pass
-
-# The supplied mask includes a token that is not recognized
-class InvalidCharInMask (MaskMarkupError):
- pass
-
-
-# Base exception for user/data input problems
-class MaskInputError (errors.UserError):
- pass
-
-# The supplied input from user is invalid
-class InvalidEntry(MaskInputError):
- pass
-
-
Deleted: trunk/gnue-common/src/formatting/NumberMask.py
===================================================================
--- trunk/gnue-common/src/formatting/NumberMask.py 2007-07-12 14:25:21 UTC
(rev 9756)
+++ trunk/gnue-common/src/formatting/NumberMask.py 2007-07-12 17:04:23 UTC
(rev 9757)
@@ -1,600 +0,0 @@
-#
-# This file is part of GNU Enterprise.
-#
-# GNU Enterprise is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2, or (at your option) any later version.
-#
-# GNU Enterprise is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# 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,
-# write to the Free Software Foundation, Inc., 59 Temple Place
-# - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Copyright 2001-2007 Free Software Foundation
-#
-# FILE:
-# NumberMask.py
-#
-# DESCRIPTION:
-#
-# NOTES:
-#
-# \ Next character is a literal
-# a Abbreviated weekday name (Sun..Sat)
-# b Abbreviated month name (Jan..Dec)
-# d day of month (01..31)
-# h hour (01..12)
-# g hour (00..23)
-# j day of year (001..366)
-# m month (01..12)
-# i minute (00..59)
-# p am or pm
-# s second (00..60)
-# u week number of year with Sunday as first day of
-# week (00..53)
-# v week number of year with Monday as first day of
-# week (01..52)
-# y year
-#
-# Predefined literals: "/-.:, "
-#
-# Example:
-#
-# m/d/y 01/01/2001
-# m/y 01/2001
-# h:i p 12:29 pm
-#
-
-from BaseMask import BaseMask, MaskSection, Literal
-from gnue.common.utils.GDateTime import GDateTime, InvalidDate
-from FormatExceptions import *
-
-class DateLiteral (Literal):
- def addSelfToDate(self, value, date):
- pass
-
- def isValidEntry(self, value):
- return value == self.literal or value in predefinedDateLiterals
-
-class NumberMask (BaseMask):
- def __init__(self, outputMask, inputMask=None, outputMask2=None):
-
- self.predefinedLiterals = predefinedDateLiterals
-
- self.basetype = "date"
- self.literalClass = DateLiteral
-
- # TODO: Make NumberMask's defaultmask be based on locale settings
- self.defaultmask = "m/d/y"
-
- self.maskMappings = {
- 'a': _aSection, 'A': _ASection,
- 'b': _bSection, 'B': _BSection,
- 'c': _cSection, 'd': _dSection,
- 'D': _DSection, 'h': _hSection,
- 'H': _HSection,
- 'g': _gSection, 'G': _GSection,
- 'j': _jSection, 'J': _JSection,
- 'm': _mSection, 'M': _mSection,
- 'i': _iSection, 'I': _ISection,
- 'p': _pSection, 'P': _PSection,
- 's': _sSection, 'S': _SSection,
- 'u': _uSection, 'U': _USection,
- 'v': _vSection, 'V': _VSection,
- 'w': _wSection,
- 'x': _xSection, 'X': _XSection,
- 'y': _ySection, 'Y': _YSection }
-
- BaseMask.__init__(self, outputMask, inputMask, outputMask2)
-
- self.value = GDateTime()
- self.entry = ""
- self.inputMaskPos = []
- self.inputMaskLen = []
- for i in range(len(self.inputHandlers)):
- self.inputMaskPos.append(0)
- self.inputMaskLen.append(0)
-
-
- def processEdit (self, str, pos=0, replaces=0):
- nv = self.entry
- if pos == len(nv):
- nv += str
- else:
- nv = "%s%s%s" % (nv[:pos],str,nv[pos+replaces:])
-
- section = 0
- while section < len(self.inputMaskPos) and \
- self.inputMaskPos[section] < pos:
- section += 1
-
- i = pos
- while i < len(nv):
- if not self.inputHandlers[section]\
- .isValidEntry(nv[self.inputMaskPos[section]:i+1]):
- if i == self.inputMaskPos[section] and \
- not isinstance(self.inputHandlers[section],Literal):
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
- return 1
- else:
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
- if section == len(self.inputHandlers) - 1:
- if i != len(nv)-1:
- return 1
- else:
- section += 1
- self.inputMaskPos[section] = i
- self.inputMaskLen[section] = 0
- else:
- i += 1
-
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
-
- for i in range(section+1, len(self.inputHandlers)):
- self.inputMaskLen[i] = 0
-
-
- self.entry = nv
- return 1
-
-
- def getFormattedOutput(self, secondary=0):
- rv = ""
- value = self._buildDate(self.entry, 1)
- if secondary:
- handlers = self.output2Handlers
- else:
- handlers = self.outputHandlers
-
- try:
- for m in self.outputHandlers:
- rv += m.getFormattedValue(value)
-
- return rv
- except InvalidDate, msg:
- raise InvalidEntry, msg
-
-
- def getFormattedDisplay(self):
- rv = ""
- value = self._buildDate(self.entry, 1)
-
- try:
- for m in self.outputHandlers:
- rv += m.getFormattedValue(value)
-
- return rv
- except InvalidDate, msg:
- raise InvalidEntry, msg
-
-
- def getFormattedInput(self, padding=""):
- rv = ""
- value = self._buildDate(self.entry, 0)
-
-# self.lastInputPos =
-
- print self.inputMaskLen
-
- for i in range(len(self.inputHandlers)):
- if self.inputMaskLen[i] or isinstance(self.inputHandlers[i],Literal):
- rv += self.inputHandlers[i].getFormattedValue(value)
- elif len(padding):
- rv += padding * self.inputHandlers[i].maxLength
-
- return rv
-
-
- def _buildDate(self, value, mustValidate=0):
- date = GDateTime()
-
- for i in range(len(self.inputHandlers)):
- if self.inputMaskLen[i] or isinstance(self.inputHandlers[i],Literal):
- self.inputHandlers[i].addSelfToDate(
- value[ self.inputMaskPos[i]: \
- self.inputMaskPos[i] + self.inputMaskLen[i]], date )
- elif mustValidate:
- raise InvalidEntry, u_("Invalid Entry")
-
- return date
-
-
-
-class _baseDateSection (MaskSection):
- def __init__(self):
- pass
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _aSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return weekdayAbbrevNames[date.getDayOfWeek()]
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _ASection(_aSection):
- def getFormattedValue(self, date):
- return weekdayNames[date.getDayOfWeek()]
-
-
-class _bSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return monthAbbrevNames[(date.month or 1) - 1]
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _BSection(_bSection):
- def getFormattedValue(self, date):
- return monthNames[(date.month or 1) - 1]
-
-
-class _cSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _dSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.day
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 31) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.day = int(value or 1)
-
-
-class _DSection(_dSection):
- def getFormattedValue(self, date):
- return "%i" % date.day
-
-
-class _hSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.hour
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- date.hour = int(value or 0)
-
-
-class _HSection(_hSection):
- def getFormattedValue(self, date):
- return "%i" % date.hour
-
-
-class _gSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _GSection(_gSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _jSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _JSection(_jSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _mSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.month
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 12) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.month = int(value or 1)
-
-
-class _MSection(_baseDateSection):
- def getFormattedValue(self, date):
- return "%i" % date.month
-
-
-class _iSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.minute
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 59) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.minute = int(value)
-
-
-class _ISection(_iSection):
- def getFormattedValue(self, date):
- return "%2i" % date.minute
-
-
-class _pSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _PSection(_pSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _sSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.second
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 59) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.second = int(value)
-
-
-class _SSection(_sSection):
- def getFormattedValue(self, date):
- return "%2i" % date.second
-
-
-class _uSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _USection(_uSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _vSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _VSection(_vSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _wSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _xSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _XSection(_xSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _ySection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 2
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % divmod(date.year, 100)[1]
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0) and (v <= 99)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- # TODO: Temporary year hack!
- v = int(value)
- if v >= 50:
- date.year = 1900 + v
- else:
- date.year = 2000 + v
-
-
-class _YSection(_ySection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 2
- self.maxLength = 4
-
- def getFormattedValue(self, date):
- return "%04i" % date.year
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 1) and (v <= 9999)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.year = int(value)
-
-
-
Deleted: trunk/gnue-common/src/formatting/TextMask.py
===================================================================
--- trunk/gnue-common/src/formatting/TextMask.py 2007-07-12 14:25:21 UTC
(rev 9756)
+++ trunk/gnue-common/src/formatting/TextMask.py 2007-07-12 17:04:23 UTC
(rev 9757)
@@ -1,590 +0,0 @@
-#
-# This file is part of GNU Enterprise.
-#
-# GNU Enterprise is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2, or (at your option) any later version.
-#
-# GNU Enterprise is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied
-# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# 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,
-# write to the Free Software Foundation, Inc., 59 Temple Place
-# - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Copyright 2001-2007 Free Software Foundation
-#
-# FILE:
-# TextMask.py
-#
-# DESCRIPTION:
-#
-# NOTES:
-#
-# Global Directives
-# {proper} Display all text in Proper case
-# {upper} Display all text in Upper case
-# {lower} Display all text in Lower case
-#
-# Predefined literals: " "
-#
-#
-# Example:
-#
-# m/d/y 01/01/2001
-# m/y 01/2001
-# h:i p 12:29 pm
-#
-
-from BaseMask import BaseMask, MaskSection, Literal
-from gnue.common.utils.GDateTime import GDateTime, InvalidDate
-from FormatExceptions import *
-
-class DateLiteral (Literal):
- def addSelfToDate(self, value, date):
- pass
-
- def isValidEntry(self, value):
- return value == self.literal or value in predefinedDateLiterals
-
-class TextMask (BaseMask):
- def __init__(self, outputMask, inputMask=None, outputMask2=None):
-
- self.predefinedLiterals = predefinedDateLiterals
-
- self.basetype = "date"
- self.literalClass = DateLiteral
-
- # TODO: Make TextMask's defaultmask be based on locale settings
- self.defaultmask = "m/d/y"
-
- self.maskMappings = {
- 'a': _aSection, 'A': _ASection,
- 'b': _bSection, 'B': _BSection,
- 'c': _cSection, 'd': _dSection,
- 'D': _DSection, 'h': _hSection,
- 'H': _HSection,
- 'g': _gSection, 'G': _GSection,
- 'j': _jSection, 'J': _JSection,
- 'm': _mSection, 'M': _mSection,
- 'i': _iSection, 'I': _ISection,
- 'p': _pSection, 'P': _PSection,
- 's': _sSection, 'S': _SSection,
- 'u': _uSection, 'U': _USection,
- 'v': _vSection, 'V': _VSection,
- 'w': _wSection,
- 'x': _xSection, 'X': _XSection,
- 'y': _ySection, 'Y': _YSection }
-
- BaseMask.__init__(self, outputMask, inputMask, outputMask2)
-
- self.value = GDateTime()
- self.entry = ""
- self.inputMaskPos = []
- self.inputMaskLen = []
- for i in range(len(self.inputHandlers)):
- self.inputMaskPos.append(0)
- self.inputMaskLen.append(0)
-
-
- def processEdit (self, str, pos=0, replaces=0):
- nv = self.entry
- if pos == len(nv):
- nv += str
- else:
- nv = "%s%s%s" % (nv[:pos],str,nv[pos+replaces:])
-
- section = 0
- while section < len(self.inputMaskPos) and \
- self.inputMaskPos[section] < pos:
- section += 1
-
- i = pos
- while i < len(nv):
- if not self.inputHandlers[section]\
- .isValidEntry(nv[self.inputMaskPos[section]:i+1]):
- if i == self.inputMaskPos[section] and \
- not isinstance(self.inputHandlers[section],Literal):
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
- return 1
- else:
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
- if section == len(self.inputHandlers) - 1:
- if i != len(nv)-1:
- return 1
- else:
- section += 1
- self.inputMaskPos[section] = i
- self.inputMaskLen[section] = 0
- else:
- i += 1
-
- self.inputMaskLen[section] = i - self.inputMaskPos[section]
-
- for i in range(section+1, len(self.inputHandlers)):
- self.inputMaskLen[i] = 0
-
-
- self.entry = nv
- return 1
-
-
- def getFormattedOutput(self, secondary=0):
- rv = ""
- value = self._buildDate(self.entry, 1)
- if secondary:
- handlers = self.output2Handlers
- else:
- handlers = self.outputHandlers
-
- try:
- for m in self.outputHandlers:
- rv += m.getFormattedValue(value)
-
- return rv
- except InvalidDate, msg:
- raise InvalidEntry, msg
-
-
- def getFormattedDisplay(self):
- rv = ""
- value = self._buildDate(self.entry, 1)
-
- try:
- for m in self.outputHandlers:
- rv += m.getFormattedValue(value)
-
- return rv
- except InvalidDate, msg:
- raise InvalidEntry, msg
-
-
- def getFormattedInput(self, padding=""):
- rv = ""
- value = self._buildDate(self.entry, 0)
-
-# self.lastInputPos =
-
- print self.inputMaskLen
-
- for i in range(len(self.inputHandlers)):
- if self.inputMaskLen[i] or isinstance(self.inputHandlers[i],Literal):
- rv += self.inputHandlers[i].getFormattedValue(value)
- elif len(padding):
- rv += padding * self.inputHandlers[i].maxLength
-
- return rv
-
-
- def _buildDate(self, value, mustValidate=0):
- date = GDateTime()
-
- for i in range(len(self.inputHandlers)):
- if self.inputMaskLen[i] or isinstance(self.inputHandlers[i],Literal):
- self.inputHandlers[i].addSelfToDate(
- value[ self.inputMaskPos[i]: \
- self.inputMaskPos[i] + self.inputMaskLen[i]], date )
- elif mustValidate:
- raise InvalidEntry, u_("Invalid Entry")
-
- return date
-
-
-
-class _baseDateSection (MaskSection):
- def __init__(self):
- pass
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _aSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return weekdayAbbrevNames[date.getDayOfWeek()]
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _ASection(_aSection):
- def getFormattedValue(self, date):
- return weekdayNames[date.getDayOfWeek()]
-
-
-class _bSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return monthAbbrevNames[(date.month or 1) - 1]
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _BSection(_bSection):
- def getFormattedValue(self, date):
- return monthNames[(date.month or 1) - 1]
-
-
-class _cSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _dSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.day
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 31) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.day = int(value or 1)
-
-
-class _DSection(_dSection):
- def getFormattedValue(self, date):
- return "%i" % date.day
-
-
-class _hSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.hour
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- date.hour = int(value or 0)
-
-
-class _HSection(_hSection):
- def getFormattedValue(self, date):
- return "%i" % date.hour
-
-
-class _gSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _GSection(_gSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _jSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _JSection(_jSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _mSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.month
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 12) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.month = int(value or 1)
-
-
-class _MSection(_baseDateSection):
- def getFormattedValue(self, date):
- return "%i" % date.month
-
-
-class _iSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.minute
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 59) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.minute = int(value)
-
-
-class _ISection(_iSection):
- def getFormattedValue(self, date):
- return "%2i" % date.minute
-
-
-class _pSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _PSection(_pSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _sSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % date.second
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0 and v <= 59) or (v == 0 and len(value) == 1)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.second = int(value)
-
-
-class _SSection(_sSection):
- def getFormattedValue(self, date):
- return "%2i" % date.second
-
-
-class _uSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _USection(_uSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _vSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _VSection(_vSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _wSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _xSection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 1
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
- def isValidEntry(self, value):
- return 0
-
- def addSelfToDate(self, value, date):
- pass
-
-
-class _XSection(_xSection):
- def getFormattedValue(self, date):
- # TODO: Implement this mask element
- return "*" * self.maxLength
-
-
-class _ySection(_baseDateSection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 2
- self.maxLength = 2
-
- def getFormattedValue(self, date):
- return "%02i" % divmod(date.year, 100)[1]
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 0) and (v <= 99)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- # TODO: Temporary year hack!
- v = int(value)
- if v >= 50:
- date.year = 1900 + v
- else:
- date.year = 2000 + v
-
-
-class _YSection(_ySection):
- def __init__(self):
- _baseDateSection.__init__(self)
- self.minLength = 2
- self.maxLength = 4
-
- def getFormattedValue(self, date):
- return "%04i" % date.year
-
- def isValidEntry(self, value):
- try:
- v = int(value)
- return (v >= 1) and (v <= 9999)
- except ValueError:
- return 0
-
- def addSelfToDate(self, value, date):
- date.year = int(value)
-
-
-
-
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9757 - in trunk/gnue-common/src: . external formatting,
reinhard <=