def test_media_types(self): timeline_container = create_timeline_container() timeline = timeline_container.timeline ges_layer_1 = timeline.ges_timeline.append_layer() ges_layer_2 = timeline.ges_timeline.append_layer() # Timeline should contain no media_types. self.assertEqual(timeline.media_types, GES.TrackType(0)) # Timeline should now contain only audio media type. ges_clip_audio = self.add_clip(ges_layer_1, 10, clip_type=GES.TrackType.AUDIO) self.assertEqual(timeline.media_types, GES.TrackType.AUDIO) ges_layer_1.remove_clip(ges_clip_audio) ges_clip_video = self.add_clip(ges_layer_2, 20, clip_type=GES.TrackType.VIDEO) self.assertEqual(timeline.media_types, GES.TrackType.VIDEO) # Timeline should contain no media_types. ges_layer_2.remove_clip(ges_clip_video) self.assertEqual(timeline.media_types, GES.TrackType(0)) # Timeline should contain both clips. ges_clip_audio = self.add_clip(ges_layer_1, 10, clip_type=GES.TrackType.AUDIO) ges_clip_video = self.add_clip(ges_layer_2, 20, clip_type=GES.TrackType.VIDEO) self.assertEqual(timeline.media_types, GES.TrackType.VIDEO | GES.TrackType.AUDIO) # Timeline should contain no clips. ges_layer_1.remove_clip(ges_clip_audio) ges_layer_2.remove_clip(ges_clip_video) self.assertEqual(timeline.media_types, GES.TrackType(0))
def check_media_types(self): if self.timeline.editing_context: self.info("Not updating media types as" " we are editing the timeline") return old_media_types = self.media_types self.media_types = GES.TrackType(0) ges_clips = self.ges_layer.get_clips() for ges_clip in ges_clips: for child in ges_clip.get_children(False): track = child.get_track() if not track: continue self.media_types |= track.props.track_type if self.media_types == GES.TrackType.AUDIO | GES.TrackType.VIDEO: # Cannot find more types than these. break if (self.media_types & GES.TrackType.AUDIO) and ( self.media_types & GES.TrackType.VIDEO): self.props.height_request = LAYER_HEIGHT else: # If the layer is empty, set layer's height to default height. self.props.height_request = LAYER_HEIGHT / 2 if hasattr(self.ges_layer, "control_ui") and self.ges_layer.control_ui: self.ges_layer.control_ui.update(self.media_types) if old_media_types != self.media_types: self.update_position()
def checkMediaTypes(self): if self.timeline.editing_context: self.info("Not updating media types as" " we are editing the timeline") return old_media_types = self.media_types self.media_types = GES.TrackType(0) ges_clips = self.ges_layer.get_clips() for ges_clip in ges_clips: for child in ges_clip.get_children(False): track = child.get_track() if not track: continue self.media_types |= track.props.track_type if self.media_types == GES.TrackType.AUDIO | GES.TrackType.VIDEO: # Cannot find more types than these. break if not (self.media_types & GES.TrackType.AUDIO) and not (self.media_types & GES.TrackType.VIDEO): # An empty layer only shows the video strip. self.media_types = GES.TrackType.VIDEO height = 0 if self.media_types & GES.TrackType.AUDIO: height += LAYER_HEIGHT / 2 if self.media_types & GES.TrackType.VIDEO: height += LAYER_HEIGHT / 2 self.props.height_request = height if hasattr(self.ges_layer, "control_ui") and self.ges_layer.control_ui: self.ges_layer.control_ui.update(self.media_types) if old_media_types != self.media_types: self.updatePosition()
def __init__(self, ges_layer, timeline): Gtk.EventBox.__init__(self) Zoomable.__init__(self) Loggable.__init__(self) self.ges_layer = ges_layer self.ges_layer.ui = self self.timeline = timeline self.app = timeline.app self.ges_layer.connect("clip-added", self._clipAddedCb) self.ges_layer.connect("clip-removed", self._clipRemovedCb) # FIXME Make the layer height user setable with 'Paned' self.props.height_request = ui.LAYER_HEIGHT / 2 self.props.valign = Gtk.Align.START self._layout = LayerLayout(self.timeline) self._layout.connect("remove", self.__childWidgetRemovedCb) self.add(self._layout) self.media_types = GES.TrackType(0) for clip in ges_layer.get_clips(): self._addClip(clip) self.before_sep = SpacedSeparator(Gtk.PositionType.TOP) self.after_sep = SpacedSeparator(Gtk.PositionType.BOTTOM)
def __init__(self, ges_layer, timeline): Gtk.Layout.__init__(self) Zoomable.__init__(self) Loggable.__init__(self) self.ges_layer = ges_layer self.ges_layer.ui = self self.timeline = timeline self.app = timeline.app self._children = [] self._changed = False self.ges_layer.connect("clip-added", self._clip_added_cb) self.ges_layer.connect("clip-removed", self._clip_removed_cb) # The layer is always the width of the Timeline which contains it. self.props.hexpand = True self.props.valign = Gtk.Align.START self.media_types = GES.TrackType(0) for ges_clip in ges_layer.get_clips(): self._add_clip(ges_clip) self.check_media_types()