Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activity.py15
-rw-r--r--cardlist.py11
-rw-r--r--game.py3
-rw-r--r--model.py4
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):
diff --git a/game.py b/game.py
index b023e85..5217f7c 100644
--- a/game.py
+++ b/game.py
@@ -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)
diff --git a/model.py b/model.py
index 63992a2..f212cbd 100644
--- a/model.py
+++ b/model.py
@@ -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: