# 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")