aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/python/Components/Input.py37
-rw-r--r--lib/python/Screens/InputBox.py38
2 files changed, 65 insertions, 10 deletions
diff --git a/lib/python/Components/Input.py b/lib/python/Components/Input.py
index e6e27fab..b140ef51 100644
--- a/lib/python/Components/Input.py
+++ b/lib/python/Components/Input.py
@@ -19,8 +19,8 @@ class Input(VariableText, HTMLComponent, GUIComponent):
self.maxSize = maxSize
self.currPos = 0
self.Text = text
+ self.overwrite = 0
self.update()
-
def update(self):
self.setMarkedPos(self.currPos)
if self.type == self.PIN:
@@ -79,14 +79,45 @@ class Input(VariableText, HTMLComponent, GUIComponent):
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:]
+ 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):
diff --git a/lib/python/Screens/InputBox.py b/lib/python/Screens/InputBox.py
index 9d54135c..558cbc01 100644
--- a/lib/python/Screens/InputBox.py
+++ b/lib/python/Screens/InputBox.py
@@ -14,8 +14,8 @@ class InputBox(Screen):
self["text"] = Label(title)
self["input"] = Input(**kwargs)
-
- self["actions"] = NumberActionMap(["WizardActions", "InputBoxActions", "InputAsciiActions"],
+
+ self["actions"] = NumberActionMap(["WizardActions", "InputBoxActions", "InputAsciiActions", "KeyboardInputActions"],
{
"gotAsciiCode": self.gotAsciiCode,
"ok": self.go,
@@ -23,6 +23,15 @@ class InputBox(Screen):
"left": self.keyLeft,
"right": self.keyRight,
"delete": self.keyDelete,
+ "moveLeft": self.keyLeft,
+ "moveRight": self.keyRight,
+ "moveHome": self.keyHome,
+ "moveEnd": self.keyEnd,
+ "deleteForward": self.keyDelete,
+ "deleteBackward": self.keyBackspace,
+ "tab": self.keyTab,
+ "toggleOverwrite": self.keyInsert,
+ "accept": self.go,
"1": self.keyNumberGlobal,
"2": self.keyNumberGlobal,
"3": self.keyNumberGlobal,
@@ -42,22 +51,37 @@ class InputBox(Screen):
def keyLeft(self):
self["input"].left()
-
+
def keyRight(self):
self["input"].right()
-
+
def keyNumberGlobal(self, number):
self["input"].number(number)
-
+
def keyDelete(self):
self["input"].delete()
-
+
def go(self):
rcinput = eRCInput.getInstance()
rcinput.setKeyboardMode(rcinput.kmNone)
self.close(self["input"].getText())
-
+
def cancel(self):
rcinput = eRCInput.getInstance()
rcinput.setKeyboardMode(rcinput.kmNone)
self.close(None)
+
+ def keyHome(self):
+ self["input"].home()
+
+ def keyEnd(self):
+ self["input"].end()
+
+ def keyBackspace(self):
+ self["input"].deleteBackward()
+
+ def keyTab(self):
+ self["input"].tab()
+
+ def keyInsert(self):
+ self["input"].toggleOverwrite()