summaryrefslogtreecommitdiff
path: root/asciifarm/client/display/messagepad.py
diff options
context:
space:
mode:
authortroido <troido@hotmail.com>2017-10-29 23:31:46 +0100
committertroido <troido@hotmail.com>2017-10-29 23:31:46 +0100
commitd1f84633cff02d9d43c321814364b2c30c4fa3a9 (patch)
treecf7fc926e0bc6c8dad5774d79cdb03f841fb675b /asciifarm/client/display/messagepad.py
parenta8fd6fc77a3c5af06727a68684e61c63553679a8 (diff)
merged recent changes into package branch again
Diffstat (limited to 'asciifarm/client/display/messagepad.py')
-rw-r--r--asciifarm/client/display/messagepad.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/asciifarm/client/display/messagepad.py b/asciifarm/client/display/messagepad.py
new file mode 100644
index 0000000..50d34f5
--- /dev/null
+++ b/asciifarm/client/display/messagepad.py
@@ -0,0 +1,42 @@
+
+import curses
+import textwrap
+
+class MessagePad:
+
+ def __init__(self, maxLines=10):
+ self.maxLines = maxLines
+ self.pad = curses.newpad(maxLines+2, 200)
+ self.changed = False
+ self.lastView = None
+ self.messages = []
+
+ def addMessage(self, message):
+ self.messages.append(message)
+ self.changed = True
+
+ def getHeight(self):
+ return min(len(self.messages), self.maxLines)
+
+ def update(self, screen, x, y, xmax, ymax):
+ if not self.changed and (x, y, xmax, ymax) == self.lastView :
+ return
+ width = xmax - x
+ height = ymax - y # should equal self.getHeight()
+ if height < 1:
+ return
+ lines = []
+ for message in self.messages:
+ lines += textwrap.wrap(message, width)
+ if len(lines) > height:
+ lines = lines[len(lines)-height:]
+ self.pad.erase()
+ self.pad.addstr(0,0,'\n'.join(lines))
+ self.changed = False
+ self.pad.noutrefresh(
+ 0,
+ 0,
+ y,
+ x,
+ ymax-1,
+ xmax-1)