Example #1
0
 def do_motion_notify_event(self, event):
     event_widget = Gtk.get_event_widget(event)
     if event_widget is self.marker_moving:
         event_x, unused_y = event_widget.translate_coordinates(self, event.x, event.y)
         event_x = max(0, event_x)
         position_ns = self.pixel_to_ns(event_x + self.offset)
         self.__markers_container.move(self.marker_moving.ges_marker, position_ns)
Example #2
0
	def checkbutton_handler(self, w) :
		if Gtk.get_event_widget(Gtk.get_current_event()) != w :
			return
		print("cbh")
		va=0
		for k,v in self.bits.items() :
			if v.get_active() :
				va |= (1<<k)
		self.set_value(va)
Example #3
0
 def checkbutton_handler(self, w):
     if Gtk.get_event_widget(Gtk.get_current_event()) != w:
         return
     print("cbh")
     va = 0
     for k, v in self.bits.items():
         if v.get_active():
             va |= (1 << k)
     self.set_value(va)
    def _leave_notify_cb(self, widget, event):
        if event.mode in (Gdk.CrossingMode.GRAB, Gdk.CrossingMode.GTK_GRAB):
            return False
        if event.get_source_device().get_source() == Gdk.InputSource.TOUCHSCREEN:
            return False
        if Gtk.get_event_widget(event) not in self._menus:
            return False

        self._mouse_in_palette = False
        self._reevaluate_state()
        return False
    def _leave_notify_cb(self, widget, event):
        if event.mode in (Gdk.CrossingMode.GRAB, Gdk.CrossingMode.GTK_GRAB):
            return False
        if event.get_source_device().get_source() == \
                Gdk.InputSource.TOUCHSCREEN:
            return False
        if Gtk.get_event_widget(event) not in self._menus:
            return False

        self._mouse_in_palette = False
        self._reevaluate_state()
        return False
Example #6
0
    def on_scroll_event(self, notebook, event):
        '''Handle scroll events for scrolling through tabs'''
        #print "self: %s" % self
        #print "event: %s" % event
        child = self.get_nth_page(self.get_current_page())
        if child == None:
            print("Child = None,  return false")
            return False

        event_widget = Gtk.get_event_widget(event)

        if event_widget == None or \
           event_widget == child or \
           event_widget.is_ancestor(child):
            print("event_widget is wrong one,  return false")
            return False

        # Not sure if we need these. I don't think wehave any action widgets
        # at this point.
        action_widget = self.get_action_widget(Gtk.PackType.START)
        if event_widget == action_widget or \
           (action_widget != None and event_widget.is_ancestor(action_widget)):
            return False
        action_widget = self.get_action_widget(Gtk.PackType.END)
        if event_widget == action_widget or \
           (action_widget != None and event_widget.is_ancestor(action_widget)):
            return False

        if event.direction in [
                Gdk.ScrollDirection.RIGHT, Gdk.ScrollDirection.DOWN
        ]:
            self.next_page()
        elif event.direction in [
                Gdk.ScrollDirection.LEFT, Gdk.ScrollDirection.UP
        ]:
            self.prev_page()
        elif event.direction == Gdk.ScrollDirection.SMOOTH:
            if self.get_tab_pos() in [
                    Gtk.PositionType.LEFT, Gtk.PositionType.RIGHT
            ]:
                if event.delta_y > 0:
                    self.next_page()
                elif event.delta_y < 0:
                    self.prev_page()
            elif self.get_tab_pos() in [
                    Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM
            ]:
                if event.delta_x > 0:
                    self.next_page()
                elif event.delta_x < 0:
                    self.prev_page()
        return True
Example #7
0
    def do_button_release_event(self, event):
        button = event.button
        event_widget = Gtk.get_event_widget(event)
        if button == Gdk.BUTTON_PRIMARY:
            if self.marker_moving:
                self.marker_moving.selected = False
                self.marker_moving = None
                self.app.action_log.commit("Move marker")
            elif self.marker_new:
                self.marker_new.selected = False
                self.marker_new = None

        elif button == Gdk.BUTTON_SECONDARY and isinstance(event_widget, Marker):
            with self.app.action_log.started("Removed marker", toplevel=True):
                self.__markers_container.remove(event_widget.ges_marker)
