Mercurial > mamba
comparison mamba/widgets/entrybox.py @ 292:feca52afc109
Move editing code around
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 15 Sep 2011 23:55:48 +0200 |
parents | 0975a995113b |
children | 170d4a43c00e |
comparison
equal
deleted
inserted
replaced
291:7f1e8fa3d123 | 292:feca52afc109 |
---|---|
1 import pygame | 1 import pygame |
2 from pygame.constants import SRCALPHA, K_ESCAPE, K_RETURN, K_UP, K_DOWN | 2 from pygame.constants import SRCALPHA, K_ESCAPE, K_RETURN, KEYDOWN |
3 | 3 |
4 from mamba.widgets.base import Container | 4 from mamba.widgets.base import Container |
5 from mamba.constants import DELETE_KEYS | |
6 from mamba.widgets.text import TextWidget, TextButton, EntryTextWidget | 5 from mamba.widgets.text import TextWidget, TextButton, EntryTextWidget |
7 | 6 |
8 | 7 |
9 class EntryBox(Container): | 8 class EntryBox(Container): |
10 | 9 |
24 self.text, color=self.color) | 23 self.text, color=self.color) |
25 self.rect.width = message.rect.width + 100 | 24 self.rect.width = message.rect.width + 100 |
26 self.add(message) | 25 self.add(message) |
27 self.entry_text = EntryTextWidget((self.rect.left + 5, | 26 self.entry_text = EntryTextWidget((self.rect.left + 5, |
28 self.rect.top + message.rect.height + 5), self.value, | 27 self.rect.top + message.rect.height + 5), self.value, |
29 update=self.edit, focus_color=self.entry_color) | 28 focus_color=self.entry_color) |
29 self.add_callback(KEYDOWN, self.edit) | |
30 self.add(self.entry_text) | 30 self.add(self.entry_text) |
31 ok_button = TextButton((self.rect.left + 50, | 31 ok_button = TextButton((self.rect.left + 50, |
32 self.entry_text.rect.bottom), 'Accept') | 32 self.entry_text.rect.bottom), 'Accept') |
33 ok_button.add_callback('clicked', self.close, True) | 33 ok_button.add_callback('clicked', self.close, True) |
34 self.add(ok_button) | 34 self.add(ok_button) |
44 surface.blit(background, self.rect) | 44 surface.blit(background, self.rect) |
45 super(EntryBox, self).draw(surface) | 45 super(EntryBox, self).draw(surface) |
46 | 46 |
47 def close(self, ev, widget, ok): | 47 def close(self, ev, widget, ok): |
48 if self.accept_callback and ok: | 48 if self.accept_callback and ok: |
49 self.value = self.entry_text.value | |
49 if self.accept_callback(self.value): | 50 if self.accept_callback(self.value): |
50 if self.parent: | 51 if self.parent: |
51 self.parent.remove(self) | 52 self.parent.remove(self) |
52 # Don't remove if the accept callback failed | 53 # Don't remove if the accept callback failed |
53 return | 54 return |
54 self.parent.remove(self) | 55 self.parent.remove(self) |
55 | 56 |
56 def edit(self, ev, widget): | 57 def edit(self, ev, widget): |
57 if ev.key == K_ESCAPE: | 58 if ev.key == K_ESCAPE: |
58 self.close(ev, widget, False) | 59 self.close(ev, widget, False) |
60 return True | |
59 elif ev.key == K_RETURN: | 61 elif ev.key == K_RETURN: |
60 self.close(ev, widget, True) | 62 self.close(ev, widget, True) |
61 elif ev.key in DELETE_KEYS: | 63 return True |
62 if self.value: | 64 return False # pass this up to parent |
63 self.value = self.value[:-1] | |
64 self.entry_text.update(self.value) | |
65 elif ev.key in (K_UP, K_DOWN): | |
66 return False # pass this up to parent | |
67 else: | |
68 self.value += ev.unicode | |
69 self.entry_text.update(self.value) | |
70 return True | |
71 | 65 |
72 def grab_focus(self): | 66 def grab_focus(self): |
73 self.entry_text.grab_focus() | 67 self.entry_text.grab_focus() |