Merge remote branch 'origin/acid-burn/virtualkeyboard' into experimental
authorMladen Horvat <acid-burn@opendreambox.org>
Tue, 19 Apr 2011 14:46:29 +0000 (16:46 +0200)
committerMladen Horvat <acid-burn@opendreambox.org>
Tue, 19 Apr 2011 14:46:29 +0000 (16:46 +0200)
data/skin_default.xml
lib/python/Components/Converter/Makefile.am
lib/python/Components/Converter/ValueToPixmap.py [new file with mode: 0644]
lib/python/Components/Renderer/Pixmap.py
lib/python/Screens/VirtualKeyBoard.py
lib/python/Tools/NumericalTextInput.py

index 4826706..2dee1db 100755 (executable)
@@ -728,18 +728,18 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
        <!-- Numerical help dialog -->
        <screen name="NumericalTextInputHelpDialog" position="190,400" zPosition="2" size="394,124" backgroundColor="#202020" flags="wfNoBorder">
                <eLabel position="0,0" size="392,122" backgroundColor="#c0c0c0" zPosition="-1" />
-               <widget name="key1" position="2,2" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key2" position="132,2" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key3" position="262,2" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key4" position="2,32" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key5" position="132,32" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key6" position="262,32" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key7" position="2,62" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key8" position="132,62" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key9" position="262,62" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="help1" position="2,92" size="130,30" font="Console;16" halign="center" valign="center" />
-               <widget name="key0" position="132,92" size="130,30" font="Console;12" halign="center" valign="center" />
-               <widget name="help2" position="262,92" size="130,30" font="Console;16" halign="center" valign="center" />
+               <widget name="key1" position="2,2" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key2" position="132,2" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key3" position="262,2" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key4" position="2,32" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key5" position="132,32" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key6" position="262,32" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key7" position="2,62" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key8" position="132,62" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key9" position="262,62" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="help1" position="2,92" size="130,30" font="Regular;18" halign="center" valign="center" />
+               <widget name="key0" position="132,92" size="130,30" font="Regular;14" halign="center" valign="center" />
+               <widget name="help2" position="262,92" size="130,30" font="Regular;18" halign="center" valign="center" />
        </screen>
        <!-- Parental control - editor -->
        <screen name="ParentalControlEditor" position="center,center" size="520,400" title="Parental control services Editor">
@@ -1151,10 +1151,13 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
        </screen>
        <!-- VirtualKeyBoard -->
        <screen name="VirtualKeyBoard" position="center,center" size="560,350" zPosition="99" title="Virtual KeyBoard">
-               <ePixmap pixmap="skin_default/vkey_text.png" position="9,35" zPosition="-4" size="542,52" alphatest="on" />
-               <widget name="header" position="10,10" size="500,20" font="Regular;20" transparent="1" noWrap="1" />
-               <widget name="text" position="12,35" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" />
-               <widget name="list" position="10,100" size="540,225" selectionDisabled="1" transparent="1" />
+               <ePixmap pixmap="skin_default/vkey_text.png" position="9,45" zPosition="-4" size="542,52" alphatest="on" />
+               <widget source="country" render="Pixmap" position="490,0" size="60,40" alphatest="on" borderWidth="2" borderColor="yellow" >
+                       <convert type="ValueToPixmap">LanguageCode</convert>
+               </widget>
+               <widget name="header" position="10,20" size="500,20" font="Regular;20" transparent="1" noWrap="1" />
+               <widget name="text" position="12,45" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" />
+               <widget name="list" position="10,110" size="540,225" selectionDisabled="1" transparent="1" />
        </screen>
        <!-- FileBrowser -->
        <screen name="FileBrowser" position="center,center" size="520,430" title="DVD File Browser" >
index 3b6fd3e..b73f6d5 100644 (file)
@@ -6,4 +6,4 @@ install_PYTHON = \
        ConditionalShowHide.py ServicePosition.py ValueRange.py RdsInfo.py Streaming.py \
        StaticMultiList.py ServiceTime.py MovieInfo.py MenuEntryCompare.py StringListSelection.py \
        ValueBitTest.py TunerInfo.py ConfigEntryTest.py TemplatedMultiContent.py ProgressToText.py \
