# HG changeset patch # User Jeremy Thurgood # Date 1316259000 -7200 # Node ID 38f95fbc371071d9d396d3519031657fa0876454 # Parent 4e9a30da79e11a44f10a4db7c80c12e7f1986387 Better dialog handling. diff -r 4e9a30da79e1 -r 38f95fbc3710 mamba/engine.py --- a/mamba/engine.py Sat Sep 17 12:57:04 2011 +0200 +++ b/mamba/engine.py Sat Sep 17 13:30:00 2011 +0200 @@ -70,6 +70,11 @@ self.container.draw(self.surface) surface.blit(self.surface, self.surface.get_rect()) + def display_dialog(self, dialog): + self.container.paused = True + self.container.add(dialog) + dialog.grab_focus() + class UserEvent(object): diff -r 4e9a30da79e1 -r 38f95fbc3710 mamba/habitats/editor.py --- a/mamba/habitats/editor.py Sat Sep 17 12:57:04 2011 +0200 +++ b/mamba/habitats/editor.py Sat Sep 17 13:30:00 2011 +0200 @@ -208,9 +208,7 @@ except InvalidMapError, error: message = MessageBox((300, 300), "Map isn't valid\n%s" % error) if message: - self.container.paused = True - self.container.add(message) - message.grab_focus() + self.display_dialog(message) return self.level.save_level('user_levels', is_user_dir=True) self.refresh_display() @@ -235,9 +233,7 @@ load_button.add_callback( 'clicked', self.load_level, level_name, level_dir, is_user_dir) load_list.append(load_button) - load_dialog = ListBox((200, 200), 'Select Level', load_list, 6) - self.container.add(load_dialog) - load_dialog.grab_focus() + self.display_dialog(ListBox((200, 200), 'Select Level', load_list, 6)) return True def load_level(self, ev, widget, level_name, level_dir, is_user_dir): @@ -248,9 +244,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() + self.display_dialog(message) return False self.container.remove(self.edit_widget) self.level = new_level @@ -277,10 +271,8 @@ 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() + self.display_dialog( + EntryBox((200, 200), message, init_value, callback)) return True def update_name(self, new_name): @@ -300,9 +292,7 @@ load_button = TextButton((0, 0), name) load_button.add_callback('clicked', self.change_tileset, name) load_list.append(load_button) - load_dialog = ListBox((200, 200), 'Select Level', load_list) - self.container.add(load_dialog) - load_dialog.grab_focus() + self.display_dialog(ListBox((200, 200), 'Select Level', load_list)) return True def list_tracks(self, ev, widget): @@ -313,9 +303,7 @@ load_button = TextButton((0, 0), name) load_button.add_callback('clicked', self.change_track, name) load_list.append(load_button) - load_dialog = ListBox((200, 200), 'Select Level', load_list, 6) - self.container.add(load_dialog) - load_dialog.grab_focus() + self.display_dialog(ListBox((200, 200), 'Select Level', load_list, 6)) return True def change_tileset(self, ev, widget, new_name): @@ -329,9 +317,7 @@ 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() + self.display_dialog(message) return True self.container.paused = False self.clear_toolbar() @@ -365,9 +351,7 @@ elif check_level_exists(new_name, 'user_levels', is_user_dir=True): message = MessageBox((300, 300), 'Name already in use') if message: - self.container.paused = True - self.container.add(message) - message.grab_focus() + self.display_dialog(message) return False self.container.paused = False self.level.level_name = new_name @@ -401,11 +385,9 @@ return True def edit_sprite(self, tile_pos, sprite): - self.container.paused = True sprite_editor = EditSpriteBox((200, 100), tile_pos, sprite, post_callback=self.commit_line) - self.container.add(sprite_editor) - sprite_editor.grab_focus() + self.display_dialog(sprite_editor) def commit_line(self, sprite): try: @@ -418,9 +400,7 @@ info = traceback.format_exception_only(exc_type, info)[0] message = MessageBox((300, 300), 'Validation failed:\n%s' % info) - self.container.paused = True - self.container.add(message) - message.grab_focus() + self.display_dialog(message) return False # Validation successful, so add to level if self.sprite_mode == 'Add': diff -r 4e9a30da79e1 -r 38f95fbc3710 mamba/habitats/level.py --- a/mamba/habitats/level.py Sat Sep 17 12:57:04 2011 +0200 +++ b/mamba/habitats/level.py Sat Sep 17 13:30:00 2011 +0200 @@ -28,9 +28,7 @@ def level_completed(self, ev, widget): if not self.world.pause(): return False - messagebox = MessageBox((300, 200), 'Level complete!', - self.go_menu) - self.container.add(messagebox) - messagebox.grab_focus() + self.display_dialog( + MessageBox((300, 200), 'Level complete!', self.go_menu)) level_done(self.world.level.unique_name()) return True