# HG changeset patch # User Jeremy Thurgood # Date 1329059205 -7200 # Node ID 12149ea1c18ec930942a8aaf1b968d7e4dab85ee # Parent d1c1253fcd77ae5e48e254b9055ceede41c6d713 Menu button. diff -r d1c1253fcd77 -r 12149ea1c18e pyntnclick/gamescreen.py --- a/pyntnclick/gamescreen.py Sun Feb 12 16:53:40 2012 +0200 +++ b/pyntnclick/gamescreen.py Sun Feb 12 17:06:45 2012 +0200 @@ -242,24 +242,26 @@ self.bg_color = (31, 31, 31) self.left = self.rect.left - # TODO: Menu button - # XXX: self.popup_menu = PopupMenu(self) - # XXX: self.menubutton = PopupMenuButton('Menu', - # action=self.popup_menu.show_menu) + self.menu_button = self.add_tool( + 0, TextButton, gd, "Menu", fontname="VeraBd.ttf", color="red", + padding=2, border=0) + self.menu_button.add_callback(MOUSEBUTTONDOWN, self.menu_callback) hand_image = gd.resource.get_image('items', 'hand.png') self.hand_button = self.add_tool( - hand_image.get_width(), ImageButtonWidget, gd, hand_image) - self.hand_button.add_callback(MOUSEBUTTONDOWN, self.hand_pressed) + None, ImageButtonWidget, gd, hand_image) + self.hand_button.add_callback(MOUSEBUTTONDOWN, self.hand_callback) self.inventory = self.add_tool( self.rect.width - self.left, InventoryView, gd, screen) def add_tool(self, width, cls, *args, **kw): - rect = Rect((self.left, self.rect.top), (width, self.rect.height)) + rect = (self.left, self.rect.top) + if width is not None: + rect = Rect(rect, (width, self.rect.height)) tool = cls(rect, *args, **kw) self.add(tool) - self.left += width + self.left += tool.rect.width return tool def draw(self, surface): @@ -268,9 +270,12 @@ surface.blit(bg, self.rect) super(ToolBar, self).draw(surface) - def hand_pressed(self, event, widget): + def hand_callback(self, event, widget): self.inventory.unselect() + def menu_callback(self, event, widget): + self.screen.change_screen('menu') + class GameScreen(CursorScreen): @@ -313,14 +318,6 @@ if event.key == K_ESCAPE: self.change_screen('menu') - # albow callback: - def main_menu_cmd(self): - self.shell.show_screen(self.shell.menu_screen) - - # albow callback: - def quit_cmd(self): - self.shell.quit() - class DefEndScreen(Screen): """A placeholder 'Game Over' screen so people can get started easily""" diff -r d1c1253fcd77 -r 12149ea1c18e pyntnclick/widgets/text.py --- a/pyntnclick/widgets/text.py Sun Feb 12 16:53:40 2012 +0200 +++ b/pyntnclick/widgets/text.py Sun Feb 12 17:06:45 2012 +0200 @@ -86,10 +86,13 @@ self.rect.height = max(self.rect.height, height) self.surface = pygame.Surface(self.rect.size, SRCALPHA) self.surface.fill(0) - self.surface.blit(text, text.get_rect().move(self.padding, - self.padding)) - pygame.draw.rect(self.surface, color, self.surface.get_rect(), - self.border) + offset = ( + (self.rect.width - width) / 2 + self.padding, + (self.rect.height - height) / 2 + self.padding) + self.surface.blit(text, text.get_rect().move(offset)) + if self.border: + pygame.draw.rect(self.surface, color, self.surface.get_rect(), + self.border) def draw(self, surface): super(TextButton, self).draw(surface)