emmental/sidebar/user.py

41 lines
1.3 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from . import tagbox
from . import tagrow
from gi.repository import Gtk, Gdk
import tagdb
Icons = { "Collection" : "media-playback-start",
"Favorites" : "emblem-favorites",
"New Tracks" : "starred",
"Previous" : "edit-undo",
"Up Next" : "edit-redo" }
class UserTagRow(tagrow.TagRow):
def __init__(self, tag, icon):
tagrow.TagRow.__init__(self, tag, icon)
self.remove = Gtk.Button.new_from_icon_name("list-remove")
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":
tagdb.tags.User.remove(self.tag)
def remove_tag(self, button):
tagdb.tags.User.remove(self.tag)
class UserTagBox(tagbox.TagBox):
def __alloc_tagrow__(self, tag):
if tag.name not in Icons.keys():
return UserTagRow(tag, self.icon)
return tagrow.TagRow(tag, Icons.get(tag.name, self.icon))
TagBox = UserTagBox(tagdb.tags.User, "audio-x-generic")