From 1bf981b4836dc7d48535fcfcdf0d1a4e6d8ffb84 Mon Sep 17 00:00:00 2001 From: troido Date: Wed, 18 Apr 2018 23:59:40 +0200 Subject: client can now read strings from chat input --- asciifarm/client/display/display.py | 5 ++--- asciifarm/client/display/textinput.py | 29 ++++++++++++----------------- asciifarm/client/display/window.py | 4 ++++ 3 files changed, 18 insertions(+), 20 deletions(-) (limited to 'asciifarm/client/display') 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) + -- cgit