diff options
-rw-r--r-- | activity.py | 15 | ||||
-rw-r--r-- | cardlist.py | 11 | ||||
-rw-r--r-- | game.py | 3 | ||||
-rw-r--r-- | model.py | 4 |
4 files changed, 22 insertions, 11 deletions
diff --git a/activity.py b/activity.py index f6d822e..b47ec0c 100644 --- a/activity.py +++ b/activity.py @@ -208,7 +208,6 @@ class MemorizeActivity(Activity): game_file = os.path.join(os.path.dirname(__file__), 'demos', 'addition.zip') self.game.load_game(game_file, 4, 'demo') - self.cardlist.load_game(self.game) _logger.debug('loading conventional') self.game.add_buddy(self.owner) else: @@ -227,13 +226,12 @@ class MemorizeActivity(Activity): self.change_game(None, file_path, 4, 'file', self.metadata['title'], color) - def close(self, skip_save=False): + def write_file(self, file_path): if self.game.model.is_demo: - Activity.close(self, skip_save=True) - else: - Activity.close(self) + return + if self.cardlist.pair_list_modified: + self.cardlist.update_model(self.game.model) - def write_file(self, file_path): temp_img_folder = os.path.join(self.game.model.temp_folder, 'images') temp_snd_folder = os.path.join(self.game.model.temp_folder, 'sounds') self.game.model.create_temp_directories() @@ -272,6 +270,7 @@ class MemorizeActivity(Activity): os.path.join('sounds', bsnd)) self.game.model.game_path = self.game.model.temp_folder + self.game.model.data['name'] = str(self.get_title()) self.game.model.write() game_zip.write(os.path.join(self.game.model.temp_folder, 'game.xml'), 'game.xml') @@ -298,6 +297,7 @@ class MemorizeActivity(Activity): self.hbox.remove(self.table) self.hbox.pack_start(self.createcardpanel, False) self.hbox.pack_start(self.cardlist) + self.cardlist.load_game(self.game) self.game.model.create_temp_directories() self.createcardpanel.set_temp_folder( self.game.model.temp_folder) @@ -325,8 +325,7 @@ class MemorizeActivity(Activity): title=None, color=None): _logger.debug('Change game %s', game_name) self.game.change_game(widget, game_name, size, mode, title, color) - if game_name is not None: - self.cardlist.load_game(self.game) + self.cardlist.game_loaded = False def change_equal_pairs(self, widget, state): self.cardlist.update_model(self.game.model) diff --git a/cardlist.py b/cardlist.py index ba126b9..66e5f56 100644 --- a/cardlist.py +++ b/cardlist.py @@ -46,6 +46,8 @@ class CardList(gtk.EventBox): self.current_pair = None self.current_game_key = None self.model = None + self.pair_list_modified = False + self.game_loaded = False self.vbox = gtk.VBox(False) @@ -64,6 +66,9 @@ class CardList(gtk.EventBox): self.show_all() def load_game(self, game): + if self.game_loaded: + return + self.get_window().freeze_updates() self.model = game.model self.current_game_key = self.model.data['game_file'] game_pairs = self.model.pairs @@ -100,9 +105,11 @@ class CardList(gtk.EventBox): game_pairs[key].props.bchar, aimg, bimg, asnd, bsnd, game_pairs[key].props.aspeak, game_pairs[key].props.bspeak, False, load=True) + self.get_window().thaw_updates() self.emit('update-create-toolbar', self.model.data['name'], self.model.data['equal_pairs'], self.model.data['divided']) + self.game_loaded = True def update_model(self, game_model): game_model.pairs = {} @@ -164,6 +171,7 @@ class CardList(gtk.EventBox): pair_card.set_property('bsnd', basename(bsnd)) game_model.pairs[pair] = pair_card + self.pair_list_modified = False def clean_list(self, button=None, load=False): if button != None: @@ -172,6 +180,7 @@ class CardList(gtk.EventBox): del self.pairs self.pairs = [] if not load: + self.pair_list_modified = True self.model.mark_modified() def add_pair(self, widget, achar, bchar, aimg, bimg, asnd, bsnd, @@ -183,6 +192,7 @@ class CardList(gtk.EventBox): pair.connect('pair-closed', self.rem_pair) if not load: self.model.mark_modified() + self.pair_list_modified = True if show: self.show_all() @@ -217,6 +227,7 @@ class CardList(gtk.EventBox): self.current_pair.change_sound(asnd, bsnd) self.current_pair.change_speak(aspeak, bspeak) self.model.mark_modified() + self.pair_list_modified = False class CardPair(gtk.EventBox): @@ -322,7 +322,8 @@ class MemorizeGame(GObject): size = int(self.model.data['size']) self.model.count = 0 self.model.def_grid(size) - self.load_remote(self.model.grid, self.model.data, False) + self.load_remote(self.model.grid, self.model.data, + self.model.data['mode'],False) def set_load_mode(self, msg): self.emit('load_mode', msg) @@ -310,7 +310,7 @@ class Model(object): for key in keys: if i < psize: elem = {} - elem['pairkey'] = key + elem['pairkey'] = str(key) elem['state'] = '0' elem['ab'] = 'a' if self.pairs[key].props.aimg != None: @@ -324,7 +324,7 @@ class Model(object): temp1.append(elem) elem = {} - elem['pairkey'] = key + elem['pairkey'] = str(key) elem['state'] = '0' elem['ab'] = 'b' if self.pairs[key].props.bimg != None: |