sidebar: Create a UserTagBox

With different icons for each type of user playlist

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-07 16:22:46 -04:00
parent e6c936d51e
commit ab515326c9
4 changed files with 53 additions and 2 deletions

View File

@ -1,6 +1,7 @@
# Copyright 2021 (c) Anna Schumaker.
from . import library
from . import tagbox
from . import user
from lib import settings
from gi.repository import Gtk
import trackdb
@ -42,7 +43,7 @@ def add_stack_page(name, page):
Stack.add_named(page, name)
toggle.set_active(settings.get("sidebar.page") == name)
add_stack_page("Playlists", tagbox.TagBox(trackdb.tags.User, "audio-x-generic"))
add_stack_page("Playlists", user.TagBox)
add_stack_page("Artists", tagbox.TagBox(trackdb.tags.Artist, "avatar-default-symbolic", header=True))
add_stack_page("Genres", tagbox.TagBox(trackdb.tags.Genre, "emblem-generic", header=True))
add_stack_page("Decades", tagbox.TagBox(trackdb.tags.Decade, "x-office-calendar"))

32
sidebar/test_user.py Normal file
View File

@ -0,0 +1,32 @@
# Copyright 2021 (c) Anna Schumaker.
from . import tagbox
from . import user
import trackdb
import unittest
Expected = [ ("Collection", "media-playback-start"),
("Favorites", "emblem-favorites"),
("New Tracks", "starred"),
("Previous", "edit-undo"),
("Test", "audio-x-generic"),
("Up Next", "edit-redo") ]
class TestUserSidebar(unittest.TestCase):
def test_user_sidebar_init(self):
self.assertIsInstance(user.TagBox, user.UserTagBox)
self.assertIsInstance(user.TagBox, tagbox.TagBox)
self.assertEqual(user.Icons["Collection"], "media-playback-start")
self.assertEqual(user.Icons["Favorites"], "emblem-favorites")
self.assertEqual(user.Icons["New Tracks"], "starred")
self.assertEqual(user.Icons["Previous"], "edit-undo")
self.assertEqual(user.Icons["Up Next"], "edit-redo")
def test_user_sidebar(self):
user.TagBox = user.UserTagBox(trackdb.tags.User, "audio-x-generic")
tag = trackdb.tags.User.add("Test")
user.TagBox.bus.complete()
for (i, (tag, icon)) in enumerate(Expected):
self.assertEqual(user.TagBox[i].tag, trackdb.tags.User[tag])
self.assertEqual(user.TagBox[i].image.get_icon_name(), icon)

18
sidebar/user.py Normal file
View File

@ -0,0 +1,18 @@
# Copyright 2021 (c) Anna Schumaker.
from . import tagbox
from . import tagrow
import trackdb
Icons = { "Collection" : "media-playback-start",
"Favorites" : "emblem-favorites",
"New Tracks" : "starred",
"Previous" : "edit-undo",
"Up Next" : "edit-redo" }
class UserTagBox(tagbox.TagBox):
def __alloc_tagrow__(self, tag):
return tagrow.TagRow(tag, Icons.get(tag.name, self.icon))
TagBox = UserTagBox(trackdb.tags.User, "audio-x-generic")

View File

@ -30,7 +30,7 @@ class TestSidebar(unittest.TestCase):
self.assertTrue(toggle.get_vexpand())
self.assertIsInstance(sidebar.Stack.get_child_by_name("Playlists"),
sidebar.tagbox.TagBox)
sidebar.user.UserTagBox)
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)