-       Combine.py SensorToText.py
+       Combine.py SensorToText.py ValueToPixmap.py
diff --git a/lib/python/Components/Converter/ValueToPixmap.py b/lib/python/Components/Converter/ValueToPixmap.py
new file mode 100644 (file)
index 0000000..0acd263
--- /dev/null
@@ -0,0 +1,40 @@
+from Components.Converter.Converter import Converter
+from Components.Element import cached, ElementError
+from Tools.Directories import fileExists, SCOPE_SKIN_IMAGE, SCOPE_CURRENT_SKIN, resolveFilename
+from Tools.LoadPixmap import LoadPixmap
+
+
+class ValueToPixmap(Converter, object):
+       LANGUAGE_CODE = 0
+       PATH = 1
+       
+       def __init__(self, type):
+               Converter.__init__(self, type)
+               if type == "LanguageCode":
+                       self.type = self.LANGUAGE_CODE
+               elif type == "Path":
+                       self.type = self.PATH
+               else:
+                       raise ElementError("'%s' is not <LanguageCode|Path> for ValueToPixmap converter" % type)
+
+       @cached
+       def getPixmap(self):
+               if self.source:
+                       val = self.source.text
+                       if val in (None, ""):
+                               return None
+               if self.type == self.PATH:
+                       return LoadPixmap(val)
+               if self.type == self.LANGUAGE_CODE:
+                       png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "countries/" + val[3:].lower() + ".png"))
+                       if png == None:
+                               png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "countries/missing.png"))
+                       return png
+               return None                     
+       
+       pixmap = property(getPixmap)
+
+       def changed(self, what):
+               if what[0] != self.CHANGED_SPECIFIC or what[1] == self.type:
+                       Converter.changed(self, what)
+
index d67cd55..7c6b579 100644 (file)
@@ -3,4 +3,17 @@ from Renderer import Renderer
 from enigma import ePixmap
 
 class Pixmap(Renderer):
+       def __init__(self):
+               Renderer.__init__(self)
+
        GUI_WIDGET = ePixmap
+
+       def postWidgetCreate(self, instance):
+               self.changed((self.CHANGED_DEFAULT,))
+
+       def changed(self, what):
+               if what[0] != self.CHANGED_CLEAR:
+                       if self.source and hasattr(self.source, "pixmap"):
+                               if self.instance:
+                                       self.instance.setPixmap(self.source.pixmap)
+
index 7846e4b..ebc347c 100755 (executable)
@@ -1,12 +1,13 @@
-# -*- coding: iso-8859-1 -*-
+# -*- coding: UTF-8 -*-
+from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_CENTER, RT_VALIGN_CENTER, getPrevAsciiCode
+from Screen import Screen
 from Components.Language import language
 from Components.ActionMap import ActionMap
+from Components.Sources.StaticText import StaticText
 from Components.Label import Label
 from Components.Pixmap import Pixmap
 from Components.MenuList import MenuList
 from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
-from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_CENTER, RT_VALIGN_CENTER
-from Screen import Screen
 from Tools.Directories import resolveFilename, SCOPE_CURRENT_SKIN
 from Tools.LoadPixmap import LoadPixmap
 
@@ -86,52 +87,127 @@ class VirtualKeyBoard(Screen):
                self.keys_list = []
                self.shiftkeys_list = []
                self.lang = language.getLanguage()
+               self.nextLang = None
+               self.shiftMode = False
+               self.text = text
+               self.selectedKey = 0
+               
+               self["country"] = StaticText("")
+               self["header"] = Label(title)
+               self["text"] = Label(self.text)
+               self["list"] = VirtualKeyBoardList([])
+               
+               self["actions"] = ActionMap(["OkCancelActions", "WizardActions", "ColorActions", "KeyboardInputActions", "InputBoxActions", "InputAsciiActions"],
+                       {
+                               "gotAsciiCode": self.keyGotAscii,
+                               "ok": self.okClicked,
+                               "cancel": self.exit,
+                               "left": self.left,
+                               "right": self.right,
+                               "up": self.up,
+                               "down": self.down,
+                               "red": self.backClicked,
+                               "green": self.ok,
+                               "yellow": self.switchLang,
+                               "deleteBackward": self.backClicked,
+                               "back": self.exit                               
+                       }, -2)
+               self.setLanq()
+               self.onExecBegin.append(self.setKeyboardModeAscii)
+               self.onLayoutFinish.append(self.buildVirtualKeyBoard)
+       
+       def switchLang(self):
+               self.lang = self.nextLang
+               self.setLanq()
+               self.buildVirtualKeyBoard()
+
+       def setLanq(self):
                if self.lang == 'de_DE':
                        self.keys_list = [
                                [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ü", u"+"],
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],
+                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ü", u"+"],
+                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],
                                [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
-                               [u"SHIFT", u"SPACE", u"@", u"ß", u"OK"]]
-                       
+                               [u"SHIFT", u"SPACE", u"@", u"ß", u"OK"]]
                        self.shiftkeys_list = [
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"Ü", u"*"],
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"Ü", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],
                                [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
                                [u"SHIFT", u"SPACE", u"?", u"\\", u"OK"]]
