Mercurial > mamba
comparison mamba/habitats/editor.py @ 229:b0ef7eecc67a
Make filename editable
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 14 Sep 2011 23:07:56 +0200 |
parents | d9ee0e50a78f |
children | 09247e08aeda |
comparison
equal
deleted
inserted
replaced
228:d83fd4ebddd3 | 229:b0ef7eecc67a |
---|---|
5 | 5 |
6 from mamba.engine import Habitat, NewHabitatEvent | 6 from mamba.engine import Habitat, NewHabitatEvent |
7 from mamba.widgets.level import EditLevelWidget | 7 from mamba.widgets.level import EditLevelWidget |
8 from mamba.widgets.text import TextWidget, TextButton | 8 from mamba.widgets.text import TextWidget, TextButton |
9 from mamba.widgets.imagebutton import ImageButtonWidget | 9 from mamba.widgets.imagebutton import ImageButtonWidget |
10 #from mamba.widgets.messagebox import MessageBox | |
11 from mamba.widgets.entrybox import EntryBox | |
10 from mamba.level import Level, TILE_MAP, THING_MAP | 12 from mamba.level import Level, TILE_MAP, THING_MAP |
13 from mamba.data import check_level_exists | |
11 from mamba.constants import SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS | 14 from mamba.constants import SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS |
12 | 15 |
13 | 16 |
14 class EditorHabitat(Habitat): | 17 class EditorHabitat(Habitat): |
15 def __init__(self, level_name): | 18 def __init__(self, level_name): |
48 """Draw the editor toolbar""" | 51 """Draw the editor toolbar""" |
49 button_height = 20 | 52 button_height = 20 |
50 button_left = 820 | 53 button_left = 820 |
51 button_padding = 5 | 54 button_padding = 5 |
52 | 55 |
53 filename = TextWidget( | 56 filename = TextButton( |
54 (button_left, button_height), | 57 (button_left, button_height), |
55 'File: %s' % self.level.level_name, color='white') | 58 'File: %s' % self.level.level_name, color='white') |
59 filename.add_callback('clicked', self.edit_filename) | |
56 self.container.add(filename) | 60 self.container.add(filename) |
57 button_height += filename.surface.get_height() + button_padding | 61 button_height += filename.rect.height + button_padding |
58 | 62 |
59 levelname = TextWidget( | 63 levelname = TextWidget( |
60 (button_left, button_height), | 64 (button_left, button_height), |
61 'Level: %s' % self.level.name, color='white') | 65 'Level: %s' % self.level.name, color='white') |
62 self.container.add(levelname) | 66 self.container.add(levelname) |
139 def clear_toolbar(self): | 143 def clear_toolbar(self): |
140 """Remove every non-edit widget from the container""" | 144 """Remove every non-edit widget from the container""" |
141 for widget in self.container.children[:]: | 145 for widget in self.container.children[:]: |
142 if widget is not self.edit_widget: | 146 if widget is not self.edit_widget: |
143 self.container.remove(widget) | 147 self.container.remove(widget) |
148 | |
149 def edit_filename(self, ev, widget): | |
150 editbox = EntryBox((200, 200), 'Enter level filename', | |
151 self.level.level_name, self.check_file) | |
152 self.container.add(editbox) | |
153 editbox.grab_focus() | |
154 | |
155 def check_file(self, new_name): | |
156 if new_name == self.level.level_name: | |
157 return True # No-op change | |
158 if check_level_exists(new_name): | |
159 # TODO: Popup warning | |
160 return False | |
161 self.level.level_name = new_name | |
162 self.clear_toolbar() | |
163 self.setup_toolbar() |