From 580358a88e19c2390ca2136fbb8dc0c27d7eb725 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 5 Dec 2021 13:55:37 -0500 Subject: [PATCH] playlist: Add some useful key presses Escape to clear the list of selected tracks and Delete to remove tracks from playlists. Signed-off-by: Anna Schumaker --- playlist/__init__.py | 19 +++++++++++++++++++ playlist/view.py | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/playlist/__init__.py b/playlist/__init__.py index 6f692ac..68989ad 100644 --- a/playlist/__init__.py +++ b/playlist/__init__.py @@ -1,5 +1,7 @@ # Copyright 2021 (c) Anna Schumaker. +import db import audio +from gi.repository import Gdk from gi.repository import Gtk from . import footer from . import header @@ -19,6 +21,10 @@ class Panel(Gtk.Box): self.append(Gtk.Separator.new(Gtk.Orientation.HORIZONTAL)) self.append(self.footer) + keypress = Gtk.EventControllerKey.new() + keypress.connect("key-pressed", self.key_pressed) + self.add_controller(keypress) + self.header.get_jump_button().connect("clicked", self.jump_clicked) def get_playlist(self): return self.window.get_playlist() @@ -26,6 +32,19 @@ class Panel(Gtk.Box): self.header.set_playlist(plist) self.window.set_playlist(plist) + def key_pressed(self, event, keyval, keycode, state): + name = Gdk.keyval_name(keyval) + if name == "Escape": + self.window.clear_selection() + return True + elif name == "Delete": + playlist = self.get_playlist() + if playlist and playlist.can_add_remove_tracks(): + for track in self.selected_tracks(): + playlist.remove_track(track) + return True + return False + def jump_clicked(self, button): view = self.window.get_child() view.track_changed(audio.Player, None, audio.Player.track) diff --git a/playlist/view.py b/playlist/view.py index 0757e8e..7e63c00 100644 --- a/playlist/view.py +++ b/playlist/view.py @@ -39,6 +39,9 @@ class PlaylistView(Gtk.ColumnView): for n in range(selection.get_size()): yield model.get_item(selection.get_nth(n)) + def clear_selection(self): + self.get_model().unselect_all() + def track_changed(self, player, old, new): selection = self.get_model() adjustment = self.get_vadjustment() @@ -63,6 +66,7 @@ class PlaylistWindow(Gtk.ScrolledWindow): def get_playlist(self): return self.get_child().get_playlist() def set_playlist(self, plist): self.get_child().set_playlist(plist) def selected_tracks(self): return self.get_child().selected_tracks() + def clear_selection(self): self.get_child().clear_selection() class SortOrderView(Gtk.ListView):