# HG changeset patch # User Neil Muller # Date 1316034476 -7200 # Node ID b0ef7eecc67ad332264a50c22d8960b6eaccd2b6 # Parent d83fd4ebddd33488087d9f92abe7cbae1b2d5a58 Make filename editable diff -r d83fd4ebddd3 -r b0ef7eecc67a mamba/habitats/editor.py --- a/mamba/habitats/editor.py Wed Sep 14 23:07:01 2011 +0200 +++ b/mamba/habitats/editor.py Wed Sep 14 23:07:56 2011 +0200 @@ -7,7 +7,10 @@ from mamba.widgets.level import EditLevelWidget from mamba.widgets.text import TextWidget, TextButton from mamba.widgets.imagebutton import ImageButtonWidget +#from mamba.widgets.messagebox import MessageBox +from mamba.widgets.entrybox import EntryBox from mamba.level import Level, TILE_MAP, THING_MAP +from mamba.data import check_level_exists from mamba.constants import SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS @@ -50,11 +53,12 @@ button_left = 820 button_padding = 5 - filename = TextWidget( + filename = TextButton( (button_left, button_height), 'File: %s' % self.level.level_name, color='white') + filename.add_callback('clicked', self.edit_filename) self.container.add(filename) - button_height += filename.surface.get_height() + button_padding + button_height += filename.rect.height + button_padding levelname = TextWidget( (button_left, button_height), @@ -141,3 +145,19 @@ for widget in self.container.children[:]: if widget is not self.edit_widget: self.container.remove(widget) + + def edit_filename(self, ev, widget): + editbox = EntryBox((200, 200), 'Enter level filename', + self.level.level_name, self.check_file) + self.container.add(editbox) + editbox.grab_focus() + + def check_file(self, new_name): + if new_name == self.level.level_name: + return True # No-op change + if check_level_exists(new_name): + # TODO: Popup warning + return False + self.level.level_name = new_name + self.clear_toolbar() + self.setup_toolbar()