annotate gamelib/popupmenu.py @ 84:c76f2fad2af5

Draw CursorWidget on top of StateWidget
author Stefano Rivera <stefano@rivera.za.net>
date Mon, 23 Aug 2010 23:58:11 +0200
parents 213e47dea4d0
children ca10d7e9a2c1
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
84
c76f2fad2af5 Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents: 70
diff changeset
12 class PopupMenuButton(Button):
70
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
13
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
14 def __init__(self, text, action):
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
15 Button.__init__(self, text, action)
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 self.font = get_font(16, 'Vera.ttf')
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
18 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
19 self.margin = (BUTTON_SIZE - self.font.get_linesize()) / 2
213e47dea4d0 Funkier cursor handling
Neil Muller <neil@dip.sun.ac.za>
parents: 69
diff changeset
20
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
21 class PopupMenu(Menu):
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
22
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
23 def __init__(self, shell):
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
24 self.shell = shell
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
25 items = [
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
26 ('Resume Game', 'hide'),
69
d4bbb26099cc Some debug object cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 58
diff changeset
27 ('Quit Game', 'quit'),
58
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
28 ('Exit to Main Menu', 'main_menu'),
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
29 ]
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
30 # albow.menu.Menu ignores title string
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
31 Menu.__init__(self, None, items)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
32 self.font = get_font(16, 'Vera.ttf')
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
33
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
34 def show_menu(self):
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
35 """Call present, with the correct position"""
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
36 item_height = self.font.get_linesize()
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
37 menu_top = 600 - (len(self.items) * item_height + BUTTON_SIZE)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
38 item = self.present(self.shell, (0, menu_top))
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
39 if item > -1:
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
40 # A menu item needs to be invoked
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
41 self.invoke_item(item)
9048cf43f613 Popup menu
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
42