annotate gamelib/gui_base.py @ 38:7e18a67995f6

fixed pep8 issues
author Rizmari Versfeld <rizziepit@gmail.com>
date Mon, 07 May 2012 00:13:11 +0200
parents 9c4bf1f15431
children d82d3e54a4ef
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
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
2 from pygame.locals import *
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
3 from pygame import Surface, Rect, Color
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
4 from pygame.font import Font
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
5
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
6 from gamelib import data
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
7
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
8
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
9 # different font sizes
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
10 pygame.font.init()
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
11 font_small = Font(data.filepath('fonts/DejaVuSans.ttf'), 10)
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
12 font_medium = Font(data.filepath('fonts/DejaVuSans.ttf'), 14)
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
13 font_large = Font(data.filepath('fonts/DejaVuSans.ttf'), 18)
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
14
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
15
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
16 class Drawable(object):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
17
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
18 def __init__(self, rect):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
19 if isinstance(rect, Rect):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
20 self.rect = rect
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
21 else:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
22 self.rect = Rect(rect[0], rect[1], rect[2], rect[3])
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
23
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
24 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
25 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
26
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
27
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
28 class Clickable(object):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
29
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
30 def on_mouse_down(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
31 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
32
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
33 def on_mouse_up(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
34 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
35
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
36 def on_mouse_move(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
37 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
39 def on_mouse_cancel(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
40 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
41
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
42 def on_click(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
43 pass
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
44
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
45
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
46 class ContainerView(Drawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
47
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
48 def __init__(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
49 self.children = []
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
50
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
51 def add_child(self, child):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
52 self.children.append(child)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
53
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
54 def remove_child(self, child):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
55 self.children.remove(child)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
56
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
57 def get_child_by_pos(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
58 for child in self.children:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
59 if child.rect.collidepoint(pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
60 if isinstance(child, ContainerView):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
61 # calculates position relative to child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
62 x = pos[0] - child.rect[0]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
63 y = pos[1] - child.rect[1]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
64 return child.get_child_by_pos((x, y))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
65 else:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
66 return child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
67
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
68 def draw_children(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
69 for child in self.children:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
70 child.draw(surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
71
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
72
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
73 class Window(Clickable, ContainerView):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
74
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
75 def __init__(self, screen):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
76 super(Window, self).__init__()
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
77 self.surface = Surface((screen.get_width(), screen.get_height()))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
78 self.background_colour = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
79 self.background_image = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
80 self.pressed_child = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
81
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
82 def on_mouse_down(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
83 child = self.get_child_by_pos(pos)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
84 if isinstance(child, Clickable):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
85 # calculates position relative to child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
86 x = pos[0] - child.rect[0]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
87 y = pos[1] - child.rect[1]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
88 child.on_mouse_down((x, y))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
89 self.pressed_child = child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
90
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
91 def on_mouse_up(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
92 if self.pressed_child:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
93 child = self.pressed_child
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
94 x = pos[0] - child.rect[0]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
95 y = pos[1] - child.rect[1]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
96 child.on_mouse_up((x, y))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
97 self.pressed_child = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
98
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
99 def on_mouse_move(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
100 if self.pressed_child:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
101 if self.pressed_child != self.get_child_by_pos(pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
102 self.pressed_child.on_mouse_cancel()
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
103 self.pressed_child = None
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
104
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
105 def draw(self, screen):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
106 if self.background_colour:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
107 self.surface.fill(self.background_colour)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
108 if self.background_image:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
109 self.surface.blit(self.background_image, (0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
110 self.draw_children(self.surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
111 screen.blit(self.surface, (0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
112
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
113
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
114 class StateDrawable(Drawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
115
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
116 def __init__(self, rect):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
117 super(StateDrawable, self).__init__(rect)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
118 self.state = -1
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
119 self.states = {}
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
120 self.drawables = []
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
121 self.surface = Surface((self.rect[2], self.rect[3]))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
122
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
123 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
124 if self.state != -1 and self.drawables[self.state]:
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
125 self.drawables[self.state].draw(surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
126
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
127 def add_state(self, state_name, drawable):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
128 self.states[state_name] = len(self.drawables)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
129 self.drawables.append(drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
130
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
131 def set_state(self, state_name):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
132 self.state = self.states[state_name]
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
133
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
134
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
135 class Button(Clickable, StateDrawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
136
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
137 def __init__(self, rect, normal_drawable, down_drawable):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
138 super(Button, self).__init__(rect)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
139 self.add_state('NORMAL', normal_drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
140 self.add_state('DOWN', down_drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
141 self.set_state('NORMAL')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
142
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
143 def on_mouse_down(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
144 self.set_state('DOWN')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
145
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
146 def on_mouse_up(self, pos):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
147 self.set_state('NORMAL')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
148 self.on_click()
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
149
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
150 def on_mouse_cancel(self):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
151 self.set_state('NORMAL')
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
152
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
153
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
154 class TextButton(Button):
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
155
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
156 def __init__(self, rect, normal_drawable, down_drawable, text):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
157 super(TextButton, self).__init__(rect, normal_drawable, down_drawable)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
158 self.surface = Surface((rect[2], rect[3]))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
159 self.text = text
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
160 font_large.set_bold(True)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
161 self.text_surface = font_large.render(self.text, True, (128, 128, 128))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
162 shadow = font_large.render(self.text, True, (0, 0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
163 font_large.set_bold(False)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
164 self.text_surface.blit(shadow, (-2, -2))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
165 size = font_large.size(self.text)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
166 self.text_offset = ((rect[2] - size[0]) / 2, (rect[3] - size[1]) / 2)
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
167
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
168 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
169 self.surface.fill((0, 0, 0, 0))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
170 super(TextButton, self).draw(self.surface)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
171 self.surface.blit(self.text_surface, self.text_offset)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
172 surface.blit(self.surface, self.rect)