[pitivi] undo: Clarify how property_names are set
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] undo: Clarify how property_names are set
- Date: Mon, 23 May 2016 08:38:08 +0000 (UTC)
commit 4afddc85b12b1d226d84d7b64e696c30191a31be
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Thu Apr 28 00:52:08 2016 +0200
undo: Clarify how property_names are set
Differential Revision: https://phabricator.freedesktop.org/D978
pitivi/undo/timeline.py | 32 ++++++++++++++------------------
pitivi/undo/undo.py | 36 ++++++++++++++++--------------------
2 files changed, 30 insertions(+), 38 deletions(-)
---
diff --git a/pitivi/undo/timeline.py b/pitivi/undo/timeline.py
index 5fe7fdd..c48a89e 100644
--- a/pitivi/undo/timeline.py
+++ b/pitivi/undo/timeline.py
@@ -225,15 +225,12 @@ class TrackElementRemoved(UndoableAction):
class ClipPropertyChangeTracker(PropertyChangeTracker):
- # no out-point
- property_names = ["start", "duration", "in-point", "priority"]
- def __init__(self):
- PropertyChangeTracker.__init__(self)
-
- def connectToObject(self, obj):
- PropertyChangeTracker.connectToObject(self, obj)
- self.timeline = obj.timeline
+ def __init__(self, ges_clip):
+ PropertyChangeTracker.__init__(self, ges_clip,
+ # No out-point as that's calculated.
+ property_names=["start", "duration", "in-point", "priority"])
+ self.timeline = ges_clip.timeline
self.timeline.connect("commited", self._timelineCommitedCb)
def disconnectFromObject(self, obj):
@@ -241,12 +238,12 @@ class ClipPropertyChangeTracker(PropertyChangeTracker):
PropertyChangeTracker.disconnectFromObject(self, obj)
def _timelineCommitedCb(self, timeline):
- properties = self._takeCurrentSnapshot(self.obj)
+ properties = self._takeCurrentSnapshot(self.gobject)
for property_name, property_value in properties.items():
old_value = self.properties[property_name]
if old_value != property_value:
self._propertyChangedCb(
- self.obj, property_value, property_name)
+ self.gobject, property_value, property_name)
class KeyframeChangeTracker(GObject.Object):
@@ -586,20 +583,19 @@ class TimelineObserver(Loggable):
ges_layer.disconnect_by_func(self._clipRemovedCb)
ges_layer.disconnect_by_func(self._layer_moved_cb)
- def _connectToClip(self, clip):
- tracker = ClipPropertyChangeTracker()
- tracker.connectToObject(clip)
+ def _connectToClip(self, ges_clip):
+ tracker = ClipPropertyChangeTracker(ges_clip)
for property_name in tracker.property_names:
attr_name = "last-%s" % property_name
- last_value = clip.get_property(property_name)
+ last_value = ges_clip.get_property(property_name)
setattr(tracker, attr_name, last_value)
tracker.connect(
"monitored-property-changed", self._clipPropertyChangedCb)
- self.clip_property_trackers[clip] = tracker
+ self.clip_property_trackers[ges_clip] = tracker
- clip.connect("child-added", self._clipTrackElementAddedCb)
- clip.connect("child-removed", self._clipTrackElementRemovedCb)
- for track_element in clip.get_children(True):
+ ges_clip.connect("child-added", self._clipTrackElementAddedCb)
+ ges_clip.connect("child-removed", self._clipTrackElementRemovedCb)
+ for track_element in ges_clip.get_children(True):
self._connectToTrackElement(track_element)
def _disconnectFromClip(self, clip):
diff --git a/pitivi/undo/undo.py b/pitivi/undo/undo.py
index 6e300ed..a9b3e33 100644
--- a/pitivi/undo/undo.py
+++ b/pitivi/undo/undo.py
@@ -300,45 +300,41 @@ class UndoableActionLog(GObject.Object, Loggable):
class PropertyChangeTracker(GObject.Object):
"""
- BaseClass to track a class property, Used for undo/redo
+ Monitors a GObject.Object's props and reports UndoableActions.
+
+ Attributes:
+ gobject (GObject.Object): The object to be monitored.
+ property_names (List[str]): The props to be monitored.
"""
__gsignals__ = {
"monitored-property-changed": (GObject.SIGNAL_RUN_LAST, None, (object, str, object, object)),
}
- # The properties monitored by this class
- property_names = []
-
- def __init__(self):
+ def __init__(self, gobject, property_names):
GObject.Object.__init__(self)
- self.properties = {}
- self.obj = None
-
- def connectToObject(self, obj):
- self.obj = obj
- self.properties = self._takeCurrentSnapshot(obj)
- # Connect to obj to keep track when the monitored properties
- # are changed.
+ self.property_names = property_names
+ self.gobject = gobject
+ self.properties = self._takeCurrentSnapshot(gobject)
+ # Connect to obj to keep track when the monitored props change.
for property_name in self.property_names:
signal_name = "notify::%s" % property_name
- obj.connect(signal_name, self._propertyChangedCb, property_name)
+ gobject.connect(signal_name, self._propertyChangedCb, property_name)
- @classmethod
- def _takeCurrentSnapshot(cls, obj):
+ def _takeCurrentSnapshot(self, obj):
properties = {}
- for property_name in cls.property_names:
+ for property_name in self.property_names:
properties[property_name] = obj.get_property(
property_name.replace("-", "_"))
return properties
def disconnectFromObject(self, obj):
- self.obj = None
+ self.gobject = None
obj.disconnect_by_func(self._propertyChangedCb)
- def _propertyChangedCb(self, object, property_value, property_name):
+ def _propertyChangedCb(self, gobject, property_value, property_name):
old_value = self.properties[property_name]
self.properties[property_name] = property_value
- self.emit("monitored-property-changed", object,
+ self.emit("monitored-property-changed", gobject,
property_name, old_value, property_value)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]