emmental/emmental/tracklist/__init__.py

40 lines
1.4 KiB
Python

# Copyright 2022 (c) Anna Schumaker.
"""A card for displaying a list of tracks."""
from gi.repository import GObject
from gi.repository import Gtk
from .. import db
from .. import entry
from .. import playlist
from . import trackview
class Card(Gtk.Box):
"""Our Tracklist."""
sql = GObject.Property(type=db.Connection)
playlist = GObject.Property(type=playlist.playlist.Playlist)
def __init__(self, sql: db.Connection, **kwargs):
"""Set up the Tracklist widget."""
super().__init__(sql=sql, orientation=Gtk.Orientation.VERTICAL,
spacing=6, **kwargs)
self._top_box = Gtk.CenterBox(margin_top=6, margin_start=6,
margin_end=6)
self._filter = entry.Filter("tracks", hexpand=True,
margin_start=100, margin_end=100)
self._trackview = trackview.TrackView(sql, margin_start=6,
margin_end=6)
self._top_box.set_center_widget(self._filter)
self.append(self._top_box)
self.append(self._trackview)
self.bind_property("playlist", self._trackview, "playlist")
self._filter.connect("search-changed", self.__search_changed)
self.add_css_class("card")
def __search_changed(self, filter: entry.Filter) -> None:
self.sql.tracks.filter(filter.get_query())