def __init__(self, ges_track_element, action_log): TimelineElementObserver.__init__(self, ges_track_element, action_log) if isinstance(ges_track_element, GES.BaseEffect): property_names = ("active", "priority",) else: property_names = ("active",) self.gobject_observer = GObjectObserver(ges_track_element, property_names, action_log)
def _connectToClip(self, ges_clip): ges_clip.connect("child-added", self._clipTrackElementAddedCb) ges_clip.connect("child-removed", self._clipTrackElementRemovedCb) for track_element in ges_clip.get_children(recursive=True): self._connectToTrackElement(track_element) if isinstance(ges_clip, GES.TransitionClip): return props = ["start", "duration", "in-point", "priority"] clip_observer = GObjectObserver(ges_clip, props, self.action_log) self.clip_observers[ges_clip] = clip_observer
def test_property_change(self): action_log = UndoableActionLog() action_log.begin("complex stuff") stack, = action_log.stacks clip = GES.TitleClip() unused_observer = GObjectObserver(clip, ["start"], action_log) self.assertEqual(len(stack.done_actions), 0) clip.props.start = 2 self.assertEqual(len(stack.done_actions), 1) clip.props.start = 2 self.assertEqual(len(stack.done_actions), 1) clip.props.start = 4 self.assertEqual(len(stack.done_actions), 2) action = stack.done_actions[-1] self.assertEqual(action.old_value, 2) self.assertEqual(action.new_value, 4)
def _connectToTrackElement(self, track_element): if isinstance(track_element, GES.VideoTransition): ges_clip = track_element.get_toplevel_parent() ges_layer = ges_clip.props.layer action = TransitionClipAddedAction(ges_layer, ges_clip, track_element) self.action_log.push(action) observer = GObjectObserver(track_element, TRANSITION_PROPS, self.action_log) self.track_element_observers[track_element] = observer return for prop, binding in track_element.get_all_control_bindings().items(): self._connectToControlSource(track_element, binding) track_element.connect("control-binding-added", self._controlBindingAddedCb) if isinstance(track_element, GES.BaseEffect) or \ isinstance(track_element, GES.VideoSource): observer = TrackElementObserver(track_element, self.action_log) self.track_element_observers[track_element] = observer
def __init__(self, ges_track_element, action_log): TimelineElementObserver.__init__(self, ges_track_element, action_log) self.gobject_observer = GObjectObserver(ges_track_element, ("active", ), action_log)