[pitivi] elements: Allow undo keyframe operations
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] elements: Allow undo keyframe operations
- Date: Mon, 16 May 2016 05:28:36 +0000 (UTC)
commit b5fdcfb295f8110608eb2261d775e09d7b623407
Author: Fabian Orccon <fabian orccon pucp pe>
Date: Mon Apr 18 20:15:07 2016 +0000
elements: Allow undo keyframe operations
Differential Revision: https://phabricator.freedesktop.org/D917
pitivi/timeline/elements.py | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
---
diff --git a/pitivi/timeline/elements.py b/pitivi/timeline/elements.py
index b7f0c3e..58b7d9f 100644
--- a/pitivi/timeline/elements.py
+++ b/pitivi/timeline/elements.py
@@ -88,6 +88,7 @@ class KeyframeCurve(FigureCanvas, Loggable):
Loggable.__init__(self)
self.__timeline = timeline
+ self.__action_log = timeline.app.action_log
self.__source = binding.props.control_source
self.__source.connect("value-added", self.__controlSourceChangedCb)
self.__source.connect("value-removed", self.__controlSourceChangedCb)
@@ -209,7 +210,9 @@ class KeyframeCurve(FigureCanvas, Loggable):
if line_contains and not keyframe_existed:
res, value = self.__source.control_source_get_value(event.xdata)
assert res
- self.__source.set(event.xdata, value)
+ self.debug("Create keyframe at (%lf, %lf)", event.xdata, value)
+ with self.__action_log.started("Keyframe added"):
+ self.__source.set(event.xdata, value)
# Callbacks
def __controlSourceChangedCb(self, unused_control_source, unused_timed_value):
@@ -250,9 +253,11 @@ class KeyframeCurve(FigureCanvas, Loggable):
# A keyframe has been double-clicked, remove it.
self.debug("Removing keyframe at timestamp %lf", offset)
self.__keyframe_removed = True
- self.__source.unset(offset)
+ with self.__action_log.started("Remove keyframe"):
+ self.__source.unset(offset)
else:
# Remember the clicked frame for drag&drop.
+ self.__action_log.begin("Move keyframe")
self.__offset = offset
self.handling_motion = True
return
@@ -260,6 +265,8 @@ class KeyframeCurve(FigureCanvas, Loggable):
result = self.__line.contains(event)
if result[0]:
# The line has been clicked.
+ self.debug("The keyframe curve has been clicked")
+ self.__action_log.begin("Move keyframe curve segment")
x = event.xdata
offsets = self.__keyframes.get_offsets()
keyframes = offsets[:,0]
@@ -318,6 +325,13 @@ class KeyframeCurve(FigureCanvas, Loggable):
if event.button != 1:
return
+ if self.__offset is not None:
+ self.debug("Keyframe released")
+ self.__action_log.commit("Move keyframe")
+ elif self.__clicked_line is not None:
+ self.debug("Line released")
+ self.__action_log.commit("Move keyframe curve segment")
+
self.handling_motion = False
self.__offset = None
self.__clicked_line = None
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]