annotate gamelib/gui_base.py @ 69:626b1eaec13c

fucking pep8
author Rizmari Versfeld <rizziepit@gmail.com>
date Tue, 08 May 2012 23:08:51 +0200
parents 7309392d9ca9
children 442a1bf9b14e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
1 import pygame
39
d82d3e54a4ef fixed more pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 38
diff changeset
2 from pygame import Surface, Rect
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
3 from pygame.font import Font
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
4
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
5 from gamelib import data
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
6
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
7
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
8 # different font sizes
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
9 pygame.font.init()
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
10 font_small = Font(data.filepath('fonts/DejaVuSans.ttf'), 10)
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
11 font_medium = Font(data.filepath('fonts/DejaVuSans.ttf'), 14)
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
12 font_large = Font(data.filepath('fonts/DejaVuSans.ttf'), 18)
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
13
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
14
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
15 class Drawable(object):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
16
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
17 def __init__(self, rect):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
18 if isinstance(rect, Rect):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
19 self.rect = rect
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
20 else:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
21 self.rect = Rect(rect[0], rect[1], rect[2], rect[3])
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
22
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
23 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
24 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
25
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
26
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
27 class Clickable(object):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
28
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
29 def on_mouse_down(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
30 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
31
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
32 def on_mouse_up(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
33 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
34
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
35 def on_mouse_move(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
36 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
37
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
38 def on_mouse_cancel(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
39 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
40
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
41 def on_click(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
42 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
43
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
44
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
45 class ContainerView(Drawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
46
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
47 def __init__(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
48 self.children = []
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
49
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
50 def add_child(self, child):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
51 self.children.append(child)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
52
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
53 def remove_child(self, child):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
54 self.children.remove(child)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
55
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
56 def get_child_by_pos(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
57 for child in self.children:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
58 if child.rect.collidepoint(pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
59 if isinstance(child, ContainerView):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
60 # calculates position relative to child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
61 x = pos[0] - child.rect[0]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
62 y = pos[1] - child.rect[1]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
63 return child.get_child_by_pos((x, y))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
64 else:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
65 return child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
66
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
67 def draw_children(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
68 for child in self.children:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
69 child.draw(surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
70
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
71
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
72 class Window(Clickable, ContainerView):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
73
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
74 def __init__(self, screen):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
75 super(Window, self).__init__()
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
76 self.surface = Surface((screen.get_width(), screen.get_height()))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
77 self.background_colour = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
78 self.background_image = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
79 self.pressed_child = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
80
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
81 def on_mouse_down(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
82 child = self.get_child_by_pos(pos)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
83 if isinstance(child, Clickable):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
84 # calculates position relative to child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
85 x = pos[0] - child.rect[0]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
86 y = pos[1] - child.rect[1]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
87 child.on_mouse_down((x, y))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
88 self.pressed_child = child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
89
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
90 def on_mouse_up(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
91 if self.pressed_child:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
92 child = self.pressed_child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
93 x = pos[0] - child.rect[0]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
94 y = pos[1] - child.rect[1]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
95 child.on_mouse_up((x, y))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
96 self.pressed_child = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
97
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
98 def on_mouse_move(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
99 if self.pressed_child:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
100 if self.pressed_child != self.get_child_by_pos(pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
101 self.pressed_child.on_mouse_cancel()
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
102 self.pressed_child = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
103
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
104 def draw(self, screen):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
105 if self.background_colour:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
106 self.surface.fill(self.background_colour)
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
107 else:
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
108 self.surface.fill((0, 0, 0, 255))
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
109 if self.background_image:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
110 self.surface.blit(self.background_image, (0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
111 self.draw_children(self.surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
112 screen.blit(self.surface, (0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
113
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
114
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
115 class StateDrawable(Drawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
116
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
117 def __init__(self, rect):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
118 super(StateDrawable, self).__init__(rect)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
119 self.state = -1
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
120 self.states = {}
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
121 self.drawables = []
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
122 self.surface = Surface((self.rect[2], self.rect[3]))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
123
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
124 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
125 if self.state != -1 and self.drawables[self.state]:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
126 self.drawables[self.state].draw(surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
127
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
128 def add_state(self, state_name, drawable):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
129 self.states[state_name] = len(self.drawables)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
130 self.drawables.append(drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
131
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
132 def set_state(self, state_name):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
133 self.state = self.states[state_name]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
134
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
135
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
136 class Button(Clickable, StateDrawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
137
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
138 def __init__(self, rect, normal_drawable, down_drawable):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
139 super(Button, self).__init__(rect)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
140 self.add_state('NORMAL', normal_drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
141 self.add_state('DOWN', down_drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
142 self.set_state('NORMAL')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
143
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
144 def on_mouse_down(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
145 self.set_state('DOWN')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
146
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
147 def on_mouse_up(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
148 self.set_state('NORMAL')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
149 self.on_click()
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
150
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
151 def on_mouse_cancel(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
152 self.set_state('NORMAL')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
153
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
154
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
155 class TextButton(Button):
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
156
62
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 55
diff changeset
157 def __init__(self, rect, normal_drawable, down_drawable, text, font,
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 55
diff changeset
158 shadow):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
159 super(TextButton, self).__init__(rect, normal_drawable, down_drawable)
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
160 self.surface = Surface((rect[2], rect[3]), pygame.SRCALPHA)
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
161 self.text = text
62
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 55
diff changeset
162 self.font = font
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 55
diff changeset
163 self.shadow = shadow
55
86d83dcb7d42 Make text drawing easier to poke at for subclasses
Neil Muller <drnlmuller@gmail.com>
parents: 39
diff changeset
164 self._draw_text()
86d83dcb7d42 Make text drawing easier to poke at for subclasses
Neil Muller <drnlmuller@gmail.com>
parents: 39
diff changeset
165
86d83dcb7d42 Make text drawing easier to poke at for subclasses
Neil Muller <drnlmuller@gmail.com>
parents: 39
diff changeset
166 def _draw_text(self):
62
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 55
diff changeset
167 self.font.set_bold(True)
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
168 self.text_surface = self.font.render(self.text, True, (0, 0, 0))
69
626b1eaec13c fucking pep8
Rizmari Versfeld <rizziepit@gmail.com>
parents: 68
diff changeset
169 size = self.font.size(self.text)
62
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 55
diff changeset
170 if self.shadow:
69
626b1eaec13c fucking pep8
Rizmari Versfeld <rizziepit@gmail.com>
parents: 68
diff changeset
171 s = self.font.render(self.text, True, (128, 128, 128))
626b1eaec13c fucking pep8
Rizmari Versfeld <rizziepit@gmail.com>
parents: 68
diff changeset
172 temp_surface = Surface((s.get_width() + 2, s.get_width() + 2), pygame.SRCALPHA)
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
173 temp_surface.fill((255, 255, 255, 0))
69
626b1eaec13c fucking pep8
Rizmari Versfeld <rizziepit@gmail.com>
parents: 68
diff changeset
174 temp_surface.blit(s, (2, 2))
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
175 temp_surface.blit(self.text_surface, (0, 0))
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
176 self.text_surface = temp_surface
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
177 size = [s + 2 for s in size]
55
86d83dcb7d42 Make text drawing easier to poke at for subclasses
Neil Muller <drnlmuller@gmail.com>
parents: 39
diff changeset
178 self.text_offset = ((self.rect[2] - size[0]) / 2,
86d83dcb7d42 Make text drawing easier to poke at for subclasses
Neil Muller <drnlmuller@gmail.com>
parents: 39
diff changeset
179 (self.rect[3] - size[1]) / 2)
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
180 self.font.set_bold(False)
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
181
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
182 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
183 self.surface.fill((0, 0, 0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
184 super(TextButton, self).draw(self.surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
185 self.surface.blit(self.text_surface, self.text_offset)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
186 surface.blit(self.surface, self.rect)
64
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
187
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
188
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
189 class TextLabel(Drawable):
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
190
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
191 def __init__(self, rect, text, font, color):
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
192 super(TextLabel, self).__init__(rect)
68
7309392d9ca9 fixed widget drawing bugs
Rizmari Versfeld <rizziepit@gmail.com>
parents: 64
diff changeset
193 self.surface = Surface((rect[2], rect[3]), pygame.SRCALPHA)
64
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
194 self.text = text
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
195 self.font = font
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
196 self.color = color
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
197 self._draw_text()
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
198
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
199 def _draw_text(self):
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
200 self.text_surface = self.font.render(self.text, True, self.color)
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
201 size = self.font.size(self.text)
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
202 # We centre vertically, but start at left edge
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
203 self.text_offset = (0, (self.rect[3] - size[1]) / 2)
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
204
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
205 def draw(self, surface):
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
206 self.surface.fill((0, 0, 0, 0))
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
207 super(TextLabel, self).draw(self.surface)
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
208 self.surface.blit(self.text_surface, self.text_offset)
24f0707695b4 Add text label
Neil Muller <drnlmuller@gmail.com>
parents: 62
diff changeset
209 surface.blit(self.surface, self.rect)