emmental/playlist/controls.py

65 lines
1.9 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from . import filter
from . import popover
from gi.repository import Gtk
import tagdb
class Controls(Gtk.Box):
def __init__(self):
Gtk.Box.__init__(self)
self.tag = None
self.filter = filter.Filter()
self.search = Gtk.SearchEntry()
self.search.set_property("placeholder-text", "Type to filter tracks")
self.search.connect("search-changed", self.search_changed)
self.search.set_hexpand(True)
self.append(self.search)
self.random = Gtk.ToggleButton()
self.random.set_icon_name("media-playlist-shuffle")
self.random.connect("toggled", self.random_toggled)
self.random.set_sensitive(False)
self.append(self.random)
self.loop = Gtk.ToggleButton()
self.loop.set_icon_name("media-playlist-repeat")
self.loop.connect("toggled", self.loop_toggled)
self.loop.set_sensitive(False)
self.append(self.loop)
self.add_popover = popover.AddPopover()
self.add = Gtk.MenuButton()
self.add.set_icon_name("list-add")
self.add.set_popover(self.add_popover)
self.add.set_sensitive(False)
self.append(self.add)
self.add_css_class("linked")
def set_tag(self, tag):
self.tag = tag
self.add.set_sensitive(tag is not None)
self.random.set_sensitive(tag.can_random())
self.random.set_active(tag.random)
self.loop.set_sensitive(tag.can_loop())
self.loop.set_active(tag.loop)
def random_toggled(self, toggle):
self.tag.random = toggle.get_active()
tagdb.save()
def loop_toggled(self, toggle):
self.tag.loop = toggle.get_active()
tagdb.save()
def search_changed(self, search):
try:
self.filter.set_search_text(search.get_text())
self.search.remove_css_class("warning")
except:
self.search.add_css_class("warning")