Mercurial > mamba
diff mamba/habitats/editor.py @ 337:170d4a43c00e
Don't edit the level when interacting with dialogs
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Fri, 16 Sep 2011 21:47:56 +0200 |
parents | 00c36ff53de9 |
children | 5bf35267ddc0 |
line wrap: on
line diff
--- a/mamba/habitats/editor.py Fri Sep 16 21:35:10 2011 +0200 +++ b/mamba/habitats/editor.py Fri Sep 16 21:47:56 2011 +0200 @@ -25,6 +25,7 @@ def __init__(self, level): super(EditorHabitat, self).__init__(EDIT_SCREEN) self.level = level + self.container.paused = False self.edit_widget = EditLevelWidget(self.level) self.container.add(self.edit_widget) self.container.add_callback(KEYDOWN, self.keydown_event) @@ -54,9 +55,11 @@ if ev.key in ESCAPE_KEYS: from mamba.habitats.mainmenu import MainMenu NewHabitatEvent.post(MainMenu()) + return True elif ev.key == K_1: # Activate floor button self.floor_button.forced_click() + return True def setup_toolbar(self): """Draw the editor toolbar""" @@ -186,6 +189,7 @@ self.edit_widget.set_tool(new_tool) self.current_tool.text = 'Tool: %s' % text self.current_tool.prepare() + return True def save(self, ev, widget): message = None @@ -194,15 +198,19 @@ elif self.level.level_name in RESERVED_NAMES: message = MessageBox((300, 300), 'Reserved level name') if message: + self.container.paused = True self.container.add(message) message.grab_focus() return self.level.save_level() + return True def new(self, ev, widget): self.load_level(ev, widget, 'blank') + return True def load(self, ev, widget): + self.container.paused = True levels = get_level_list() load_list = [] for level_name in levels: @@ -214,6 +222,7 @@ load_dialog = ListBox((200, 200), 'Select Level', load_list) self.container.add(load_dialog) load_dialog.grab_focus() + return True def load_level(self, ev, widget, level_name): try: @@ -221,6 +230,7 @@ except (IOError, InvalidMapError, pygame.error), error: message = MessageBox((300, 300), 'Loading Level Failed: %s' % error, color='red') + self.container.paused = True self.container.add(message) message.grab_focus() return False @@ -228,6 +238,7 @@ self.level = new_level if level_name in RESERVED_NAMES: self.level.level_name = '' # Special case for new level + self.container.paused = False self.edit_widget = EditLevelWidget(self.level) self.container.add(self.edit_widget) self.clear_toolbar() @@ -235,8 +246,10 @@ def change_toolbar(self, ev, widget, new_mode): self.mode = new_mode + self.edit_widget.tile_mode = (self.mode != 'Sprites') self.clear_toolbar() self.setup_toolbar() + return True def clear_toolbar(self): """Remove every non-edit widget from the container""" @@ -245,17 +258,21 @@ self.container.remove(widget) def do_edit(self, ev, widget, message, init_value, callback): + self.container.paused = True editbox = EntryBox((200, 200), message, init_value, callback) self.container.add(editbox) editbox.grab_focus() + return True def update_name(self, new_name): + self.container.paused = False self.level.name = new_name self.clear_toolbar() self.setup_toolbar() return True def list_tilesets(self, ev, widget): + self.container.paused = True tilesets = get_tileset_list() load_list = [] for name in tilesets: @@ -267,8 +284,10 @@ load_dialog = ListBox((200, 200), 'Select Level', load_list) self.container.add(load_dialog) load_dialog.grab_focus() + return True def list_tracks(self, ev, widget): + self.container.paused = True tracks = get_track_list() load_list = [] for name in tracks: @@ -291,14 +310,17 @@ message = MessageBox((300, 300), 'Unable to change tileset:: %s' % error, self.refresh_display, color='red') + self.container.paused = True self.container.add(message) message.grab_focus() return True + self.container.paused = False self.clear_toolbar() self.setup_toolbar() return True def change_track(self, ev, widget, new_name): + self.container.paused = False self.level.background_track = new_name self.clear_toolbar() self.setup_toolbar() @@ -324,9 +346,11 @@ elif check_level_exists(new_name): message = MessageBox((300, 300), 'Name already in use') if message: + self.container.paused = True self.container.add(message) message.grab_focus() return False + self.container.paused = False self.level.level_name = new_name self.clear_toolbar() self.setup_toolbar() @@ -337,3 +361,4 @@ self.sprite_mode = sprite_mode self.clear_toolbar() self.setup_toolbar() + return True