def test_marker_moved_ui(self): """Checks the move marker UI.""" markers = self.timeline.get_marker_list("markers") marker_box = self.timeline_container.markers x1 = 300 position1 = Zoomable.pixel_to_ns(x1) marker = marker_box.markers_container.add(position1) self.assert_markers(markers, [(position1, None)]) x2 = 400 position2 = Zoomable.pixel_to_ns(x2) event = mock.Mock(spec=Gdk.EventButton) event.x = x2 event.y = 1 event.type = Gdk.EventType.BUTTON_PRESS event.button = Gdk.BUTTON_PRIMARY with mock.patch.object(Gtk, "get_event_widget") as get_event_widget: get_event_widget.return_value = marker.ui event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) marker_box.do_button_press_event(event) with mock.patch.object( marker.ui, "translate_coordinates") as translate_coordinates: translate_coordinates.return_value = (x2, 0) marker_box.do_motion_notify_event(event) marker_box.do_button_release_event(event) self.assert_markers(markers, [(position2, None)])
def test_marker_added_ui(self): """Checks the add marker UI.""" markers = self.timeline.get_marker_list("markers") marker_box = self.timeline_container.markers x = 100 event = mock.Mock(spec=Gdk.EventButton) event.x = x event.y = 1 event.button = Gdk.BUTTON_PRIMARY with mock.patch.object(Gtk, "get_event_widget") as get_event_widget: get_event_widget.return_value = marker_box event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) marker_box.do_button_press_event(event) event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_RELEASE) marker_box.do_button_release_event(event) position = Zoomable.pixel_to_ns(event.x) self.assert_markers(markers, [(position, None)])
def test_marker_comment_ui(self): """Checks the comments marker UI.""" markers = self.timeline.get_marker_list("markers") marker_box = self.timeline_container.markers x = 500 position = Zoomable.pixel_to_ns(x) marker = marker_box.markers_container.add(position) self.assert_markers(markers, [(position, None)]) event = mock.Mock(spec=Gdk.EventButton) event.x = x event.y = 1 event.type = Gdk.EventType.BUTTON_PRESS event.button = Gdk.BUTTON_PRIMARY with mock.patch.object(Gtk, "get_event_widget") as get_event_widget: get_event_widget.return_value = marker.ui def popup(markerpopover): text_buffer = markerpopover.text_view.get_buffer() text_buffer.set_text("com") text_buffer.set_text("comment") markerpopover.popdown() original_popover_menu = Gtk.Popover.popup Gtk.Popover.popup = popup try: event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) marker_box.do_button_press_event(event) event.guiEvent = Gdk.Event.new( Gdk.EventType.DOUBLE_BUTTON_PRESS) event.type = Gdk.EventType.DOUBLE_BUTTON_PRESS marker_box.do_button_press_event(event) finally: Gtk.Popover.popup = original_popover_menu stack, = self.action_log.undo_stacks self.assertEqual(len(stack.done_actions), 1, stack.done_actions) self.assert_markers(markers, [(position, "comment")])
def check_keyframe_ui_toggle(self, ges_clip, timeline_container): """Checks keyframes toggling by click events.""" timeline = timeline_container.timeline start = ges_clip.props.start start_px = Zoomable.ns_to_pixel(start) inpoint = ges_clip.props.in_point duration = ges_clip.props.duration duration_px = Zoomable.ns_to_pixel(duration) offsets_px = (1, int(duration_px / 2), int(duration_px) - 1) timeline.selection.select([ges_clip]) ges_video_source = ges_clip.find_track_element(None, GES.VideoSource) binding = ges_video_source.get_control_binding("alpha") control_source = binding.props.control_source keyframe_curve = ges_video_source.ui.keyframe_curve values = [item.timestamp for item in control_source.get_all()] self.assertEqual(values, [inpoint, inpoint + duration]) # Add keyframes by simulating mouse clicks. for offset_px in offsets_px: offset = Zoomable.pixel_to_ns(start_px + offset_px) - start xdata, ydata = inpoint + offset, 1 x, y = keyframe_curve._ax.transData.transform((xdata, ydata)) event = MouseEvent( name="button_press_event", canvas=keyframe_curve, x=x, y=y, button=1 ) keyframe_curve.translate_coordinates = \ mock.Mock(return_value=(start_px + offset_px, None)) with mock.patch.object(Gtk, "get_event_widget") as get_event_widget: get_event_widget.return_value = keyframe_curve event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) keyframe_curve._mpl_button_press_event_cb(event) event.name = "button_release_event" event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_RELEASE) keyframe_curve._mpl_button_release_event_cb(event) values = [item.timestamp for item in control_source.get_all()] self.assertIn(inpoint + offset, values) # Remove keyframes by simulating mouse double-clicks. for offset_px in offsets_px: offset = Zoomable.pixel_to_ns(start_px + offset_px) - start xdata, ydata = inpoint + offset, 1 x, y = keyframe_curve._ax.transData.transform((xdata, ydata)) event = MouseEvent( name="button_press_event", canvas=keyframe_curve, x=x, y=y, button=1 ) keyframe_curve.translate_coordinates = \ mock.Mock(return_value=(start_px + offset_px, None)) with mock.patch.object(Gtk, "get_event_widget") as get_event_widget: get_event_widget.return_value = keyframe_curve event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) keyframe_curve._mpl_button_press_event_cb(event) event.name = "button_release_event" event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_RELEASE) keyframe_curve._mpl_button_release_event_cb(event) event.name = "button_press_event" event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) keyframe_curve._mpl_button_press_event_cb(event) event.guiEvent = Gdk.Event.new(Gdk.EventType._2BUTTON_PRESS) keyframe_curve._mpl_button_press_event_cb(event) event.name = "button_release_event" event.guiEvent = Gdk.Event.new(Gdk.EventType.BUTTON_RELEASE) keyframe_curve._mpl_button_release_event_cb(event) values = [item.timestamp for item in control_source.get_all()] self.assertNotIn(inpoint + offset, values)