Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
    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)
Exemple #6
0
    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
Exemple #7
0
    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
Exemple #8
0
    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)
Exemple #9
0
 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)
         )
Exemple #10
0
 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))
Exemple #11
0
    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()
Exemple #12
0
    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
Exemple #13
0
    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
Exemple #14
0
    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()
Exemple #15
0
 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))
Exemple #16
0
    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
Exemple #17
0
    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
Exemple #18
0
 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)
Exemple #19
0
 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)
Exemple #20
0
 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)
Exemple #21
0
 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)
Exemple #22
0
    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()
Exemple #23
0
    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()
Exemple #24
0
    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()
Exemple #25
0
 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
Exemple #26
0
 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
Exemple #27
0
    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
Exemple #28
0
    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
Exemple #29
0
        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()
Exemple #30
0
        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()
Exemple #31
0
 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()
Exemple #32
0
 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()
Exemple #33
0
    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)
Exemple #34
0
    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()