From 9ee677665df576fba1713544c761c3ef76dbdadc Mon Sep 17 00:00:00 2001 From: troido Date: Wed, 3 Jan 2018 18:30:14 +0100 Subject: made scrolling of chat log possible --- asciifarm/client/display/messagepad.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'asciifarm/client/display/messagepad.py') diff --git a/asciifarm/client/display/messagepad.py b/asciifarm/client/display/messagepad.py index cae66a4..88ac3b4 100644 --- a/asciifarm/client/display/messagepad.py +++ b/asciifarm/client/display/messagepad.py @@ -8,24 +8,50 @@ class MessagePad(): self.changed = False self.messages = [] self.widget = None + self.scrolledBack = 0 def setWidget(self, widget): self.widget = widget def addMessage(self, message): self.messages.append(message) + if self.scrolledBack: + self.scrolledBack += 1 self.widget.change() + def scroll(self, amount, relative=True): + if relative: + self.scrolledBack += amount + else: + self.scrolledBack = amount + self.scrolledBack = max(self.scrolledBack, 0) + self.widget.update() + self.widget.doUpdate() + def update(self): win = self.widget.getWin() width, height = win.getSize() if height < 1: return lines = [] - for message in self.messages: + messages = self.messages + for message in messages: lines += textwrap.wrap(message, width) + self.scrolledBack = max(min(self.scrolledBack, len(lines)-height), 0) + moreDown = False + if self.scrolledBack > 0: + lines = lines[:-self.scrolledBack] + moreDown = True + moreUp = False if len(lines) > height: + moreUp = True lines = lines[len(lines)-height:] + elif len(lines) < height: + lines = (height-len(lines)) * [""] + lines win.erase() win.addLine((0,0),'\n'.join(lines)) + if moreUp: + win.addLine((width-1, 0), '-') + if moreDown: + win.addLine((width-1, height-1), '+') win.noutrefresh() -- cgit