Example #8
0
    def on_scroll_event(self, notebook, event):
        '''Handle scroll events for scrolling through tabs'''
        #print "self: %s" % self
        #print "event: %s" % event
        child = self.get_nth_page(self.get_current_page())
        if child == None:
            print "Child = None,  return false"
            return False

        event_widget = Gtk.get_event_widget(event)
        
        if event_widget == None or \
           event_widget == child or \
           event_widget.is_ancestor(child):
            print "event_widget is wrong one,  return false"
            return False

        # Not sure if we need these. I don't think wehave any action widgets
        # at this point.
        action_widget = self.get_action_widget(Gtk.PackType.START)
        if event_widget == action_widget or \
           (action_widget != None and event_widget.is_ancestor(action_widget)):
            return False
        action_widget = self.get_action_widget(Gtk.PackType.END)
        if event_widget == action_widget or \
           (action_widget != None and event_widget.is_ancestor(action_widget)):
            return False

        if event.direction in [Gdk.ScrollDirection.RIGHT,
                               Gdk.ScrollDirection.DOWN]:
            self.next_page()
        elif event.direction in [Gdk.ScrollDirection.LEFT,
                                 Gdk.ScrollDirection.UP]:
            self.prev_page()
        elif event.direction == Gdk.ScrollDirection.SMOOTH:
            if self.get_tab_pos() in [Gtk.PositionType.LEFT,
                                      Gtk.PositionType.RIGHT]:
                if event.delta_y > 0:
                    self.next_page()
                elif event.delta_y < 0:
                    self.prev_page()
            elif self.get_tab_pos() in [Gtk.PositionType.TOP,
                                        Gtk.PositionType.BOTTOM]:
                if event.delta_x > 0:
                    self.next_page()
                elif event.delta_x < 0:
                    self.prev_page()
        return True
    def __click_event_cb(self, button):
        event = Gtk.get_current_event()
        if not event:
            # not an event from a user interaction, this can be when
            # the clicked event is emitted on a 'active' property
            # change of ToggleToolButton for example
            return
        if event and button != Gtk.get_event_widget(event):
            # another special case for the ToggleToolButton: this handles
            # the case where we select an item and the active property
            # of the other one changes to 'False'
            return

        if self.props.lock_palette and not self.locked:
            self.locked = True
            if hasattr(self.parent, 'set_expanded'):
                self.parent.set_expanded(True)

        if self.props.toggle_palette:
            self.notify_toggle_state()
    def __click_event_cb(self, button):
        event = Gtk.get_current_event()
        if not event:
            # not an event from a user interaction, this can be when
            # the clicked event is emitted on a 'active' property
            # change of ToggleToolButton for example
            return
        if event and button != Gtk.get_event_widget(event):
            # another special case for the ToggleToolButton: this handles
            # the case where we select an item and the active property
            # of the other one changes to 'False'
            return

        if self.props.lock_palette and not self.locked:
            self.locked = True
            if hasattr(self.parent, 'set_expanded'):
                self.parent.set_expanded(True)

        if self.props.toggle_palette:
            self.notify_toggle_state()
Example #11
0
    def do_button_press_event(self, event):
        event_widget = Gtk.get_event_widget(event)
        button = event.button
        if button == Gdk.BUTTON_PRIMARY:
            if isinstance(event_widget, Marker):
                if event.type == Gdk.EventType.BUTTON_PRESS:
                    self.marker_moving = event_widget
                    self.marker_moving.selected = True
                    self.app.action_log.begin("Move marker", toplevel=True)

                elif event.type == Gdk.EventType.DOUBLE_BUTTON_PRESS:
                    self.marker_moving = None
                    self.app.action_log.rollback()
                    marker_popover = MarkerPopover(self.app, event_widget)
                    marker_popover.popup()

            else:
                position = self.pixel_to_ns(event.x + self.offset)
                param = GLib.Variant.new_maybe(GLib.VariantType("x"), GLib.Variant.new_int64(position))
                self.add_marker_action.activate(param)
                self.marker_new.selected = True
