41 lines
1.3 KiB
Python
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")
|