sidebar: Add the Library section to the sidebar
And show the directory chooser if the application is started without any library paths. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0dcdcd4a68
commit
1c0712e673
|
@ -5,6 +5,7 @@ from gi.repository import Gtk
|
|||
from . import artist
|
||||
from . import decade
|
||||
from . import genre
|
||||
from . import library
|
||||
from . import playlist
|
||||
from . import section
|
||||
from .. import db
|
||||
|
@ -27,12 +28,13 @@ class Card(Gtk.Box):
|
|||
self._artists = artist.Section(self.sql.artists, self.sql.albums)
|
||||
self._genres = genre.Section(self.sql.genres)
|
||||
self._decades = decade.Section(self.sql.decades, self.sql.years)
|
||||
self._libraries = library.Section(self.sql.libraries)
|
||||
self._group = section.Group(sql)
|
||||
|
||||
self.append(self._filter)
|
||||
|
||||
for sect in [self._playlists, self._artists, self._genres,
|
||||
self._decades]:
|
||||
self._decades, self._libraries]:
|
||||
self.append(sect)
|
||||
self._group.add(sect)
|
||||
|
||||
|
@ -56,6 +58,8 @@ class Card(Gtk.Box):
|
|||
if False not in {tbl.loaded for tbl in sql.playlist_tables()}:
|
||||
self.set_sensitive(True)
|
||||
self.select_playlist(sql.active_playlist)
|
||||
if len(sql.libraries) == 0:
|
||||
self._libraries.extra_widget.emit("clicked")
|
||||
|
||||
def select_playlist(self, playlist: db.playlist.Playlist) -> None:
|
||||
"""Set the current active playlist."""
|
||||
|
@ -69,6 +73,8 @@ class Card(Gtk.Box):
|
|||
section = self._genres
|
||||
case self.sql.decades | self.sql.years:
|
||||
section = self._decades
|
||||
case self.sql.libraries:
|
||||
section = self._libraries
|
||||
|
||||
section.active = True
|
||||
section.select_playlist(playlist)
|
||||
|
|
|
@ -40,18 +40,21 @@ class TestSidebar(tests.util.TestCase):
|
|||
self.sidebar._filter.emit("search-changed")
|
||||
mock_filter.assert_called_with("*test text*")
|
||||
|
||||
def test_sensitivity(self):
|
||||
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()
|
||||
self.sql.emit("table-loaded", table)
|
||||
|
||||
self.assertTrue(self.sidebar.get_sensitive())
|
||||
self.sidebar.select_playlist.assert_called()
|
||||
self.sidebar._libraries.extra_widget.emit.assert_called_with("clicked")
|
||||
|
||||
self.sidebar.select_playlist.reset_mock()
|
||||
self.sql.emit("table-loaded", tables[0])
|
||||
|
@ -82,7 +85,8 @@ class TestSidebar(tests.util.TestCase):
|
|||
[self.sidebar._playlists,
|
||||
self.sidebar._artists,
|
||||
self.sidebar._genres,
|
||||
self.sidebar._decades])
|
||||
self.sidebar._decades,
|
||||
self.sidebar._libraries])
|
||||
|
||||
def test_sections(self):
|
||||
"""Tests sidebar section models."""
|
||||
|
@ -94,6 +98,8 @@ class TestSidebar(tests.util.TestCase):
|
|||
emmental.sidebar.genre.Section)
|
||||
self.assertIsInstance(self.sidebar._decades,
|
||||
emmental.sidebar.decade.Section)
|
||||
self.assertIsInstance(self.sidebar._libraries,
|
||||
emmental.sidebar.library.Section)
|
||||
|
||||
self.assertEqual(self.sidebar._filter.get_next_sibling(),
|
||||
self.sidebar._playlists)
|
||||
|
@ -103,6 +109,8 @@ class TestSidebar(tests.util.TestCase):
|
|||
self.sidebar._genres)
|
||||
self.assertEqual(self.sidebar._genres.get_next_sibling(),
|
||||
self.sidebar._decades)
|
||||
self.assertEqual(self.sidebar._decades.get_next_sibling(),
|
||||
self.sidebar._libraries)
|
||||
|
||||
self.assertEqual(self.sidebar._playlists.table, self.sql.playlists)
|
||||
self.assertEqual(self.sidebar._artists.table, self.sql.artists)
|
||||
|
@ -110,6 +118,7 @@ class TestSidebar(tests.util.TestCase):
|
|||
self.assertEqual(self.sidebar._genres.table, self.sql.genres)
|
||||
self.assertEqual(self.sidebar._decades.table, self.sql.decades)
|
||||
self.assertEqual(self.sidebar._decades.year_table, self.sql.years)
|
||||
self.assertEqual(self.sidebar._libraries.table, self.sql.libraries)
|
||||
|
||||
def test_select_playlist(self):
|
||||
"""Test setting the active playlist."""
|
||||
|
@ -147,3 +156,8 @@ class TestSidebar(tests.util.TestCase):
|
|||
self.sidebar.select_playlist(plist)
|
||||
self.assertTrue(self.sidebar._decades.active)
|
||||
self.sidebar._decades.select_playlist.assert_called_with(plist)
|
||||
|
||||
library = self.sql.libraries.create("/a/b/c")
|
||||
self.sidebar.select_playlist(library)
|
||||
self.assertTrue(self.sidebar._libraries.active)
|
||||
self.assertEqual(self.sidebar.selected_playlist, library)
|
||||
|
|
Loading…
Reference in New Issue