Example #12
0
 def __widget_button_release_cb(self, widget, event):
     event_widget = Gtk.get_event_widget(event)
     if isinstance(event_widget, PaletteMenuItem):
         self.popdown(immediate=True)
     return False
Example #13
0
 def __widget_button_release_cb(self, widget, event):
     event_widget = Gtk.get_event_widget(event)
     if isinstance(event_widget, PaletteMenuItem):
         self.popdown(immediate=True)
     return False
Example #14
0
    def do_event(self, event):
        if event.type == Gdk.EventType.ENTER_NOTIFY and event.mode == Gdk.CrossingMode.NORMAL:
            self.__setupEditSource()
            if self.__editSource:
                self.get_window().set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1))
        elif event.type == Gdk.EventType.BUTTON_RELEASE:
            self.__startDraggingPosition = None
        elif event.type == Gdk.EventType.LEAVE_NOTIFY and event.mode == Gdk.CrossingMode.NORMAL:
            self.get_window().set_cursor(None)
            self.__startDraggingPosition = None
            self.__editSource = None
            self.__startEditSourcePosition = None
        elif event.type == Gdk.EventType.BUTTON_PRESS:
            self.__setupEditSource()
            if self.__editSource:
                res_x, current_x = self.__editSource.get_child_property("posx")
                res_y, current_y = self.__editSource.get_child_property("posy")

                if res_x and res_y:
                    event_widget = Gtk.get_event_widget(event)
                    x, y = event_widget.translate_coordinates(self, event.x, event.y)
                    self.__startEditSourcePosition = (current_x, current_y)
                    self.__startDraggingPosition = (x, y)
        elif event.type == Gdk.EventType.MOTION_NOTIFY:
            if self.__startDraggingPosition and self.__editSource:
                event_widget = Gtk.get_event_widget(event)
                x, y = event_widget.translate_coordinates(self, event.x, event.y)
                self.__editSource.set_child_property("posx",
                                                     self.__startEditSourcePosition[0] +
                                                     (x - self.__startDraggingPosition[0]))

                self.__editSource.set_child_property("posy", self.__startEditSourcePosition[1] +
                                                     (y - self.__startDraggingPosition[1]))
                self.app.project_manager.current_project.pipeline.commit_timeline()
        elif event.type == Gdk.EventType.SCROLL:
            if self.__editSource:
                res, delta_x, delta_y = event.get_scroll_deltas()
                if not res:
                    res, direction = event.get_scroll_direction()
                    if not res:
                        self.error("Could not get scroll delta")
                        return True

                    if direction == Gdk.ScrollDirection.UP:
                        delta_y = -1.0
                    elif direction == Gdk.ScrollDirection.DOWN:
                        delta_y = 1.0
                    else:
                        self.error("Could not handle %s scroll event" % direction)
                        return True

                delta_y = delta_y * -1.0
                width = self.__editSource.get_child_property("width")[1]
                height = self.__editSource.get_child_property("height")[1]
                if event.get_state()[1] & Gdk.ModifierType.SHIFT_MASK:
                    height += delta_y
                elif event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK:
                    width += delta_y
                else:
                    width += delta_y
                    wpercent = float(width) / float(self.__editSource.get_asset().get_stream_info().get_width())
                    height = int(float(self.__editSource.get_asset().get_stream_info().get_height()) * float(wpercent))

                self.__editSource.set_child_property("width", width)
                self.__editSource.set_child_property("height", height)
                self.app.project_manager.current_project.pipeline.commit_timeline()

        return True
