sidebar: Add a button to jump to the current playlist
Implements: #59 ("Jump to Active Playlist button") Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
1707f87e45
commit
8dae0ed7bd
|
@ -25,6 +25,8 @@ class Card(Gtk.Box):
|
|||
sensitive=False, **kwargs)
|
||||
self._header = Gtk.CenterBox()
|
||||
self._filter = entry.Filter("playlists", hexpand=True)
|
||||
self._jump = Gtk.Button(icon_name="go-jump-symbolic",
|
||||
tooltip_text="scroll to current playlist")
|
||||
self._playlists = playlist.Section(self.sql.playlists)
|
||||
self._artists = artist.Section(self.sql.artists, self.sql.albums)
|
||||
self._genres = genre.Section(self.sql.genres)
|
||||
|
@ -33,6 +35,7 @@ class Card(Gtk.Box):
|
|||
self._view = section.View(sql)
|
||||
|
||||
self._header.set_center_widget(self._filter)
|
||||
self._header.set_end_widget(self._jump)
|
||||
self.append(self._header)
|
||||
|
||||
for sect in [self._playlists, self._artists, self._genres,
|
||||
|
@ -46,11 +49,15 @@ class Card(Gtk.Box):
|
|||
GObject.BindingFlags.BIDIRECTIONAL)
|
||||
|
||||
self._filter.connect("search-changed", self.__search_changed)
|
||||
self._jump.connect("clicked", self.__jump_to_playlist)
|
||||
self.sql.connect("table-loaded", self.__table_loaded)
|
||||
|
||||
self._header.add_css_class("toolbar")
|
||||
self.add_css_class("card")
|
||||
|
||||
def __jump_to_playlist(self, jump: Gtk.Button) -> None:
|
||||
self.select_playlist(self.sql.active_playlist)
|
||||
|
||||
def __search_changed(self, entry: entry.Filter) -> None:
|
||||
self.sql.filter(entry.get_query())
|
||||
|
||||
|
|
|
@ -46,6 +46,23 @@ class TestSidebar(tests.util.TestCase):
|
|||
self.sidebar._filter.emit("search-changed")
|
||||
mock_filter.assert_called_with("*test text*")
|
||||
|
||||
def test_jump(self):
|
||||
"""Test the jump button."""
|
||||
self.assertIsInstance(self.sidebar._jump, Gtk.Button)
|
||||
self.assertEqual(self.sidebar._header.get_end_widget(),
|
||||
self.sidebar._jump)
|
||||
|
||||
self.assertEqual(self.sidebar._jump.get_icon_name(),
|
||||
"go-jump-symbolic")
|
||||
self.assertEqual(self.sidebar._jump.get_tooltip_text(),
|
||||
"scroll to current playlist")
|
||||
|
||||
self.sql.playlists.load(now=True)
|
||||
with unittest.mock.patch.object(self.sidebar,
|
||||
"select_playlist") as mock_select:
|
||||
self.sidebar._jump.emit("clicked")
|
||||
mock_select.assert_called_with(self.sql.active_playlist)
|
||||
|
||||
def test_sensitivity_and_startup(self):
|
||||
"""Test setting the sidebar sensitivity when all tables have loaded."""
|
||||
tables = [t for t in self.sql.playlist_tables()]
|
||||
|
|
Loading…
Reference in New Issue