sidebar: Add a key event controller to user tagrows

And respond to the delete key to remove playlists

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-17 11:05:39 -04:00
parent 00d43547e5
commit 193dd7c85c
2 changed files with 10 additions and 1 deletions

View File

@ -29,6 +29,7 @@ class TestUserSidebar(unittest.TestCase):
row = user.UserTagRow(tag, "audio-x-generic")
self.assertIsInstance(row.remove, Gtk.Button)
self.assertIsInstance(row.KeyEvent, Gtk.EventControllerKey)
self.assertEqual(row.remove.get_icon_name(), "list-remove")
self.assertIn(row.remove, row.grid)

View File

@ -1,7 +1,7 @@
# Copyright 2021 (c) Anna Schumaker.
from . import tagbox
from . import tagrow
from gi.repository import Gtk
from gi.repository import Gtk, Gdk
import trackdb
Icons = { "Collection" : "media-playback-start",
@ -18,6 +18,14 @@ class UserTagRow(tagrow.TagRow):
self.remove.connect("clicked", self.remove_tag)
self.grid.attach(self.remove, 2, 0, 1, 1)
self.KeyEvent = Gtk.EventControllerKey()
self.KeyEvent.connect("key-released", self.on_key_released)
self.add_controller(self.KeyEvent)
def on_key_released(self, controller, keyval, keycode, state):
if Gdk.keyval_name(keyval) == "Delete":
trackdb.tags.User.remove(self.tag)
def remove_tag(self, button):
trackdb.tags.User.remove(self.tag)