sidebar: Change the currently displayed playlist

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-11-04 14:55:08 -04:00
parent bbe48ccf82
commit 7f31e39779
3 changed files with 30 additions and 4 deletions

View File

@ -3,8 +3,17 @@ from gi.repository import Gtk
from . import stack
class Sidebar(Gtk.Box):
def __init__(self):
def __init__(self, panel):
Gtk.Box.__init__(self)
self.panel = panel
switcher = stack.Switcher()
self.append(switcher)
self.append(stack.Box(switcher.get_stack()))
stak = switcher.get_stack()
stak.connect("playlist-changed", self.playlist_changed)
panel.set_playlist(stak.get_visible_child().get_selected_playlist())
def playlist_changed(self, stack, plist):
self.panel.set_playlist(plist)

View File

@ -1,14 +1,30 @@
# Copyright 2021 (c) Anna Schumaker.
import datetime
import db
import playlist
import sidebar
import unittest
from gi.repository import Gtk
class TestSidebar(unittest.TestCase):
def test_init(self):
sbar = sidebar.Sidebar()
panel = playlist.Panel()
sbar = sidebar.Sidebar(panel)
self.assertIsInstance(sbar, Gtk.Box)
self.assertEqual(sbar.panel, panel)
child = sbar.get_first_child()
self.assertIsInstance(child, sidebar.stack.Switcher)
child = child.get_next_sibling()
self.assertIsInstance(child, sidebar.stack.Box)
def test_change_playlist(self):
artist = db.artist.Table.find("Test Artist", "Test Sort")
album = artist.find_album("Test Album", datetime.date(2021, 3, 18))
panel = playlist.Panel()
sbar = sidebar.Sidebar(panel)
sbar.playlist_changed(None, artist)
self.assertEqual(panel.get_playlist(), artist)
sbar.playlist_changed(None, album)
self.assertEqual(panel.get_playlist(), album)

View File

@ -7,10 +7,11 @@ from gi.repository import Gtk
class Pane(Gtk.Paned):
def __init__(self):
Gtk.Paned.__init__(self)
panel = playlist.Panel()
self.set_shrink_start_child(False)
self.set_start_child(sidebar.Sidebar())
self.set_end_child(playlist.Panel())
self.set_start_child(sidebar.Sidebar(panel))
self.set_end_child(panel)
self.set_vexpand(True)
lib.settings.initialize("sidebar.width", 250)