-from enigma import *
+# -*- coding: iso-8859-1 -*-
+from enigma import eTimer
+from Components.Language import language
class NumericalTextInput:
- mapping = []
- mapping.append (".,?'\"0-()@/:_") # 0
- mapping.append (" 1") # 1
- mapping.append ("abc2ABC") # 2
- mapping.append ("def3DEF") # 3
- mapping.append ("ghi4GHI") # 4
- mapping.append ("jkl5JKL") # 5
- mapping.append ("mno6MNO") # 6
- mapping.append ("pqrs7PQRS") # 7
- mapping.append ("tuv8TUV") # 8
- mapping.append ("wxyz9WXYZ") # 9
-
- def __init__(self, nextFunction = None):
- self.nextFunction = nextFunction
- self.Timer = eTimer()
- self.Timer.timeout.get().append(self.nextChar)
- self.lastKey = -1
- self.pos = 0
-
- def getKey(self, num):
- self.Timer.stop()
- self.Timer.start(1000)
- if (self.lastKey != num):
- self.lastKey = num
- self.pos = 0
- else:
- self.pos += 1
- if (len(self.mapping[num]) <= self.pos):
- self.pos = 0
- return self.mapping[num][self.pos]
-
- def nextKey(self):
- self.Timer.stop()
- self.lastKey = -1
-
- def nextChar(self):
- self.Timer.stop()
- print "Timer done"
- self.nextKey()
- if (self.nextFunction != None):
- self.nextFunction()
-
\ No newline at end of file
+ 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()