annotate mamba/widgets/messagebox.py @ 227:c068190c0b1d

Cleanup copy-n-paste left-over junk
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 23:06:14 +0200
parents b92f705bd8ea
children af202e15167d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
190
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
1 import pygame
210
b92f705bd8ea Modal dialogs, and focus stealing bugfixes
Stefano Rivera <stefano@rivera.za.net>
parents: 190
diff changeset
2 from pygame.constants import SRCALPHA
190
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
3
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
4 from mamba.widgets.base import Container
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
5 from mamba.widgets.text import TextWidget, TextButton
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
6
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
7
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
8 class MessageBox(Container):
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
9
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
10 def __init__(self, rect, text, post_callback=None, color='white'):
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
11 super(MessageBox, self).__init__(rect)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
12 self.text = text
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
13 self.post_callback = post_callback
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
14 self.color = color
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
15 self.prepare()
210
b92f705bd8ea Modal dialogs, and focus stealing bugfixes
Stefano Rivera <stefano@rivera.za.net>
parents: 190
diff changeset
16 self.modal = True
190
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
17
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
18 def prepare(self):
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
19 cont = TextWidget((0, 0), "Press [OK] or Enter to continue")
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
20 message = TextWidget((0, 0), self.text, color=self.color)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
21 width = max(cont.rect.width, message.rect.width)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
22 if width > message.rect.width:
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
23 cont_pos = (self.rect.left + 5,
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
24 self.rect.top + 10 + message.rect.height)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
25 message_pos = (self.rect.left + 5 + width / 2
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
26 - message.rect.width / 2, self.rect.top + 5)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
27 else:
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
28 message_pos = (self.rect.left + 5, self.rect.top + 5)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
29 cont_pos = (self.rect.left + 5 + width / 2
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
30 - message.rect.width / 2,
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
31 self.rect.top + 10 + message.rect.height)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
32 message.rect.topleft = message_pos
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
33 cont.rect.topleft = cont_pos
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
34 self.add(message)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
35 self.add(cont)
210
b92f705bd8ea Modal dialogs, and focus stealing bugfixes
Stefano Rivera <stefano@rivera.za.net>
parents: 190
diff changeset
36 self.ok_button = ok_button = TextButton((0, 0), 'OK')
190
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
37 ok_pos = (self.rect.left + 5 + width / 2 - ok_button.rect.width / 2,
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
38 cont_pos[1] + 5 + cont.rect.height)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
39 ok_button.rect.topleft = ok_pos
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
40 ok_button.add_callback('clicked', self.close)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
41 self.add(ok_button)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
42
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
43 def draw(self, surface):
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
44 background = pygame.Surface(self.rect.size, SRCALPHA)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
45 background.fill(pygame.Color('gray'))
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
46 surface.blit(background, self.rect)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
47 super(MessageBox, self).draw(surface)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
48
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
49 def close(self, ev, widget):
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
50 self.parent.remove(self)
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
51 if self.post_callback:
c9cee22934be Add messagebox widget
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
52 self.post_callback()
210
b92f705bd8ea Modal dialogs, and focus stealing bugfixes
Stefano Rivera <stefano@rivera.za.net>
parents: 190
diff changeset
53
b92f705bd8ea Modal dialogs, and focus stealing bugfixes
Stefano Rivera <stefano@rivera.za.net>
parents: 190
diff changeset
54 def grab_focus(self):
b92f705bd8ea Modal dialogs, and focus stealing bugfixes
Stefano Rivera <stefano@rivera.za.net>
parents: 190
diff changeset
55 return self.ok_button.grab_focus()