diff --git a/emmental/sidebar/__init__.py b/emmental/sidebar/__init__.py index 797655a..2c03e54 100644 --- a/emmental/sidebar/__init__.py +++ b/emmental/sidebar/__init__.py @@ -52,7 +52,7 @@ class Card(Gtk.Box): 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.sql.connect("notify::loaded", self.__database_loaded) self._header.add_css_class("toolbar") self.add_css_class("card") @@ -63,13 +63,12 @@ class Card(Gtk.Box): def __search_changed(self, entry: entry.Filter) -> None: self.sql.filter(entry.get_query()) - def __table_loaded(self, sql: db.Connection, table: db.table.Table): - if self.get_sensitive() is False: - if False not in {tbl.loaded for tbl in sql.playlist_tables()}: - self.set_sensitive(True) - self.select_playlist(sql.active_playlist, 150) - if len(sql.libraries) == 0: - self._libraries.extra_widget.emit("clicked") + def __database_loaded(self, sql: db.Connection, param: GObject.ParamSpec): + self.set_sensitive(sql.loaded) + if sql.loaded is True: + self.select_playlist(sql.active_playlist, 150) + if len(sql.libraries) == 0: + self._libraries.extra_widget.emit("clicked") def __select_playlist(self, playlist: db.playlist.Playlist) -> bool: if playlist is not None: diff --git a/tests/sidebar/test_sidebar.py b/tests/sidebar/test_sidebar.py index 56bb19a..e2e0234 100644 --- a/tests/sidebar/test_sidebar.py +++ b/tests/sidebar/test_sidebar.py @@ -66,25 +66,20 @@ class TestSidebar(tests.util.TestCase): 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()] self.sidebar.select_playlist = unittest.mock.Mock() self.sidebar._libraries.extra_widget.emit = unittest.mock.Mock() - for table in tables: - self.assertFalse(self.sidebar.get_sensitive()) - self.sidebar.select_playlist.assert_not_called() - self.sidebar._libraries.extra_widget.emit.assert_not_called() - - table.load(now=True) - self.assertEqual(self.sidebar.get_sensitive(), - table == tables[-1]) + self.assertFalse(self.sidebar.get_sensitive()) + self.sql.loaded = True + self.assertTrue(self.sidebar.get_sensitive()) playlist = self.sql.playlists.collection self.sidebar.select_playlist.assert_called_with(playlist, 150) self.sidebar._libraries.extra_widget.emit.assert_called_with("clicked") self.sidebar.select_playlist.reset_mock() - self.sql.emit("table-loaded", tables[0]) + self.sql.loaded = False + self.assertFalse(self.sidebar.get_sensitive()) self.sidebar.select_playlist.assert_not_called() def test_show_all_artists(self):