# HG changeset patch # User Neil Muller # Date 1316035928 -7200 # Node ID 09247e08aeda5fb2f436f3cdbdbb96eab35faba7 # Parent 5b021e8498b3e0944074d30d5c89679bd50414e4 Refactor edit calling code. Tweak toolbar layout diff -r 5b021e8498b3 -r 09247e08aeda mamba/habitats/editor.py --- a/mamba/habitats/editor.py Wed Sep 14 23:31:36 2011 +0200 +++ b/mamba/habitats/editor.py Wed Sep 14 23:32:08 2011 +0200 @@ -49,26 +49,28 @@ def setup_toolbar(self): """Draw the editor toolbar""" - button_height = 20 + button_height = 5 button_left = 820 - button_padding = 5 + button_padding = 2 filename = TextButton( (button_left, button_height), 'File: %s' % self.level.level_name, color='white') - filename.add_callback('clicked', self.edit_filename) + filename.add_callback('clicked', self.do_edit, + 'Specify filename', self.level.level_name, self.check_file) self.container.add(filename) button_height += filename.rect.height + button_padding - - levelname = TextWidget( - (button_left, button_height), + levelname = TextButton((button_left, button_height), 'Level: %s' % self.level.name, color='white') + levelname.add_callback('clicked', self.do_edit, + 'Edit Level Title', self.level.name, self.update_name) self.container.add(levelname) - button_height += levelname.surface.get_height() + button_padding + button_height += levelname.rect.height + button_padding - tilesetname = TextWidget( - (button_left, button_height), + tilesetname = TextButton((button_left, button_height), 'Tileset: %s' % self.level.tileset.name, color='white') + tilesetname.add_callback('clicked', self.do_edit, 'Edit Tileset', + self.level.tileset.name, self.check_tileset) self.container.add(tilesetname) button_height += tilesetname.surface.get_height() + button_padding # TODO: Add Image widget for the current tool @@ -146,12 +148,20 @@ 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) + def do_edit(self, ev, widget, message, init_value, callback): + editbox = EntryBox((200, 200), message, init_value, callback) self.container.add(editbox) editbox.grab_focus() + def update_name(self, new_name): + self.level.name = new_name + self.clear_toolbar() + self.setup_toolbar() + return True + + def check_tileset(self, new_name): + return False + def check_file(self, new_name): if new_name == self.level.level_name: return True # No-op change @@ -161,3 +171,4 @@ self.level.level_name = new_name self.clear_toolbar() self.setup_toolbar() + return True