Example #15
0
    def do_event(self, event):
        if event.type == Gdk.EventType.ENTER_NOTIFY and event.mode == Gdk.CrossingMode.NORMAL:
            self.__setupEditSource()
            if self.__editSource:
                self.get_window().set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1))
        elif event.type == Gdk.EventType.BUTTON_RELEASE:
            self.__startDraggingPosition = None
        elif event.type == Gdk.EventType.LEAVE_NOTIFY and event.mode == Gdk.CrossingMode.NORMAL:
            self.get_window().set_cursor(None)
            self.__startDraggingPosition = None
            self.__editSource = None
            self.__startEditSourcePosition = None
        elif event.type == Gdk.EventType.BUTTON_PRESS:
            self.__setupEditSource()
            if self.__editSource:
                res_x, current_x = self.__editSource.get_child_property("posx")
                res_y, current_y = self.__editSource.get_child_property("posy")

                if res_x and res_y:
                    event_widget = Gtk.get_event_widget(event)
                    x, y = event_widget.translate_coordinates(self, event.x, event.y)
                    self.__startEditSourcePosition = (current_x, current_y)
                    self.__startDraggingPosition = (x, y)
                    if type(self.__editSource) == GES.TitleSource:
                        res_x, xpos = self.__editSource.get_child_property("xpos")
                        res_y, ypos = self.__editSource.get_child_property("ypos")
                        assert res_x
                        assert res_y
                        self.__startDraggingTitlePos = (xpos, ypos)
        elif event.type == Gdk.EventType.MOTION_NOTIFY:
            if self.__startDraggingPosition and self.__editSource:
                event_widget = Gtk.get_event_widget(event)
                x, y = event_widget.translate_coordinates(self, event.x, event.y)
                delta_x = x - self.__startDraggingPosition[0]
                delta_y = y - self.__startDraggingPosition[1]
                if type(self.__editSource) == GES.TitleSource:
                    self.__editSource.set_child_property("halignment", GES.TextHAlign.POSITION)
                    self.__editSource.set_child_property("valignment", GES.TextVAlign.POSITION)
                    alloc = self.get_allocation()
                    delta_xpos = delta_x / alloc.width
                    delta_ypos = delta_y / alloc.height
                    xpos = max(0, min(self.__startDraggingTitlePos[0] + delta_xpos, 1))
                    ypos = max(0, min(self.__startDraggingTitlePos[1] + delta_ypos, 1))
                    self.__editSource.set_child_property("xpos", xpos)
                    self.__editSource.set_child_property("ypos", ypos)
                else:
                    self.__editSource.set_child_property("posx",
                                                         self.__startEditSourcePosition[0] +
                                                         delta_x)

                    self.__editSource.set_child_property("posy", self.__startEditSourcePosition[1] +
                                                         delta_y)
                self.app.project_manager.current_project.pipeline.commit_timeline()
        elif event.type == Gdk.EventType.SCROLL:
            if self.__editSource:
                res, delta_x, delta_y = event.get_scroll_deltas()
                if not res:
                    res, direction = event.get_scroll_direction()
                    if not res:
                        self.error("Could not get scroll delta")
                        return True

                    if direction == Gdk.ScrollDirection.UP:
                        delta_y = -1.0
                    elif direction == Gdk.ScrollDirection.DOWN:
                        delta_y = 1.0
                    else:
                        self.error("Could not handle %s scroll event" % direction)
                        return True

                delta_y = delta_y * -1.0
                width = self.__editSource.get_child_property("width")[1]
                height = self.__editSource.get_child_property("height")[1]
                if event.get_state()[1] & Gdk.ModifierType.SHIFT_MASK:
                    height += delta_y
                elif event.get_state()[1] & Gdk.ModifierType.CONTROL_MASK:
                    width += delta_y
                else:
                    width += delta_y
                    if isinstance(self.__editSource, GES.VideoUriSource):
                        wpercent = float(width) / float(self.__editSource.get_asset().get_stream_info().get_width())
                        height = int(float(self.__editSource.get_asset().get_stream_info().get_height()) * float(wpercent))
                    else:
                        wpercent = float(width) / float(self.app.project_manager.current_project.videowidth)
                        height = int(float(self.app.project_manager.current_project.videoheight) * float(wpercent))

                self.__editSource.set_child_property("width", width)
                self.__editSource.set_child_property("height", height)
                self.app.project_manager.current_project.pipeline.commit_timeline()

        return True