[pitivi] Handle the undo/redo active property
- From: Edward Hervey <edwardrv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] Handle the undo/redo active property
- Date: Wed, 22 Sep 2010 13:44:32 +0000 (UTC)
commit d880ddd97e49dfa3a1203600f9ae8ca3b5d203a6
Author: Thibault Saunier <tsaunier gnome org>
Date: Sun Aug 8 20:54:43 2010 -0400
Handle the undo/redo active property
pitivi/timeline/timeline_undo.py | 30 ++++++++++++++++++++++++++++--
pitivi/ui/clipproperties.py | 2 ++
2 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/pitivi/timeline/timeline_undo.py b/pitivi/timeline/timeline_undo.py
index 274b9d4..0f8176c 100644
--- a/pitivi/timeline/timeline_undo.py
+++ b/pitivi/timeline/timeline_undo.py
@@ -222,7 +222,6 @@ class TrackEffectRemoved(UndoableAction):
self.gnl_obj_props = [(prop.name, gnl_obj.get_property(prop.name))
for prop in gnl_props
if prop.flags & gobject.PARAM_WRITABLE]
- print self.gnl_obj_props
self.timeline_object.removeTrackObject(self.track_object)
self.track_object.track.removeTrackObject(self.track_object)
@@ -293,6 +292,21 @@ class InterpolatorKeyframeChanged(UndoableAction):
self.keyframe.setTime(time)
self.keyframe.setValue(value)
+class ActivePropertyChanged(UndoableAction):
+ def __init__(self, effect_action, active):
+ self.effect_action = effect_action
+ self.active = not active
+
+ def do(self):
+ self.effect_action.track_object.active = self.active
+ self.active = not self.active
+ self._done()
+
+ def undo(self):
+ self.effect_action.track_object.active = self.active
+ self.active = not self.active
+ self._done()
+
class TimelineLogObserver(object):
timelinePropertyChangedAction = TimelineObjectPropertyChanged
timelineObjectAddedAction = TimelineObjectAdded
@@ -302,6 +316,7 @@ class TimelineLogObserver(object):
interpolatorKeyframeAddedAction = InterpolatorKeyframeAdded
interpolatorKeyframeRemovedAction = InterpolatorKeyframeRemoved
interpolatorKeyframeChangedAction = InterpolatorKeyframeChanged
+ activePropertyChangedAction = ActivePropertyChanged
def __init__(self, log):
self.log = log
@@ -391,11 +406,18 @@ class TimelineLogObserver(object):
def _timelineObjectTrackObjectAddedCb(self, timeline_object, track_object):
if isinstance(track_object, TrackEffect):
action = self.trackEffectAddAction(timeline_object, track_object)
+ #We use the action instead of the track object
+ #because the track_object changes when redoing
+ track_object.connect("active-changed",
+ self._trackObjectActiveChangedCb, action)
self.log.push(action)
- self.effect_properties_tracker.addEffectElement(track_object.getElement())
+ element = track_object.getElement()
+ if element:
+ self.effect_properties_tracker.addEffectElement(element)
else:
self._connectToTrackObject(track_object)
+
def _timelineObjectTrackObjectRemovedCb(self, timeline_object,
track_object):
if isinstance(track_object, TrackEffect):
@@ -413,6 +435,10 @@ class TimelineLogObserver(object):
action = self.interpolatorKeyframeRemovedAction(track_object, keyframe)
self.log.push(action)
+ def _trackObjectActiveChangedCb(self, track_object, active, add_effect_action):
+ action = self.activePropertyChangedAction(add_effect_action, active)
+ self.log.push(action)
+
def _interpolatorKeyframeMovedCb(self, tracker, track_object,
keyframe, old_snapshot, new_snapshot):
action = self.interpolatorKeyframeChangedAction(track_object,
diff --git a/pitivi/ui/clipproperties.py b/pitivi/ui/clipproperties.py
index 290f1cf..4545393 100644
--- a/pitivi/ui/clipproperties.py
+++ b/pitivi/ui/clipproperties.py
@@ -267,8 +267,10 @@ class EffectProperties(gtk.Expander):
def _effectActiveToggleCb(self, cellrenderertoggle, path):
iter = self.storemodel.get_iter(path)
track_effect = self.storemodel.get_value(iter, COL_TRACK_EFFECT)
+ self.app.action_log.begin("change active state")
activated = track_effect.gnl_object.get_property("active")
track_effect.gnl_object.set_property("active", not activated)
+ self.app.action_log.commit()
def expandedcb(self, expander, params):
self._updateAll()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]