-                       
+                       self.nextLang = 'es_ES'
                elif self.lang == 'es_ES':
-                       #still missing keys (u"ùÙ")
+                       #still missing keys (u"ùÙ")
                        self.keys_list = [
                                [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ú", u"+"],
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ó", u"á", u"#"],
+                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ú", u"+"],
+                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ó", u"á", u"#"],
                                [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
-                               [u"SHIFT", u"SPACE", u"@", u"£", u"à", u"é", u"è", u"í", u"ì", u"ñ", u"ò", u"OK"]]
-                       
+                               [u"SHIFT", u"SPACE", u"@", u"Ł", u"ŕ", u"é", u"č", u"í", u"ě", u"ń", u"ň", u"OK"]]
                        self.shiftkeys_list = [
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"Ú", u"*"],
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ó", u"Á", u"'"],
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"Ú", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ó", u"Á", u"'"],
                                [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
-                               [u"SHIFT", u"SPACE", u"?", u"\\", u"À", u"É", u"È",  u"Í", u"Ì", u"Ñ", u"Ò", u"OK"]]
-                               
-               elif self.lang in ('sv_SE', 'fi_FI'):
+                               [u"SHIFT", u"SPACE", u"?", u"\\", u"Ŕ", u"É", u"Č", u"Í", u"Ě", u"Ń", u"Ň", u"OK"]]
+                       self.nextLang = 'fi_FI'
+               elif self.lang == 'fi_FI':
                        self.keys_list = [
                                [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"é", u"+"],
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],
+                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"é", u"+"],
+                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],
                                [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
-                               [u"SHIFT", u"SPACE", u"@", u"ß", u"å", u"OK"]]
-                               
+                               [u"SHIFT", u"SPACE", u"@", u"ß", u"ĺ", u"OK"]]
                        self.shiftkeys_list = [
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"É", u"*"],
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"É", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],
                                [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
-
-                               [u"SHIFT", u"SPACE", u"?", u"\\", u"Å", u"OK"]]
+                               [u"SHIFT", u"SPACE", u"?", u"\\", u"Ĺ", u"OK"]]
+                       self.nextLang = 'sv_SE'
+               elif self.lang == 'sv_SE':
+                       self.keys_list = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"é", u"+"],
+                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],
+                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"@", u"ß", u"ĺ", u"OK"]]
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"É", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],
+                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"?", u"\\", u"Ĺ", u"OK"]]
+                       self.nextLang = 'sk_SK'
+               elif self.lang =='sk_SK':
+                       self.keys_list = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ú", u"+"],
+                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ľ", u"@", u"#"],
+                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"š", u"č", u"ž", u"ý", u"á", u"í", u"é", u"OK"]]
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"ť", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"ň", u"ď", u"'"],
+                               [u"Á", u"É", u"Ď", u"Í", u"Ý", u"Ó", u"Ú", u"Ž", u"Š", u"Č", u"Ť", u"Ň"],
+                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"?", u"\\", u"ä", u"ö", u"ü", u"ô", u"ŕ", u"ĺ", u"OK"]]
+                       self.nextLang = 'cs_CZ'
+               elif self.lang == 'cs_CZ':
+                       self.keys_list = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ú", u"+"],
+                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ů", u"@", u"#"],
+                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"ě", u"š", u"č", u"ř", u"ž", u"ý", u"á", u"í", u"é", u"OK"]]
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"ť", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"ň", u"ď", u"'"],
+                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"?", u"\\", u"Č", u"Ř", u"Š", u"Ž", u"Ú", u"Á", u"É", u"OK"]]
+                       self.nextLang = 'en_EN'
                else:
                        self.keys_list = [
                                [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
@@ -139,36 +215,15 @@ class VirtualKeyBoard(Screen):
                                [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"#", u"\\"],
                                [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
                                [u"SHIFT", u"SPACE", u"OK"]]
-                       
                        self.shiftkeys_list = [
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
                                [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"*"],
                                [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"'", u"?"],
                                [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],
                                [u"SHIFT", u"SPACE", u"OK"]]
-               
-               self.shiftMode = False
-               self.text = text
-               self.selectedKey = 0
-               
-               self["header"] = Label(title)
-               self["text"] = Label(self.text)
-               self["list"] = VirtualKeyBoardList([])
-               
-               self["actions"] = ActionMap(["OkCancelActions", "WizardActions", "ColorActions"],
-                       {
-                               "ok": self.okClicked,
-                               "cancel": self.exit,
-                               "left": self.left,
-                               "right": self.right,
-                               "up": self.up,
-                               "down": self.down,
-                               "red": self.backClicked,
-                               "green": self.ok
-                       }, -2)
-               
-               self.onLayoutFinish.append(self.buildVirtualKeyBoard)
-       
+                       self.lang = 'en_EN'
+                       self.nextLang = 'de_DE'         
+               self["country"].setText(self.lang)
                self.max_key=47+len(self.keys_list[4])
 
        def buildVirtualKeyBoard(self, selectedKey=0):
@@ -192,7 +247,6 @@ class VirtualKeyBoard(Screen):
                                selectedKey -= 12
                
                self["list"].setList(list)
-
        
        def backClicked(self):
                self.text = self["text"].getText()[:-1]
@@ -219,7 +273,7 @@ class VirtualKeyBoard(Screen):
                if text is None:
                        return
 
-               text = text.encode("utf-8")
+               text = text.encode("UTF-8")
 
                if text == "EXIT":
                        self.close(None)
@@ -312,3 +366,30 @@ class VirtualKeyBoard(Screen):
 
        def showActiveKey(self):
                self.buildVirtualKeyBoard(self.selectedKey)
+
+       def inShiftKeyList(self,key):
+               for KeyList in self.shiftkeys_list:
+                       for char in KeyList:
+                               if char == key:
+                                       return True
+               return False
+
+       def keyGotAscii(self):
+               char = str(unichr(getPrevAsciiCode()).encode('utf-8'))
+               if self.inShiftKeyList(char):
+                       self.shiftMode = True
+                       list = self.shiftkeys_list
+               else:
+                       self.shiftMode = False
+                       list = self.keys_list   
+
+               selkey = 0
+               for keylist in list:
+                       for key in keylist:
+                               if key == char:
+                                       self.selectedKey = selkey
+                                       self.okClicked()
+                                       self.showActiveKey()
+                                       return
+                               else:
+                                       selkey += 1
index 63a58ea..252e174 100644 (file)
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: UTF-8 -*-
 from enigma import eTimer
 from Components.Language import language
 
@@ -63,6 +63,17 @@ class NumericalTextInput:
                        self.mapping.append (u"pqrs7PQRS") # 7
                        self.mapping.append (u"tuv8TUV") # 8
                        self.mapping.append (u"wxyz9WXYZ") # 9
+               elif self.lang in ('cs_CZ', 'sk_SK'):
+                       self.mapping.append (u"0,?'+\"()@$!=&*") # 0
+                       self.mapping.append (u" 1.:/-_") # 1
+                       self.mapping.append (u"abc2áäčABCÁÄČ") # 2
+                       self.mapping.append (u"def3ďéěDEFĎÉĚ") # 3
+                       self.mapping.append (u"ghi4íGHIÍ") # 4
+                       self.mapping.append (u"jkl5ľĺJKLĽĹ") # 5
+                       self.mapping.append (u"mno6ňóöôMNOŇÓÖÔ") # 6
+                       self.mapping.append (u"pqrs7řŕšPQRSŘŔŠ") # 7
+                       self.mapping.append (u"tuv8ťúůüTUVŤÚŮÜ") # 8
+                       self.mapping.append (u"wxyz9ýžWXYZÝŽ") # 9
                else:
                        self.mapping.append (u"0,?!&@=*'+\"()$~") # 0
                        self.mapping.append (u" 1.:/-_") # 1
@@ -76,7 +87,8 @@ class NumericalTextInput:
                        self.mapping.append (u"wxyz9WXYZ") # 9
 
        def setUseableChars(self, useable):
-               self.useableChars = useable
+               self.useableChars = unicode(useable)
+               
 
        def getKey(self, num):
                cnt=0