diff options
author | florent <florent.pigout@gmail.com> | 2011-04-12 09:21:23 (GMT) |
---|---|---|
committer | florent <florent.pigout@gmail.com> | 2011-04-12 09:21:23 (GMT) |
commit | 03bdfae8193d98aa5d8e1cc2b7836ee6fb679e27 (patch) | |
tree | cdc4711fff703e84b9b5345e086b7d15cfc49cca | |
parent | 48f7bfbbda1c903b412c18f139157756eee9c584 (diff) |
enhance simple backup/restore feature
-rw-r--r-- | activity.py | 12 | ||||
-rw-r--r-- | atoidejouer/story/keys.py | 93 | ||||
-rw-r--r-- | atoidejouer/ui/screens.py | 13 |
3 files changed, 55 insertions, 63 deletions
diff --git a/activity.py b/activity.py index d4429b3..3a6bcce 100644 --- a/activity.py +++ b/activity.py @@ -237,17 +237,9 @@ class AToiDeJouerActivity(activity.Activity): _data = _file.read() finally: _file.close() - # DEBUG - logger.debug('[activity] read_file - _data: %s' % _data) - logger.debug('[activity] read_file - self._screens: %s' % self._screens) - # DEBUG # parse json data - _data_dict = json.loads(_data) - # load keys - self.graphic_keys._names = _data_dict['graphic_names'] - self.graphic_keys._keys = _data_dict['graphic_keys'] - self.sound_keys._names = _data_dict['sound_names'] - self.sound_keys._keys = _data_dict['sound_keys'] + self.graphic_keys.loads(_data) + self.sound_keys.loads(_data) # refresh default _current = self.get_current_screen() _current.refresh() diff --git a/atoidejouer/story/keys.py b/atoidejouer/story/keys.py index 5736f26..89d60dd 100644 --- a/atoidejouer/story/keys.py +++ b/atoidejouer/story/keys.py @@ -1,6 +1,6 @@ # python import -import logging, os +import json, logging, os # .. from functools import partial from gettext import gettext as _ @@ -24,6 +24,10 @@ class StoryKeys(object): # keep type self._type = type_ # .. + self.__init() + + def __init(self): + # .. self._names = list() self.__codes = { 'graphics': dict(), @@ -38,6 +42,37 @@ class StoryKeys(object): # self._keys = dict() + def loads(self, data): + # parse json data + _data_dict = json.loads(data) + # .. + if self._type == 'graphics': + # .. + _tmp_names = _data_dict['graphic_names'] + _tmp_keys = _data_dict['graphic_keys'] + # .. + elif self._type == 'sounds': + # .. + _tmp_names = _data_dict['sound_names'] + _tmp_keys = _data_dict['sound_keys'] + # ?? + else: + return + # reset keys + self.__init() + # set names + self._names = _tmp_names + # ensure keys + for _seq_name, _seq_dict in _tmp_keys.items(): + # init seq dict copy + _tmp_seq_dict = dict() + # work on seq dict copy + for _frame_name, _frame_dict in _seq_dict.items(): + # seq dict copy update + _tmp_seq_dict[int(_frame_name)] = _frame_dict + # update main dict + self._keys[_seq_name] = _tmp_seq_dict + def add_sequence(self, sequence_name, filenames): # TODO ensure valid name if sequence_name in self._names: @@ -157,23 +192,12 @@ class StoryKeys(object): def get_frame_dict(self, sequence_name, frame): # little check if sequence_name in self._names: - - # DEBUG - logger.debug('[keys] get_frame_dict - sequence_name: %s' % sequence_name) - logger.debug('[keys] get_frame_dict - self._keys: %s' % self._keys) - # DEBUG - # .. _seq_dict = self._keys[sequence_name] # little check - if str(frame) in _seq_dict: - - # DEBUG - logger.debug('[keys] get_frame_dict - frame: %s' % frame) - # DEBUG - + if frame in _seq_dict: # get frame dict - return _seq_dict[str(frame)] + return _seq_dict[frame] else: return None else: @@ -187,9 +211,9 @@ class StoryKeys(object): # little check if previous_frame in _seq_dict: # set frame dict from previous - _seq_dict[str(new_frame)] = _seq_dict[str(previous_frame)] + _seq_dict[new_frame] = _seq_dict[previous_frame] # clear main dict - del _seq_dict[str(previous_frame)] + del _seq_dict[previous_frame] else: pass else: @@ -223,11 +247,11 @@ class StoryKeys(object): # ensure frame dict _frame_dict = self.get_frame_dict(sequence_name, frame) if _frame_dict is None: - self._keys[sequence_name][str(frame)] = dict() + self._keys[sequence_name][frame] = dict() else: pass # update the main dict - self._keys[sequence_name][str(frame)][filename] = dict_ + self._keys[sequence_name][frame][filename] = dict_ def get_filename_dict(self, sequence_name, frame, filename): # little check @@ -235,9 +259,9 @@ class StoryKeys(object): # .. _seq_dict = self._keys[sequence_name] # little check - if str(frame) in _seq_dict: + if frame in _seq_dict: # get frame dict - _frame_dict = _seq_dict[str(frame)] + _frame_dict = _seq_dict[frame] # little check if filename in _frame_dict: # return filename dict @@ -257,7 +281,7 @@ class StoryKeys(object): return # do remove else: - del self._keys[sequence_name][str(frame)][filename] + del self._keys[sequence_name][frame][filename] def set_align(self, sequence_name, frame, filename, align): # .. get the dict @@ -266,7 +290,7 @@ class StoryKeys(object): if _f_dict is None: return else: - self._keys[sequence_name][str(frame)][filename]['__align'] = align + self._keys[sequence_name][frame][filename]['__align'] = align def get_previous_align(self, sequence_name, frame): # prepare inversed range @@ -330,7 +354,7 @@ class StoryKeys(object): if _f_dict is None: return else: - self._keys[sequence_name][str(frame)][filename]['__duration'] = duration + self._keys[sequence_name][frame][filename]['__duration'] = duration def get_duration(self, sequence_name, frame, filename): # .. get the dict @@ -374,7 +398,7 @@ class StoryKeys(object): if _f_dict is None: return else: - self._keys[sequence_name][str(frame)][filename]['__loop'] = loop + self._keys[sequence_name][frame][filename]['__loop'] = loop def get_loop(self, sequence_name, frame, filename): # .. get the dict @@ -416,31 +440,20 @@ class StoryKeys(object): # key type or none _ft = key_type if _f == filename else None # update - self._keys[sequence_name][str(frame)][_f]['__file_type'] = _ft + self._keys[sequence_name][frame][_f]['__file_type'] = _ft # key type or none _kt = key_type if _f == filename else None # update - self._keys[sequence_name][str(frame)][_f]['__key_type'] = _kt + self._keys[sequence_name][frame][_f]['__key_type'] = _kt def get_current(self, sequence_name, frame): # get the dict _f_dict = self.get_frame_dict(sequence_name, frame) - - # DEBUG - logger.debug('[keys] get_current - _f_dict: %s' % _f_dict) - # DEBUG - # little check if _f_dict is None: return None, None, None else: for _f, _d in _f_dict.items(): - - # DEBUG - logger.debug('[keys] get_current - _f: %s' % _f) - logger.debug('[keys] get_current - _d: %s' % _d) - # DEBUG - if _d['__key_type'] is None: continue else: @@ -471,7 +484,7 @@ class StoryKeys(object): } else: # small update for transition management - _tr_frame = (int(_frame) + 1) if len(_range) == 0 else _frame + _tr_frame = (_frame + 1) if len(_range) == 0 else _frame # update current range _range.append(_tr_frame) _filenames.append((_filename, _dict['__file_type'])) @@ -550,7 +563,7 @@ class StoryKeys(object): # set transition for loop keys for _frame, _f, _f_type in _loops: # little check - _t_start = int(_frame) + 1 + _t_start = _frame + 1 # .. if _t_start >= _max_frame: continue @@ -564,7 +577,7 @@ class StoryKeys(object): # set transition for loop keys for _frame, _f, _f_type, _duration in _durations: # little check - _t_start = int(_frame) + 1 + _t_start = _frame + 1 _t_end = _t_start+_duration if _t_start >= _max_frame: continue diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py index 5e70f22..f14d152 100644 --- a/atoidejouer/ui/screens.py +++ b/atoidejouer/ui/screens.py @@ -150,9 +150,6 @@ class ScreenStory(gtk.Fixed): self._refresh_screen_size() # for each images for _n in self._get_keys('graphics').get_names(): - # DEBUG - logger.debug('[screens] refresh - _n: %s' % _n) - # DEBUG # do move self.__refresh_image(_n, _frame) # draw mask @@ -264,16 +261,6 @@ class ScreenStory(gtk.Fixed): sequence_name, frame) # .. self.__hide_previous_images(_seq_codes, _current) - - # DEBUG - logger.debug('[screens] __refresh_image - sequence_name: %s' % sequence_name) - logger.debug('[screens] __refresh_image - frame: %s' % frame) - logger.debug('[screens] __refresh_image - _seq_codes: %s' % _seq_codes) - logger.debug('[screens] __refresh_image - _current: %s' % _current) - logger.debug('[screens] __refresh_image - _f_type: %s' % _f_type) - logger.debug('[screens] __refresh_image - _k_type: %s' % _k_type) - # DEBUG - # need current if _current is None: return |