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:
Anna Schumaker 2021-06-27 11:49:59 -04:00
parent f7b2383ff4
commit ac282cb9e3
4 changed files with 46 additions and 12 deletions

View File

@ -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)

11
sidebar/tagbox.py Normal file
View File

@ -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)

17
sidebar/test_tagbox.py Normal file
View File

@ -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())

View File

@ -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)