do nothing when old and new service is equal
[enigma2.git] / lib / python / Tools / NumericalTextInput.py
1 # -*- coding: iso-8859-1 -*-
2 from enigma import eTimer
3 from Components.Language import language
4
5 class NumericalTextInput:
6         def __init__(self, nextFunc=None, handleTimeout = True):
7                 self.mapping = []
8                 self.lang = language.getLanguage()
9                 self.useableChars=None
10                 self.nextFunction=nextFunc
11                 
12                 if self.lang == 'de_DE':
13                         self.mapping.append (u".,?'\"0-()@/:_") # 0
14                         self.mapping.append (u" 1") # 1
15                         self.mapping.append (u"aäbc2AÄBC") # 2
16                         self.mapping.append (u"def3DEF") # 3
17                         self.mapping.append (u"ghi4GHI") # 4
18                         self.mapping.append (u"jkl5JKL") # 5
19                         self.mapping.append (u"mnoö6MNOÖ") # 6
20                         self.mapping.append (u"pqrsß7PQRSß") # 7
21                         self.mapping.append (u"tuüv8TUÜV") # 8
22                         self.mapping.append (u"wxyz9WXYZ") # 9
23                 elif self.lang == 'es_ES':
24                         self.mapping.append (u".,?'\"0-()@/:_") # 0
25                         self.mapping.append (u" 1") # 1
26                         self.mapping.append (u"abcáà2ABCÁÀ") # 2
27                         self.mapping.append (u"deéèf3DEFÉÈ") # 3
28                         self.mapping.append (u"ghiíì4GHIÍÌ") # 4
29                         self.mapping.append (u"jkl5JKL") # 5
30                         self.mapping.append (u"mnñoóò6MNÑOÓÒ") # 6
31                         self.mapping.append (u"pqrs7PQRS") # 7
32                         self.mapping.append (u"tuvúù8TUVÚÙ") # 8
33                         self.mapping.append (u"wxyz9WXYZ") # 9
34                 else:
35                         self.mapping.append (u".,?'\"0-()@/:_") # 0
36                         self.mapping.append (u" 1") # 1
37                         self.mapping.append (u"abc2ABC") # 2
38                         self.mapping.append (u"def3DEF") # 3
39                         self.mapping.append (u"ghi4GHI") # 4
40                         self.mapping.append (u"jkl5JKL") # 5
41                         self.mapping.append (u"mno6MNO") # 6
42                         self.mapping.append (u"pqrs7PQRS") # 7
43                         self.mapping.append (u"tuv8TUV") # 8
44                         self.mapping.append (u"wxyz9WXYZ") # 9
45
46                 if handleTimeout:
47                         self.timer = eTimer()
48                         self.timer.timeout.get().append(self.timeout)
49                 else:
50                         self.timer = None
51                 self.lastKey = -1
52                 self.pos = -1
53
54         def setUseableChars(self, useable):
55                 self.useableChars = useable
56
57         def getKey(self, num):
58                 cnt=0
59                 if self.timer is not None:
60                         self.timer.start(1000, True)
61                 if self.lastKey != num:
62                         self.lastKey = num
63                         self.pos = -1
64                 while True:
65                         self.pos += 1
66                         if len(self.mapping[num]) <= self.pos:
67                                 self.pos = 0
68                         if self.useableChars:
69                                 pos = self.useableChars.find(self.mapping[num][self.pos])
70                                 if pos == -1:
71                                         cnt += 1
72                                         if cnt < len(self.mapping[num]):
73                                                 continue
74                                         else:
75                                                 return None
76                         break
77                 return self.mapping[num][self.pos]
78
79         def nextKey(self):
80                 if self.timer is not None:
81                         self.timer.stop()
82                 self.lastKey = -1
83
84         def nextChar(self):
85                 self.nextKey()
86                 if self.nextFunction:
87                         self.nextFunction()
88
89         def timeout(self):
90                 self.nextChar()