curds: Create a LibraryNode

For managing library playlists

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-16 16:29:09 -04:00
parent 751ad812f3
commit 52f787e483
2 changed files with 33 additions and 0 deletions

View File

@ -1,4 +1,5 @@
# Copyright 2019 (c) Anna Schumaker.
from . import node
from . import playlist
from .. import notify
from .. import tags
@ -27,6 +28,23 @@ class LibraryPlaylist(playlist.Playlist):
library_thread.push(self.thread_add, os.path.join(dirname, f))
class LibraryNode(node.PlaylistNode):
def __init__(self):
node.PlaylistNode.__init__(self, "Libraries", "folder-music")
def __normalize__(self, name):
if os.path.exists(name):
return os.path.abspath(name)
return node.PlaylistNode.__normalize__(self, name)
def lookup(self, path):
plist = node.PlaylistNode.lookup(self, os.path.abspath(path))
if plist == None:
plist = LibraryPlaylist(path)
self.insert_child(plist)
return plist
def join():
library_thread.join()

View File

@ -1,5 +1,6 @@
# Copyright 2019 (c) Anna Schumaker.
from . import library
from . import node
from . import playlist
from .. import notify
from .. import tags
@ -37,3 +38,17 @@ class TestLibraryPlaylist(unittest.TestCase):
plist.scan()
library.join()
self.assertEqual(len(plist), 1250)
def test_playlist_library_node(self):
lnode = library.LibraryNode()
self.assertIsInstance(lnode, node.PlaylistNode)
self.assertEqual(lnode.name, "Libraries")
self.assertEqual(lnode.icon, "folder-music")
plist = lnode.lookup(test_library + "/")
self.assertEqual(plist.name, test_library)
self.assertEqual(plist.icon, "folder-music")
self.assertEqual(lnode.lookup(test_library), plist)
lnode.reset()
self.assertEqual(lnode.children, [ ])