annotate gamelib/gui.py @ 143:821ecb98e888

some icons and toggle button
author Rizmari Versfeld <rizziepit@gmail.com>
date Fri, 11 May 2012 03:13:22 +0200
parents 3e02a8ccd72b
children 53277724645b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
1 from pygame import image
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
2
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
3 from gamelib import data
143
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
4 from gamelib.gui_base import Drawable, TextButton, font_auto, ToggleButton
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
5
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
6
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
7 class ImageDrawable(Drawable):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
8
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
9 def __init__(self, rect, image):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
10 super(ImageDrawable, self).__init__(rect)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
11 self.image = image
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
12
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
13 def draw(self, surface):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
14 surface.blit(self.image, (self.rect[0], self.rect[1]))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
15
37
9c4bf1f15431 gui stuff
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff changeset
16
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
17 class BigButton(TextButton):
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
18 WIDTH = 128
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
19 HEIGHT = 64
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
20 BG_IMAGE_NORMAL = image.load(data.filepath('images/button_normal.png'))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
21 BG_IMAGE_DOWN = image.load(data.filepath('images/button_down.png'))
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
22
110
ff7c953502d5 Auto-downsize fonts on BigButtons that are too large.
Simon Cross <hodgestar@gmail.com>
parents: 74
diff changeset
23 def __init__(self, pos, text, font=font_auto, shadow=True):
38
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
24 rect1 = (0, 0, self.WIDTH, self.HEIGHT)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
25 n = ImageDrawable(rect1, self.BG_IMAGE_NORMAL)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
26 d = ImageDrawable(rect1, self.BG_IMAGE_DOWN)
7e18a67995f6 fixed pep8 issues
Rizmari Versfeld <rizziepit@gmail.com>
parents: 37
diff changeset
27 rect2 = (pos[0], pos[1], self.WIDTH, self.HEIGHT)
62
38f41d046c6f Make button font a parameter. Tweak indication of points to be spent
Neil Muller <drnlmuller@gmail.com>
parents: 39
diff changeset
28 super(BigButton, self).__init__(rect2, n, d, text, font, shadow)
140
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
29
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
30
143
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
31 class IconButton(ToggleButton):
140
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
32 WIDTH = 64
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
33 HEIGHT = 64
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
34 BG_IMAGE_NORMAL = image.load(data.filepath('images/research_normal.png'))
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
35 BG_IMAGE_DOWN = image.load(data.filepath('images/research_down.png'))
142
3e02a8ccd72b pep8 and pyflakes
Rizmari Versfeld <rizziepit@gmail.com>
parents: 140
diff changeset
36
140
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
37 def __init__(self, pos, name):
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
38 rect = (pos[0], pos[1], self.WIDTH, self.HEIGHT)
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
39 n_icon = image.load(data.filepath('images/icons/%s_normal.png' % name))
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
40 d_icon = image.load(data.filepath('images/icons/%s_down.png' % name))
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
41 n = ImageDrawable(rect, self.BG_IMAGE_NORMAL.copy())
142
3e02a8ccd72b pep8 and pyflakes
Rizmari Versfeld <rizziepit@gmail.com>
parents: 140
diff changeset
42 n.image.blit(n_icon, (0, 0))
140
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
43 d = ImageDrawable(rect, self.BG_IMAGE_DOWN.copy())
142
3e02a8ccd72b pep8 and pyflakes
Rizmari Versfeld <rizziepit@gmail.com>
parents: 140
diff changeset
44 d.image.blit(d_icon, (0, 0))
140
abbceec3cc8b added examples of nodes in main menu
Rizmari Versfeld <rizziepit@gmail.com>
parents: 110
diff changeset
45 rect2 = (pos[0], pos[1], self.WIDTH, self.HEIGHT)
142
3e02a8ccd72b pep8 and pyflakes
Rizmari Versfeld <rizziepit@gmail.com>
parents: 140
diff changeset
46 super(IconButton, self).__init__(rect2, n, d)
143
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
47
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
48
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
49 class RadioButton(IconButton):
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
50 SELECTED_BUTTON = None
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
51
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
52 def on_click(self):
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
53 print(RadioButton.CHECK)
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
54 super(RadioButton, self).on_click()
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
55 if self.toggled:
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
56 if RadioButton.SELECTED_BUTTON:
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
57 RadioButton.SELECTED_BUTTON.on_click()
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
58 RadioButton.SELECTED_BUTTON = self
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
59 print("I am selected")
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
60 else:
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
61 RadioButton.SELECTED_BUTTON = None
821ecb98e888 some icons and toggle button
Rizmari Versfeld <rizziepit@gmail.com>
parents: 142
diff changeset
62 print("I am deselected")