Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorent <florent.pigout@gmail.com>2011-03-16 13:09:30 (GMT)
committer florent <florent.pigout@gmail.com>2011-03-16 13:09:30 (GMT)
commit74a279d5b65b6f6e09cab08412f37e761171894c (patch)
tree458396333299366456315ed77352fa448e008bc6
parent3433d14944e82ff6c36fdf5e6231b9225c46feb0 (diff)
get previous align values when adding new image in story
-rw-r--r--atoidejouer/story/keys.py38
-rw-r--r--atoidejouer/ui/panel.py10
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: