from GUIComponent import *
from VariableText import *
-from enigma import eLabel, isUTF8, convertUTF8DVB, convertDVBUTF8
+from enigma import eLabel
from Tools.NumericalTextInput import NumericalTextInput
-class Input(VariableText, HTMLComponent, GUIComponent):
+class Input(VariableText, HTMLComponent, GUIComponent, NumericalTextInput):
TEXT = 0
PIN = 1
- NUMBER = 2
-
+ NUMBER = 2
+
def __init__(self, text="", maxSize = False, type = TEXT):
+ NumericalTextInput.__init__(self, self.right)
GUIComponent.__init__(self)
VariableText.__init__(self)
- self.numericalTextInput = NumericalTextInput(self.right)
self.type = type
self.maxSize = maxSize
self.currPos = 0
- self.Text = text
- self.update()
+ self.overwrite = 0
+ self.setText(text)
+
+ def __len__(self):
+ return len(self.text)
def update(self):
self.setMarkedPos(self.currPos)
if self.type == self.PIN:
- self.message = "*" * len(self.Text)
+ self.text = "*" * len(self.Text)
else:
- self.message = convertDVBUTF8(self.Text, 0)
- if self.instance:
- self.instance.setText(self.message)
+ self.text = self.Text.encode("utf-8")
def setText(self, text):
if not len(text):
self.currPos = 0
- self.Text = ""
- elif isUTF8(text):
- self.Text = convertUTF8DVB(text, 0)
+ self.Text = u""
else:
- self.Text = text
+ try:
+ self.Text = text.decode("utf-8")
+ except UnicodeDecodeError:
+ print "utf8 kaputt!"
+ self.Text = text
self.update()
def getText(self):
- return convertDVBUTF8(self.Text, 0)
+ return self.Text.encode("utf-8")
def createWidget(self, parent):
return eLabel(parent, self.currPos)
newNumber = str(int(self.Text[self.currPos]) - 1)
self.Text = self.Text[0:self.currPos] + newNumber + self.Text[self.currPos + 1:]
self.update()
+
+ def home(self):
+ self.currPos = 0
+ self.update()
+
+ def end(self):
+ self.currPos = len(self.Text) - 1
+ self.update()
+
+ def tab(self):
+ if self.currPos == len(self.Text) - 1:
+ self.Text=self.Text+ " "
+ self.end()
+ else:
+ self.Text = self.Text[0:self.currPos] + " " + self.Text[self.currPos:]
+ self.update()
def delete(self):
self.Text = self.Text[:self.currPos] + self.Text[self.currPos + 1:]
self.update()
+ def toggleOverwrite(self):
+ if self.overwrite==1:
+ self.overwrite=0
+ else:
+ self.overwrite=1
+ self.update()
+
+ def deleteBackward(self):
+ self.Text = self.Text[:self.currPos - 1] + self.Text[self.currPos:]
+ self.left()
+ self.update()
+
def handleAscii(self, code):
- newChar = chr(code)
- self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos + 1:]
+ newChar = unichr(code)
+ if self.overwrite==1:
+ self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos + 1:]
+ else:
+ self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos:]
self.right()
def number(self, number):
if self.type == self.TEXT:
- newChar = self.numericalTextInput.getKey(number)
+ newChar = self.getKey(number)
elif self.type == self.PIN or self.type == self.NUMBER:
newChar = str(number)
self.Text = self.Text[0:self.currPos] + newChar + self.Text[self.currPos + 1:]