# -*- coding: iso-8859-1 -*- from enigma import eTimer from Components.Language import language class NumericalTextInput: def __init__(self, nextFunc=None, handleTimeout = True): self.mapping = [] self.lang = language.getLanguage() self.useableChars=None self.nextFunction=nextFunc if self.lang == 'de_DE': self.mapping.append (u".,?'\"0-()@/:_$") # 0 self.mapping.append (u" 1") # 1 self.mapping.append (u"a�bc2A�BC") # 2 self.mapping.append (u"def3DEF") # 3 self.mapping.append (u"ghi4GHI") # 4 self.mapping.append (u"jkl5JKL") # 5 self.mapping.append (u"mno�6MNO�") # 6 self.mapping.append (u"pqrs�7PQRS�") # 7 self.mapping.append (u"tu�v8TU�V") # 8 self.mapping.append (u"wxyz9WXYZ") # 9 elif self.lang == 'es_ES': self.mapping.append (u".,?'\"0-()@/:_$") # 0 self.mapping.append (u" 1") # 1 self.mapping.append (u"abc��2ABC��") # 2 self.mapping.append (u"de��f3DEF��") # 3 self.mapping.append (u"ghi��4GHI��") # 4 self.mapping.append (u"jkl5JKL") # 5 self.mapping.append (u"mn�o��6MN�O��") # 6 self.mapping.append (u"pqrs7PQRS") # 7 self.mapping.append (u"tuv��8TUV��") # 8 self.mapping.append (u"wxyz9WXYZ") # 9 if self.lang in ['sv_SE', 'fi_FI']: self.mapping.append (u".,?'\"0-()@/:_$") # 0 self.mapping.append (u" 1") # 1 self.mapping.append (u"abc��2ABC��") # 2 self.mapping.append (u"def�3DEF�") # 3 self.mapping.append (u"ghi4GHI") # 4 self.mapping.append (u"jkl5JKL") # 5 self.mapping.append (u"mno�6MNO�") # 6 self.mapping.append (u"pqrs7PQRS") # 7 self.mapping.append (u"tuv8TUV") # 8 self.mapping.append (u"wxyz9WXYZ") # 9 else: self.mapping.append (u".,?'\"0-()@/:_$") # 0 self.mapping.append (u" 1") # 1 self.mapping.append (u"abc2ABC") # 2 self.mapping.append (u"def3DEF") # 3 self.mapping.append (u"ghi4GHI") # 4 self.mapping.append (u"jkl5JKL") # 5 self.mapping.append (u"mno6MNO") # 6 self.mapping.append (u"pqrs7PQRS") # 7 self.mapping.append (u"tuv8TUV") # 8 self.mapping.append (u"wxyz9WXYZ") # 9 if handleTimeout: self.timer = eTimer() self.timer.callback.append(self.timeout) else: self.timer = None self.lastKey = -1 self.pos = -1 def setUseableChars(self, useable): self.useableChars = useable def getKey(self, num): cnt=0 if self.lastKey != num: if self.lastKey != -1: self.nextChar() self.lastKey = num self.pos = -1 if self.timer is not None: self.timer.start(1000, True) while True: self.pos += 1 if len(self.mapping[num]) <= self.pos: self.pos = 0 if self.useableChars: pos = self.useableChars.find(self.mapping[num][self.pos]) if pos == -1: cnt += 1 if cnt < len(self.mapping[num]): continue else: return None break return self.mapping[num][self.pos] def nextKey(self): if self.timer is not None: self.timer.stop() self.lastKey = -1 def nextChar(self): self.nextKey() if self.nextFunction: self.nextFunction() def timeout(self): if self.lastKey != -1: self.nextChar()