sidebar: Move the Filter into a Gtk.CenterBox

I'm going to add a button to jump to the current playlist, and the first
step is to add an area to put it in the sidebar.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2023-06-25 21:10:25 -04:00
parent 7e99fd1ba0
commit 1707f87e45
2 changed files with 15 additions and 4 deletions

View File

@ -23,7 +23,8 @@ class Card(Gtk.Box):
"""Set up the Sidebar widget."""
super().__init__(sql=sql, orientation=Gtk.Orientation.VERTICAL,
sensitive=False, **kwargs)
self._filter = entry.Filter("playlists")
self._header = Gtk.CenterBox()
self._filter = entry.Filter("playlists", hexpand=True)
self._playlists = playlist.Section(self.sql.playlists)
self._artists = artist.Section(self.sql.artists, self.sql.albums)
self._genres = genre.Section(self.sql.genres)
@ -31,7 +32,8 @@ class Card(Gtk.Box):
self._libraries = library.Section(self.sql.libraries)
self._view = section.View(sql)
self.append(self._filter)
self._header.set_center_widget(self._filter)
self.append(self._header)
for sect in [self._playlists, self._artists, self._genres,
self._decades, self._libraries]:
@ -46,6 +48,7 @@ class Card(Gtk.Box):
self._filter.connect("search-changed", self.__search_changed)
self.sql.connect("table-loaded", self.__table_loaded)
self._header.add_css_class("toolbar")
self.add_css_class("card")
def __search_changed(self, entry: entry.Filter) -> None:

View File

@ -25,13 +25,21 @@ class TestSidebar(tests.util.TestCase):
self.assertTrue(self.sidebar.has_css_class("card"))
def test_header(self):
"""Test the Sidebar header."""
self.assertIsInstance(self.sidebar._header, Gtk.CenterBox)
self.assertEqual(self.sidebar.get_first_child(), self.sidebar._header)
self.assertTrue(self.sidebar._header.has_css_class("toolbar"))
def test_filter(self):
"""Test the Sidebar filter entry."""
self.assertIsInstance(self.sidebar._filter, emmental.entry.Filter)
self.assertEqual(self.sidebar.get_first_child(), self.sidebar._filter)
self.assertEqual(self.sidebar._header.get_center_widget(),
self.sidebar._filter)
self.assertEqual(self.sidebar._filter.get_placeholder_text(),
"type to filter playlists")
self.assertTrue(self.sidebar._filter.get_hexpand())
with unittest.mock.patch.object(self.sql, "filter") as mock_filter:
self.sidebar._filter.set_text("test text")
@ -78,7 +86,7 @@ class TestSidebar(tests.util.TestCase):
"""Test that sidebar sections are in the View."""
self.assertIsInstance(self.sidebar._view,
emmental.sidebar.section.View)
self.assertEqual(self.sidebar._filter.get_next_sibling(),
self.assertEqual(self.sidebar._header.get_next_sibling(),
self.sidebar._view)
self.assertListEqual(self.sidebar._view._sections,