changeset 204:407d23635343

Add a close button to the detail view
author Neil Muller <neil@dip.sun.ac.za>
date Thu, 26 Aug 2010 11:31:56 +0200
parents 12c66793db8f
children 060e51d4cef1
files gamelib/gamescreen.py
diffstat 1 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gamescreen.py	Thu Aug 26 10:55:02 2010 +0200
+++ b/gamelib/gamescreen.py	Thu Aug 26 11:31:56 2010 +0200
@@ -2,10 +2,11 @@
 # Copyright Boomslang team, 2010 (see COPYING File)
 # Main menu for the game
 
-from albow.controls import Button, Widget
+from albow.controls import Widget
 from albow.layout import Row
 from albow.palette_view import PaletteView
 from albow.screen import Screen
+from albow.resource import get_font
 from pygame import Rect, mouse
 from pygame.color import Color
 from pygame.locals import BLEND_ADD
@@ -15,7 +16,7 @@
 from hand import HandButton
 from popupmenu import PopupMenu, PopupMenuButton
 from state import initial_state, Item, handle_result
-from widgets import MessageDialog
+from widgets import MessageDialog, BoomLabel
 
 
 class InventoryView(PaletteView):
@@ -68,8 +69,7 @@
             self.state.set_tool(None)
             return
         if self.subwidgets:
-            self.remove(self.detail)
-            self.state.set_current_detail(None)
+            self.clear_detail()
             self._mouse_move(event.pos)
         else:
             result = self.state.interact(event.pos)
@@ -109,6 +109,11 @@
         self.add_centered(self.detail)
         self.parent.cursor_highlight(False)
 
+    def clear_detail(self):
+        """Hide the detail view"""
+        self.remove(self.detail)
+        self.state.set_current_detail(None)
+
 
 class DetailWindow(Widget):
     def __init__(self, screen):
@@ -117,12 +122,20 @@
         self.state = screen.state
         self.border_width = 5
         self.border_color = (0, 0, 0)
+        self.close = BoomLabel('Close', font=get_font(20, 'Vera.ttf'))
+        self.close.bg_color = (0, 0, 0)
+        self.add(self.close)
+        self.close.mouse_down = self.close_but
+
+    def close_but(self, e):
+        self.parent.clear_detail()
 
     def set_image_rect(self, rect):
         bw = self.border_width
         self.image_rect = rect
         self.image_rect.topleft = (bw, bw)
         self.set_rect(rect.inflate(bw*2, bw*2))
+        self.close.rect.midbottom = rect.midbottom
 
     def draw(self, surface):
         self.state.draw_detail(surface.subsurface(self.image_rect), self.screen)