def on_scroll_event(self, widget, event): """ Changes the volume on scrolling """ page_increment = self.slider_adjustment.props.page_increment step_increment = self.slider_adjustment.props.step_increment value = self.slider.get_value() if event.direction in (Gdk.ScrollDirection.DOWN, Gdk.ScrollDirection.LEFT): if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.slider.set_value(value - page_increment) else: self.slider.set_value(value - step_increment) return True elif event.direction in (Gdk.ScrollDirection.UP, Gdk.ScrollDirection.RIGHT): if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.slider.set_value(value + page_increment) else: self.slider.set_value(value + step_increment) return True elif event.direction == Gdk.ScrollDirection.SMOOTH: delta = event.delta_x - event.delta_y if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.slider.set_value(value + delta * page_increment) else: self.slider.set_value(value + delta * step_increment) return True return False
def on_key_released(self, widget, event): """ Called when a key is released in the tree """ if event.keyval == Gdk.KEY_Menu: Gtk.Menu.popup(self.menu, None, None, None, None, 0, event.time) return True if event.keyval == Gdk.KEY_Left and Gdk.ModifierType.MOD1_MASK & event.get_state(): self.go_back(self.tree) return True if event.keyval == Gdk.KEY_Right and Gdk.ModifierType.MOD1_MASK & event.get_state(): self.go_forward(self.tree) return True if event.keyval == Gdk.KEY_Up and Gdk.ModifierType.MOD1_MASK & event.get_state(): self.go_up(self.tree) return True if event.keyval == Gdk.KEY_BackSpace: self.go_up(self.tree) return True if event.keyval == Gdk.KEY_F5: self.refresh(self.tree) return True return False
def on_key_released(self, widget, event): """ Called when a key is released in the tree """ if event.keyval == Gdk.KEY_Menu: Gtk.Menu.popup(self.menu, None, None, None, None, 0, event.time) return True if event.keyval == Gdk.KEY_Left and Gdk.ModifierType.MOD1_MASK & event.get_state( ): self.go_back(self.tree) return True if event.keyval == Gdk.KEY_Right and Gdk.ModifierType.MOD1_MASK & event.get_state( ): self.go_forward(self.tree) return True if event.keyval == Gdk.KEY_Up and Gdk.ModifierType.MOD1_MASK & event.get_state( ): self.go_up(self.tree) return True if event.keyval == Gdk.KEY_BackSpace: self.go_up(self.tree) return True if event.keyval == Gdk.KEY_F5: self.refresh(self.tree) return True return False
def on_scroll_event(self, widget, event): """ Changes the volume on scrolling """ page_increment = self.slider_adjustment.props.page_increment step_increment = self.slider_adjustment.props.step_increment value = self.slider.get_value() if event.direction == Gdk.ScrollDirection.DOWN: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.slider.set_value(value - page_increment) else: self.slider.set_value(value - step_increment) return True elif event.direction == Gdk.ScrollDirection.UP: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.slider.set_value(value + page_increment) else: self.slider.set_value(value + step_increment) return True elif event.direction == Gdk.ScrollDirection.SMOOTH: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.slider.set_value(value - event.delta_y * page_increment) else: self.slider.set_value(value - event.delta_y * step_increment) return True return False
def do_key_press_event(self, event): """ Prepares seeking via keyboard interaction * Alt+Up/Right: seek 1% forward * Alt+Down/Left: seek 1% backward """ _, state = event.get_state() if state & Gtk.StateType.INSENSITIVE: return if not state & Gdk.ModifierType.MOD1_MASK: return if event.keyval in (Gdk.KEY_Up, Gdk.KEY_Right): direction = 1 elif event.keyval in (Gdk.KEY_Down, Gdk.KEY_Left): direction = -1 else: return press_event = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) press_event.button = 1 new_fraction = self.__progressbar.get_fraction() + 0.01 * direction alloc = self.get_allocation() press_event.x = alloc.width * new_fraction press_event.y = float(alloc.y) self.emit('button-press-event', press_event)
def do_key_press_event(self, event): """ Changes the rating on keyboard interaction * Alt+Up/Right: increases the rating * Alt+Down/Left: decreases the rating """ if self.get_state() & Gtk.StateType.INSENSITIVE: return if not event.get_state() & Gdk.ModifierType.MOD1_MASK: return if event.keyval in (Gdk.KEY_Up, Gdk.KEY_Right): rating = self.props.rating + 1 elif event.keyval in (Gdk.KEY_Down, Gdk.KEY_Left): rating = self.props.rating - 1 else: return rating = max(0, rating) # Prevents unsetting rating if maximum is reached if rating == self.props.rating: return self.props.rating = rating
def do_key_press_event(self, event): """ Changes the rating on keyboard interaction * Alt+Up/Right: increases the rating * Alt+Down/Left: decreases the rating """ if self.get_state_flags() & Gtk.StateType.INSENSITIVE: return if not event.get_state() & Gdk.ModifierType.MOD1_MASK: return if event.keyval in (Gdk.KEY_Up, Gdk.KEY_Right): rating = self.props.rating + 1 elif event.keyval in (Gdk.KEY_Down, Gdk.KEY_Left): rating = self.props.rating - 1 else: return rating = max(0, rating) # Prevents unsetting rating if maximum is reached if rating == self.props.rating: return self.props.rating = rating
def do_key_press_event(self, event): """ Prepares seeking via keyboard interaction * Alt+Up/Right: seek 1% forward * Alt+Down/Left: seek 1% backward """ _, state = event.get_state() if state & Gtk.StateType.INSENSITIVE: return if not state & Gdk.ModifierType.MOD1_MASK: return if event.keyval in (Gdk.KEY_Up, Gdk.KEY_Right): direction = 1 elif event.keyval in (Gdk.KEY_Down, Gdk.KEY_Left): direction = -1 else: return press_event = Gdk.Event.new(Gdk.EventType.BUTTON_PRESS) press_event.button = Gdk.BUTTON_PRIMARY new_fraction = self.__progressbar.get_fraction() + 0.01 * direction alloc = self.get_allocation() press_event.x = alloc.width * new_fraction press_event.y = float(alloc.y) self.emit('button-press-event', press_event)
def on_stop_button_leave_notify_event(self, widget, event): """ Unsets the hover state and resets the button icon """ widget.__hovered = False if not widget.is_focus() and ~(event.get_state() & Gdk.ModifierType.SHIFT_MASK): widget.set_image( Gtk.Image.new_from_icon_name('media-playback-stop', Gtk.IconSize.BUTTON) )
def on_stop_button_leave_notify_event(self, widget, event): """ Unsets the hover state and resets the button icon """ widget.__hovered = False if not widget.is_focus() and \ ~(event.get_state() & Gdk.ModifierType.SHIFT_MASK): widget.set_image(Gtk.Image.new_from_icon_name( 'media-playback-stop', Gtk.IconSize.BUTTON))
def on_refresh_button_key_press_event(self, widget, event): """ Called on key presses on the refresh button """ if event.keyval != Gdk.KEY_Return: return False if event.get_state() & Gdk.ModifierType.SHIFT_MASK: xlgui.get_controller().on_rescan_collection(None) else: self.load_tree()
def do_motion_notify_event(self, event): """ Indicates SPAT """ _, state = event.get_state() if state & Gdk.ModifierType.SHIFT_MASK: self._queue_spat = True self.update_state() self._hovered = True
def on_stop_button_motion_notify_event(self, widget, event): """ Sets the hover state and shows SPAT icon """ widget.__hovered = True if event.get_state() & Gdk.ModifierType.SHIFT_MASK: widget.set_image(Gtk.Image.new_from_icon_name( 'process-stop', Gtk.IconSize.BUTTON)) else: widget.set_image(Gtk.Image.new_from_icon_name( 'media-playback-stop', Gtk.IconSize.BUTTON))
def on_scroll_event(self, widget, event): """ Seek on scroll as VLC does """ if not self.__player.current: return True if self.__player.current.get_tag_raw('__length') is None: return True progress = self.__player.get_progress() progress_delta = 0.05 # 5% of track length progress_delta_small = 0.005 # 0.5% of track length if ( event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.LEFT ): if event.get_state() & Gdk.ModifierType.SHIFT_MASK: new_progress = progress - progress_delta_small else: new_progress = progress - progress_delta elif ( event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.RIGHT ): if event.get_state() & Gdk.ModifierType.SHIFT_MASK: new_progress = progress + progress_delta_small else: new_progress = progress + progress_delta elif event.direction == Gdk.ScrollDirection.SMOOTH: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: new_progress = progress + progress_delta_small * ( event.deltax + event.deltay ) else: new_progress = progress + progress_delta * (event.deltax + event.deltay) self.__player.set_progress(clamp(new_progress, 0, 1)) self.update_progress() return True
def on_stop_button_press_event(self, widget, event): """ Called when the user clicks on the stop button """ if event.button == 1: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.on_spat_clicked() elif event.button == 3: menu = guiutil.Menu() menu.append(_("Toggle: Stop after Selected Track"), self.on_spat_clicked, 'process-stop') menu.popup(None, None, None, None, event.button, event.time)
def on_stop_button_press_event(self, widget, event): """ Called when the user clicks on the stop button """ if event.button == Gdk.BUTTON_PRIMARY: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.on_spat_clicked() elif event.triggers_context_menu(): m = menu.Menu(self) m.attach_to_widget(widget) m.add_simple(_("Toggle: Stop after Selected Track"), self.on_spat_clicked, 'process-stop') m.popup(event)
def on_stop_button_press_event(self, widget, event): """ Called when the user clicks on the stop button """ if event.button == Gdk.BUTTON_PRIMARY: if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.on_spat_clicked() elif event.triggers_context_menu(): m = menu.Menu(self) m.attach_to_widget(widget) m.add_simple( _("Toggle: Stop after Selected Track"), self.on_spat_clicked, 'process-stop', ) m.popup(event)
def on_refresh_button_press_event(self, button, event): """ Called on mouse activation of the refresh button """ if event.button == 3: menu = guiutil.Menu() menu.append(_('Rescan Collection'), xlgui.get_controller().on_rescan_collection, Gtk.STOCK_REFRESH) menu.popup(None, None, None, None, event.button, event.time) return if event.get_state() & Gdk.ModifierType.SHIFT_MASK: xlgui.get_controller().on_rescan_collection(None) else: self.load_tree()
def on_refresh_button_press_event(self, button, event): """ Called on mouse activation of the refresh button """ if event.triggers_context_menu(): m = menu.Menu(None) m.attach_to_widget(button) m.add_simple(_('Rescan Collection'), xlgui.get_controller().on_rescan_collection, Gtk.STOCK_REFRESH) m.popup(event) return if event.get_state() & Gdk.ModifierType.SHIFT_MASK: xlgui.get_controller().on_rescan_collection(None) else: self.load_tree()
def button_release(self, widget, event): """ Called when the user releases the mouse button on the tree """ selection = self.tree.get_selection() (x, y) = map(int, event.get_coords()) path = self.tree.get_path_at_pos(x, y) if event.button == 3: self.menu.popup(event) if not path: return False (mods, paths) = selection.get_selected_rows() if (path[0] in paths): if event.get_state() & guiutil.ModifierType.PRIMARY_SHIFT_MASK: return False return True else: return False
def button_release(self, widget, event): """ Called when the user releases the mouse button on the tree """ selection = self.tree.get_selection() (x, y) = map(int, event.get_coords()) path = self.tree.get_path_at_pos(x, y) if event.button == 3: self.menu.popup(event) if not path: return False (mods,paths) = selection.get_selected_rows() if (path[0] in paths): if event.get_state() & (Gdk.ModifierType.SHIFT_MASK|Gdk.ModifierType.CONTROL_MASK): return False return True else: return False
def button_release(self, button, event): """ Called when the user clicks on the playlist """ if event.button == 3: selection = self.tree.get_selection() (x, y) = map(int, event.get_coords()) path = self.tree.get_path_at_pos(x, y) self.menu.popup(event) if not path: return False model, paths = selection.get_selected_rows() if path[0] in paths: if event.get_state() & (Gdk.ModifierType.SHIFT_MASK|Gdk.ModifierType.CONTROL_MASK): return False return True else: return False return False
def button_release(self, button, event): """ Called when the user clicks on the playlist """ if event.button == Gdk.BUTTON_SECONDARY: selection = self.tree.get_selection() (x, y) = map(int, event.get_coords()) path = self.tree.get_path_at_pos(x, y) self.menu.popup(event) if not path: return False model, paths = selection.get_selected_rows() if path[0] in paths: if event.get_state() & guiutil.ModifierType.PRIMARY_SHIFT_MASK: return False return True else: return False return False
def on_key_press_event(self, tree, event): """ Allows for reordering via keyboard (Alt+<direction>) """ if not event.get_state() & Gdk.ModifierType.MOD1_MASK: return if event.keyval not in (Gdk.KEY_Up, Gdk.KEY_Down): return model, selected_iter = tree.get_selection().get_selected() if event.keyval == Gdk.KEY_Up: previous_iter = self.iter_prev(selected_iter, model) model.move_before(selected_iter, previous_iter) elif event.keyval == Gdk.KEY_Down: next_iter = model.iter_next(selected_iter) model.move_after(selected_iter, next_iter) tree.scroll_to_cell(model.get_path(selected_iter)) self.selectionlp.apply()
def on_scroll_event(self, widget, event): """ Changes volume and skips tracks on scroll """ if event.get_state() & Gdk.ModifierType.SHIFT_MASK: if event.direction == Gdk.ScrollDirection.UP: player.QUEUE.prev() elif event.direction == Gdk.ScrollDirection.DOWN: player.QUEUE.next() else: if event.direction == Gdk.ScrollDirection.UP: volume = settings.get_option('player/volume', 1) settings.set_option('player/volume', min(volume + self.VOLUME_STEP, 1)) return True elif event.direction == Gdk.ScrollDirection.DOWN: volume = settings.get_option('player/volume', 1) settings.set_option('player/volume', max(0, volume - self.VOLUME_STEP)) return True elif event.direction == Gdk.ScrollDirection.LEFT: player.QUEUE.prev() elif event.direction == Gdk.ScrollDirection.RIGHT: player.QUEUE.next()
def do_key_release_event(self, event): """ Completes seeking via keyboard interaction """ _, state = event.get_state() if not state & Gdk.ModifierType.MOD1_MASK: return if event.keyval in (Gdk.KEY_Up, Gdk.KEY_Right): direction = 1 elif event.keyval in (Gdk.KEY_Down, Gdk.KEY_Left): direction = -1 else: return release_event = Gdk.Event.new(Gdk.EventType.BUTTON_RELEASE) release_event.button = 1 new_fraction = self.__progressbar.get_fraction() + 0.01 * direction alloc = self.get_allocation() release_event.x = alloc.width * new_fraction release_event.y = float(alloc.y) self.emit('button-release-event', release_event)
def do_key_release_event(self, event): """ Completes seeking via keyboard interaction """ _, state = event.get_state() if not state & Gdk.ModifierType.MOD1_MASK: return if event.keyval in (Gdk.KEY_Up, Gdk.KEY_Right): direction = 1 elif event.keyval in (Gdk.KEY_Down, Gdk.KEY_Left): direction = -1 else: return release_event = Gdk.Event.new(Gdk.EventType.BUTTON_RELEASE) release_event.button = Gdk.BUTTON_PRIMARY new_fraction = self.__progressbar.get_fraction() + 0.01 * direction alloc = self.get_allocation() release_event.x = alloc.width * new_fraction release_event.y = float(alloc.y) self.emit('button-release-event', release_event)
def on_refresh_button_press_event(self, button, event): """Override the referesh button action.""" if event.get_state() & Gdk.ModifierType.SHIFT_MASK: self.collection.rescan_media_server() else: self.load_tree()