git.fiddlerwoaroof.com
Browse code

initial gui library parts

edwlan authored on 01/08/2013 06:00:07
Showing 2 changed files
2 2
new file mode 100644
... ...
@@ -0,0 +1,56 @@
1
+import src.console
2
+import collections
3
+
4
+class MessageBox(object):
5
+	def __init__(self, console, num, pos, event=None):
6
+		self.console = console
7
+		self.pos = x,y = pos
8
+		self.messages = collections.deque([], num)
9
+		self.maxlen = -float('inf')
10
+		if event is not None:
11
+			import src.events
12
+			src.events.EventHandler().handle_event(event, self.msg)
13
+
14
+	def msg(self, msg, *a):
15
+		msg %= a
16
+		self.messages.append(msg)
17
+		self.maxlen = max(self.maxlen, len(msg))
18
+		x,y = self.pos
19
+		for idx, msg in enumerate(self.messages):
20
+			self.console.print_( (x,y+idx), msg.ljust(self.maxlen) )
21
+		return False
22
+
23
+class TextBox(object):
24
+	def __init__(self, console, num, pos, event=None):
25
+		self.console = console
26
+		self.pos = x,y = pos
27
+		self.lines = [''] * num
28
+		self.maxlen = -float('inf')
29
+		if event is not None:
30
+			import src.events
31
+			src.events.EventHandler().handle_event(event, self.set_line)
32
+
33
+	def set_line(self, line, msg, *a):
34
+		msg = msg % a
35
+		self.maxlen = max(self.maxlen, len(msg))
36
+		self.lines[line] = msg
37
+		x,y = self.pos
38
+		self.console.print_( (x,y+line), msg.ljust(self.maxlen) )
39
+		return False
40
+
41
+class Label(object):
42
+	def __init__(self, console, pos, event=None):
43
+		self.console = console
44
+		self.pos = x,y = pos
45
+		self.line = ''
46
+		self.maxlen = -float('inf')
47
+		if event is not None:
48
+			import src.events
49
+			src.events.EventHandler().handle_event(event, self.set_text)
50
+	def set_text(self, msg, *a):
51
+		msg = msg % a
52
+		self.maxlen = max(self.maxlen, len(msg))
53
+		self.line = msg
54
+		x,y = self.pos
55
+		self.console.print_( (x,y), msg.ljust(self.maxlen) )
56
+		return False