summaryrefslogtreecommitdiff
path: root/asciifarm/client/display
diff options
context:
space:
mode:
Diffstat (limited to 'asciifarm/client/display')
-rw-r--r--asciifarm/client/display/display.py5
-rw-r--r--asciifarm/client/display/textinput.py29
-rw-r--r--asciifarm/client/display/window.py4
3 files changed, 18 insertions, 20 deletions
diff --git a/asciifarm/client/display/display.py b/asciifarm/client/display/display.py
index 8056a14..85ee4b1 100644
--- a/asciifarm/client/display/display.py
+++ b/asciifarm/client/display/display.py
@@ -126,9 +126,8 @@ class Display:
"""This returns the character belonging to some spritename. This does not read a character"""
return self.characters.get(sprite, self.defaultChar)
- def getString(self):
- """This does actually read input"""
- return str(self.getWidget("textinput").getString(), "utf-8")
+ def setInputString(self, string, cursor):
+ self.getWidget("textinput").setText(string, cursor)
def update(self):
changed = False
diff --git a/asciifarm/client/display/textinput.py b/asciifarm/client/display/textinput.py
index 621214e..38d69ed 100644
--- a/asciifarm/client/display/textinput.py
+++ b/asciifarm/client/display/textinput.py
@@ -4,28 +4,23 @@ import curses
class TextInput:
def __init__(self):
- self.reading = False
self.widget = None
+ self.text = ""
+ self.cursor = 0
def setWidget(self, widget):
self.widget = widget
- def getString(self):
+ def setText(self, text, cursor):
+ self.text = text
+ self.cursor = cursor
+ self.widget.change()
+
+ def update(self):
win = self.widget.getWin()
- if not win:
- return None
- self.reading = True
- curses.echo()
- curses.nocbreak()
- win.addLine((0, 0), ">")
- string = win.getStr((2,0))
- curses.noecho()
- curses.cbreak()
- self.reading = False
+ width, height = win.getSize()
win.erase()
+ win.addLine((0, 0), self.text)
+ if self.cursor >= 0 and self.cursor <= len(self.text):
+ win.setAttr((self.cursor, 0), curses.A_REVERSE)
win.noutrefresh()
- self.widget.doUpdate()
- return string
-
- def update(self):
- pass
diff --git a/asciifarm/client/display/window.py b/asciifarm/client/display/window.py
index f54fee3..7e19942 100644
--- a/asciifarm/client/display/window.py
+++ b/asciifarm/client/display/window.py
@@ -71,5 +71,9 @@ class Window:
x, y = pos
return self.win.getch(y, x)
+ def setAttr(self, pos, attr, num=1):
+ x, y = pos
+ self.win.chgat(y, x, num, attr)
+