diff options
author | florent <florent.pigout@gmail.com> | 2011-03-16 13:09:30 (GMT) |
---|---|---|
committer | florent <florent.pigout@gmail.com> | 2011-03-16 13:09:30 (GMT) |
commit | 74a279d5b65b6f6e09cab08412f37e761171894c (patch) | |
tree | 458396333299366456315ed77352fa448e008bc6 | |
parent | 3433d14944e82ff6c36fdf5e6231b9225c46feb0 (diff) |
get previous align values when adding new image in story
-rw-r--r-- | atoidejouer/story/keys.py | 38 | ||||
-rw-r--r-- | atoidejouer/ui/panel.py | 10 |
2 files changed, 38 insertions, 10 deletions
diff --git a/atoidejouer/story/keys.py b/atoidejouer/story/keys.py index 8465bf9..175ec91 100644 --- a/atoidejouer/story/keys.py +++ b/atoidejouer/story/keys.py @@ -197,7 +197,7 @@ class StoryKeys(object): if dict_ is None: dict_ = { '__align': [0, 0], - '__current': False + '__current': None } else: pass @@ -247,23 +247,42 @@ class StoryKeys(object): if _f_dict is None: return else: - self.__keys[sequence_name][frame][filename]['align'] = align + self.__keys[sequence_name][frame][filename]['__align'] = align + + def get_previous_align(self, sequence_name, frame, filename): + # prepare inversed range + _range = range(frame) + _range.reverse() + # try one by one + for _f in _range: + # .. get the dict + _f_dict = self.get_filename_dict(sequence_name, _f, filename) + # little check + if _f_dict is None\ + or _f_dict['__current'] != 'key': + continue + elif '__align' in _f_dict: + return _f_dict['__align'] + else: + return [0, 0] + # default + return [0, 0] def get_align(self, sequence_name, frame, filename): # .. get the dict _f_dict = self.get_filename_dict(sequence_name, frame, filename) # little check if _f_dict is None: - return 0, 0 + return [0, 0] else: # ensure default - if 'align' in _f_dict: - return _f_dict['align'] + if '__align' in _f_dict: + return _f_dict['__align'] else: # set default - _f_dict['align'] = 0, 0 + _f_dict['__align'] = [0, 0] # return default - return 0, 0 + return [0, 0] def inc_position(self, sequence_name, frame, filename, move, value): @@ -334,7 +353,10 @@ class StoryKeys(object): for _filename, _dict in _filename_dict.items(): if _filename is None or _dict['__current'] != 'key': # invalidate previous - self.__keys[sequence_name][_frame][_filename]['__current'] = None + self.__keys[sequence_name][_frame][_filename] = { + '__align': [0, 0], + '__current': None + } else: # small update for transition management _tr_frame = (_frame + 1) if len(_range) == 0 else _frame diff --git a/atoidejouer/ui/panel.py b/atoidejouer/ui/panel.py index 9278e1d..7d44ede 100644 --- a/atoidejouer/ui/panel.py +++ b/atoidejouer/ui/panel.py @@ -59,10 +59,16 @@ def _on_graphic_combo_changed(combobox, panel): # reset current _activity.story_keys.set_current(panel._sequence_name, _activity._thread._time, None) - else: + elif _current != _filename: # update keys _activity.story_keys.set_current(panel._sequence_name, _activity._thread._time, _filename) + # get previous align + _prev_align = _activity.story_keys.get_previous_align( + panel._sequence_name, _activity._thread._time, _filename) + # set align + _activity.story_keys.set_align(panel._sequence_name, + _activity._thread._time, _filename, _prev_align) # ... _activity.story_keys.refresh(panel._sequence_name) # refresh timeline @@ -150,7 +156,7 @@ def _on_time_clicked(widget, panel, direction): if panel._sequence_name is None: return panel.time_entry.set_text('') # do nothing - elif _type != 'key'\ + elif _type == 'transition'\ or _activity._thread._pause is False: return else: |