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 <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-12-05 13:55:37 -05:00
parent 52415cf4da
commit 580358a88e
2 changed files with 23 additions and 0 deletions

View File

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

View File

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