annotate gamelib/popupmenu.py @ 124:97322b78d1c1

Minor style cleanups
author Neil Muller <neil@dip.sun.ac.za>
date Tue, 24 Aug 2010 17:55:47 +0200
parents ca10d7e9a2c1
children fbfd8e748ac0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
1 # popmenu.py
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
2 # Copyright Boomslang team (see COPYING file)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
3 # Popup menu for the game screen
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
4
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
5 from constants import BUTTON_SIZE
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
6
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
7 from albow.menu import Menu
70
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
8 from albow.controls import Button
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
9 from albow.resource import get_font
70
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
10 from pygame.rect import Rect
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
11
116
ca10d7e9a2c1 And CursorWidget-ify the popup menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 84
diff changeset
12 from cursor import CursorWidget
ca10d7e9a2c1 And CursorWidget-ify the popup menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 84
diff changeset
13
ca10d7e9a2c1 And CursorWidget-ify the popup menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 84
diff changeset
14
84
c76f2fad2af5 Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents: 70
diff changeset
15 class PopupMenuButton(Button):
70
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
16
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
17 def __init__(self, text, action):
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
18 Button.__init__(self, text, action)
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
19
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
20 self.font = get_font(16, 'Vera.ttf')
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
21 self.set_rect(Rect(0, 0, BUTTON_SIZE, BUTTON_SIZE))
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
22 self.margin = (BUTTON_SIZE - self.font.get_linesize()) / 2
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
23
124
97322b78d1c1 Minor style cleanups
Neil Muller <neil@dip.sun.ac.za>
parents: 116
diff changeset
24
116
ca10d7e9a2c1 And CursorWidget-ify the popup menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 84
diff changeset
25 class PopupMenu(Menu, CursorWidget):
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
26
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
27 def __init__(self, shell):
116
ca10d7e9a2c1 And CursorWidget-ify the popup menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 84
diff changeset
28 CursorWidget.__init__(self)
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
29 self.shell = shell
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
30 items = [
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
31 ('Resume Game', 'hide'),
69
d4bbb26099cc Some debug object cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
32 ('Quit Game', 'quit'),
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
33 ('Exit to Main Menu', 'main_menu'),
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
34 ]
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
35 # albow.menu.Menu ignores title string
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
36 Menu.__init__(self, None, items)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
37 self.font = get_font(16, 'Vera.ttf')
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
38
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
39 def show_menu(self):
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
40 """Call present, with the correct position"""
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
41 item_height = self.font.get_linesize()
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
42 menu_top = 600 - (len(self.items) * item_height + BUTTON_SIZE)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
43 item = self.present(self.shell, (0, menu_top))
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
44 if item > -1:
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
45 # A menu item needs to be invoked
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
46 self.invoke_item(item)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
47