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)
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 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
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 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)
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 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
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
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
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