git.fiddlerwoaroof.com
Raw Blame History
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

class Array2DDisplay(object):
	def __init__(self, console, pos, event=None):
		self.console = console
		self.pos = x,y = pos
		self.maxlen = -float('inf')
		self.array = None
		if event is not None:
			import src.events
			src.events.EventHandler().handle_event(event, self.update)
	def associate(self, arr):
		self.array = arr
		return self
	def update(self):
		ox,oy = self.pos
		for x, row in enumerate(self.array):
			for y, cell in enumerate(row):
				self.console.print_( (ox+x,oy+y), str(cell) )