d25fa238 |
import src.console
import collections
class MessageBox(object):
def __init__(self, console, num, pos, event=None):
self.console = console
self.pos = x,y = pos
self.messages = collections.deque([], num)
self.maxlen = -float('inf')
if event is not None:
import src.events
src.events.EventHandler().handle_event(event, self.msg)
def msg(self, msg, *a):
msg %= a
self.messages.append(msg)
self.maxlen = max(self.maxlen, len(msg))
x,y = self.pos
for idx, msg in enumerate(self.messages):
self.console.print_( (x,y+idx), msg.ljust(self.maxlen) )
return False
class TextBox(object):
def __init__(self, console, num, pos, event=None):
self.console = console
self.pos = x,y = pos
self.lines = [''] * num
self.maxlen = -float('inf')
if event is not None:
import src.events
src.events.EventHandler().handle_event(event, self.set_line)
def set_line(self, line, msg, *a):
msg = msg % a
self.maxlen = max(self.maxlen, len(msg))
self.lines[line] = msg
x,y = self.pos
self.console.print_( (x,y+line), msg.ljust(self.maxlen) )
return False
class Label(object):
def __init__(self, console, pos, event=None):
self.console = console
self.pos = x,y = pos
self.line = ''
self.maxlen = -float('inf')
if event is not None:
import src.events
src.events.EventHandler().handle_event(event, self.set_text)
def set_text(self, msg, *a):
msg = msg % a
self.maxlen = max(self.maxlen, len(msg))
self.line = msg
x,y = self.pos
self.console.print_( (x,y), msg.ljust(self.maxlen) )
return False
|