65 lines
1.9 KiB
Python
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")
|