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()