Mercurial > sypikslang
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 |
rev | line source |
---|---|
38 | 1 from pygame import image |
37 | 2 |
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 | 5 |
6 | |
7 class ImageDrawable(Drawable): | |
38 | 8 |
9 def __init__(self, rect, image): | |
10 super(ImageDrawable, self).__init__(rect) | |
11 self.image = image | |
12 | |
13 def draw(self, surface): | |
14 surface.blit(self.image, (self.rect[0], self.rect[1])) | |
15 | |
37 | 16 |
38 | 17 class BigButton(TextButton): |
18 WIDTH = 128 | |
19 HEIGHT = 64 | |
20 BG_IMAGE_NORMAL = image.load(data.filepath('images/button_normal.png')) | |
21 BG_IMAGE_DOWN = image.load(data.filepath('images/button_down.png')) | |
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 | 24 rect1 = (0, 0, self.WIDTH, self.HEIGHT) |
25 n = ImageDrawable(rect1, self.BG_IMAGE_NORMAL) | |
26 d = ImageDrawable(rect1, self.BG_IMAGE_DOWN) | |
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 | 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 | 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 | 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 | 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") |