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:
parent
52415cf4da
commit
580358a88e
|
@ -1,5 +1,7 @@
|
||||||
# Copyright 2021 (c) Anna Schumaker.
|
# Copyright 2021 (c) Anna Schumaker.
|
||||||
|
import db
|
||||||
import audio
|
import audio
|
||||||
|
from gi.repository import Gdk
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
from . import footer
|
from . import footer
|
||||||
from . import header
|
from . import header
|
||||||
|
@ -19,6 +21,10 @@ class Panel(Gtk.Box):
|
||||||
self.append(Gtk.Separator.new(Gtk.Orientation.HORIZONTAL))
|
self.append(Gtk.Separator.new(Gtk.Orientation.HORIZONTAL))
|
||||||
self.append(self.footer)
|
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)
|
self.header.get_jump_button().connect("clicked", self.jump_clicked)
|
||||||
|
|
||||||
def get_playlist(self): return self.window.get_playlist()
|
def get_playlist(self): return self.window.get_playlist()
|
||||||
|
@ -26,6 +32,19 @@ class Panel(Gtk.Box):
|
||||||
self.header.set_playlist(plist)
|
self.header.set_playlist(plist)
|
||||||
self.window.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):
|
def jump_clicked(self, button):
|
||||||
view = self.window.get_child()
|
view = self.window.get_child()
|
||||||
view.track_changed(audio.Player, None, audio.Player.track)
|
view.track_changed(audio.Player, None, audio.Player.track)
|
||||||
|
|
|
@ -39,6 +39,9 @@ class PlaylistView(Gtk.ColumnView):
|
||||||
for n in range(selection.get_size()):
|
for n in range(selection.get_size()):
|
||||||
yield model.get_item(selection.get_nth(n))
|
yield model.get_item(selection.get_nth(n))
|
||||||
|
|
||||||
|
def clear_selection(self):
|
||||||
|
self.get_model().unselect_all()
|
||||||
|
|
||||||
def track_changed(self, player, old, new):
|
def track_changed(self, player, old, new):
|
||||||
selection = self.get_model()
|
selection = self.get_model()
|
||||||
adjustment = self.get_vadjustment()
|
adjustment = self.get_vadjustment()
|
||||||
|
@ -63,6 +66,7 @@ class PlaylistWindow(Gtk.ScrolledWindow):
|
||||||
def get_playlist(self): return self.get_child().get_playlist()
|
def get_playlist(self): return self.get_child().get_playlist()
|
||||||
def set_playlist(self, plist): self.get_child().set_playlist(plist)
|
def set_playlist(self, plist): self.get_child().set_playlist(plist)
|
||||||
def selected_tracks(self): return self.get_child().selected_tracks()
|
def selected_tracks(self): return self.get_child().selected_tracks()
|
||||||
|
def clear_selection(self): self.get_child().clear_selection()
|
||||||
|
|
||||||
|
|
||||||
class SortOrderView(Gtk.ListView):
|
class SortOrderView(Gtk.ListView):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user