sidebar: Create a TagBox class
And set it as each of the pages in the sidebar stack Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
f7b2383ff4
commit
ac282cb9e3
|
@ -1,4 +1,5 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from . import tagbox
|
||||
from lib import settings
|
||||
from gi.repository import Gtk
|
||||
|
||||
|
@ -25,9 +26,9 @@ def switch_page(toggle):
|
|||
Stack.set_visible_child_name(toggle.get_name())
|
||||
settings.set("sidebar.page", toggle.get_name())
|
||||
|
||||
def add_stack_page(page, name, icon):
|
||||
def add_stack_page(name, page):
|
||||
toggle = Gtk.ToggleButton()
|
||||
toggle.set_icon_name(icon)
|
||||
toggle.set_icon_name(page.icon)
|
||||
toggle.set_vexpand(True)
|
||||
toggle.set_name(name)
|
||||
toggle.connect("toggled", switch_page)
|
||||
|
@ -39,11 +40,11 @@ def add_stack_page(page, name, icon):
|
|||
Stack.add_named(page, name)
|
||||
toggle.set_active(settings.get("sidebar.page") == name)
|
||||
|
||||
add_stack_page(Gtk.Label.new(str="Playlists"), "Playlists", "audio-x-generic")
|
||||
add_stack_page(Gtk.Label.new(str="Artists"), "Artists", "avatar-default-symbolic")
|
||||
add_stack_page(Gtk.Label.new(str="Genres"), "Genres", "emblem-generic")
|
||||
add_stack_page(Gtk.Label.new(str="Decades"), "Decades", "x-office-calendar")
|
||||
add_stack_page(Gtk.Label.new(str="Libraries"), "Libraries", "folder-music")
|
||||
add_stack_page("Playlists", tagbox.TagBox("audio-x-generic"))
|
||||
add_stack_page("Artists", tagbox.TagBox("avatar-default-symbolic"))
|
||||
add_stack_page("Genres", tagbox.TagBox("emblem-generic"))
|
||||
add_stack_page("Decades", tagbox.TagBox("x-office-calendar"))
|
||||
add_stack_page("Libraries", tagbox.TagBox("folder-music"))
|
||||
|
||||
|
||||
Box.append(Switcher)
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from gi.repository import Gtk
|
||||
|
||||
class TagBox(Gtk.ScrolledWindow):
|
||||
def __init__(self, icon):
|
||||
Gtk.ScrolledWindow.__init__(self)
|
||||
self.listbox = Gtk.ListBox()
|
||||
self.icon = icon
|
||||
|
||||
self.set_child(self.listbox)
|
||||
self.set_vexpand(True)
|
|
@ -0,0 +1,17 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from . import tagbox
|
||||
from gi.repository import Gtk
|
||||
import unittest
|
||||
|
||||
class TestTagBox(unittest.TestCase):
|
||||
def test_tag_box(self):
|
||||
tbox = tagbox.TagBox("image-missing")
|
||||
self.assertEqual(tbox.icon, "image-missing")
|
||||
|
||||
self.assertIsInstance(tbox, Gtk.ScrolledWindow)
|
||||
self.assertIsInstance(tbox.listbox, Gtk.ListBox)
|
||||
|
||||
viewport = tbox.get_child()
|
||||
self.assertIsInstance(viewport, Gtk.Viewport)
|
||||
self.assertEqual(viewport.get_child(), tbox.listbox)
|
||||
self.assertTrue(tbox.get_vexpand())
|
|
@ -29,35 +29,40 @@ class TestSidebar(unittest.TestCase):
|
|||
self.assertIn(toggle, sidebar.Switcher)
|
||||
self.assertTrue(toggle.get_vexpand())
|
||||
|
||||
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Playlists"))
|
||||
self.assertIsInstance(sidebar.Stack.get_child_by_name("Playlists"),
|
||||
sidebar.tagbox.TagBox)
|
||||
self.assertEqual(sidebar.Toggles[0].get_icon_name(), "audio-x-generic")
|
||||
self.assertEqual(sidebar.Toggles[0].get_name(), "Playlists")
|
||||
sidebar.Toggles[0].set_active(True)
|
||||
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Playlists")
|
||||
self.assertEqual(settings.get("sidebar.page"), "Playlists")
|
||||
|
||||
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Artists"))
|
||||
self.assertIsInstance(sidebar.Stack.get_child_by_name("Artists"),
|
||||
sidebar.tagbox.TagBox)
|
||||
self.assertEqual(sidebar.Toggles[1].get_icon_name(), "avatar-default-symbolic")
|
||||
self.assertEqual(sidebar.Toggles[1].get_name(), "Artists")
|
||||
sidebar.Toggles[1].set_active(True)
|
||||
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Artists")
|
||||
self.assertEqual(settings.get("sidebar.page"), "Artists")
|
||||
|
||||
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Genres"))
|
||||
self.assertIsInstance(sidebar.Stack.get_child_by_name("Genres"),
|
||||
sidebar.tagbox.TagBox)
|
||||
self.assertEqual(sidebar.Toggles[2].get_icon_name(), "emblem-generic")
|
||||
self.assertEqual(sidebar.Toggles[2].get_name(), "Genres")
|
||||
sidebar.Toggles[2].set_active(True)
|
||||
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Genres")
|
||||
self.assertEqual(settings.get("sidebar.page"), "Genres")
|
||||
|
||||
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Decades"))
|
||||
self.assertIsInstance(sidebar.Stack.get_child_by_name("Decades"),
|
||||
sidebar.tagbox.TagBox)
|
||||
self.assertEqual(sidebar.Toggles[3].get_icon_name(), "x-office-calendar")
|
||||
self.assertEqual(sidebar.Toggles[3].get_name(), "Decades")
|
||||
sidebar.Toggles[3].set_active(True)
|
||||
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Decades")
|
||||
self.assertEqual(settings.get("sidebar.page"), "Decades")
|
||||
|
||||
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Libraries"))
|
||||
self.assertIsInstance(sidebar.Stack.get_child_by_name("Libraries"),
|
||||
sidebar.tagbox.TagBox)
|
||||
self.assertEqual(sidebar.Toggles[4].get_icon_name(), "folder-music")
|
||||
self.assertEqual(sidebar.Toggles[4].get_name(), "Libraries")
|
||||
sidebar.Toggles[4].set_active(True)
|
||||
|
|
Loading…
Reference in New Issue