curds: Replace new-track notification with TrackAdded publisher

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2020-11-15 17:43:07 -05:00
parent 4ce1e33fe4
commit e73416a2e1
12 changed files with 17 additions and 23 deletions

View File

@ -106,7 +106,6 @@ def reset():
Root.reset()
Track = None
Current = [ Root.lookup("Collection") ]
library.reset()
init()
def init():

View File

@ -14,15 +14,13 @@ class LibraryPlaylist(playlist.Playlist):
def __init__(self, path):
playlist.Playlist.__init__(self, path, icon=LIBRARY_ICON, sort=LIBRARY_SORT)
self.lib = trackdb.add_path(path)
trackdb.library.TrackAdded.register(self.thread_add)
def scan(self):
self.lib.scan()
def thread_add(self, track, lib):
def new_track(self, track, lib):
if lib == self.lib:
self.add(track)
notify.notify("new-track", track, lib)
class LibraryNode(tree.ETree):
@ -42,8 +40,5 @@ def join():
for lib in trackdb.library_paths:
lib.join()
def reset():
trackdb.reset()
def stop():
pass

View File

@ -45,11 +45,11 @@ class TestArtistPlaylist(unittest.TestCase):
def test_artist_node_reset(self):
anode = artist.ArtistNode()
anode.children.append(42)
notify.cancel("new-track", anode.new_track)
trackdb.library.TrackAdded.unregister(anode.new_track)
anode.reset()
self.assertEqual(len(anode.children), 0)
self.assertIn((anode.new_track, False), notify.events["new-track"])
self.assertIn(anode.new_track, trackdb.library.TrackAdded.subscribers)
def test_artist_playlist_alloc(self):
anode = artist.ArtistPlaylist("Test Playlist", artist.ARTIST_ICON)

View File

@ -38,13 +38,13 @@ class TestCollectionPlaylist(unittest.TestCase):
plist.list.append(42)
plist.random = True
plist.loop = False
notify.cancel("new-track", plist.new_track)
trackdb.library.TrackAdded.unregister(plist.new_track)
plist.reset()
self.assertEqual(len(plist), 0)
self.assertFalse(plist.random)
self.assertTrue(plist.loop)
self.assertIn((plist.new_track, False), notify.events["new-track"])
self.assertIn(plist.new_track, trackdb.library.TrackAdded.subscribers)
def test_collection_loop(self):
plist = special.CollectionPlaylist()

View File

@ -49,11 +49,11 @@ class TestDecadePlaylist(unittest.TestCase):
def test_decade_node_reset(self):
dnode = decade.DecadeNode()
dnode.children.append(42)
notify.cancel("new-track", dnode.new_track)
trackdb.library.TrackAdded.unregister(dnode.new_track)
dnode.reset()
self.assertEqual(len(dnode.children), 0)
self.assertIn((dnode.new_track, False), notify.events["new-track"])
self.assertIn(dnode.new_track, trackdb.library.TrackAdded.subscribers)
def test_decade_playlist_alloc(self):
dnode = decade.DecadePlaylist("Test Decade", decade.DECADE_ICON)

View File

@ -64,8 +64,8 @@ class TestGenrePlaylist(unittest.TestCase):
gnode = genre.GenreNode()
plist = playlist.Playlist("Test Playlist")
gnode.insert_child(plist)
notify.cancel("new-track", gnode.new_track)
trackdb.library.TrackAdded.unregister(gnode.new_track)
gnode.reset()
self.assertEqual(gnode.n_children(), 0)
self.assertIn((gnode.new_track, False), notify.events["new-track"])
self.assertIn(gnode.new_track, trackdb.library.TrackAdded.subscribers)

View File

@ -14,7 +14,6 @@ test_album = os.path.abspath("./trier/Test Album")
class TestLibraryPlaylist(unittest.TestCase):
def setUp(self):
library.reset()
notify.clear()
trak.reset()

View File

@ -13,6 +13,7 @@ from .. import trak
from .. import tree
import os
import random
import trackdb
import unittest
test_album = os.path.abspath("./trier/Test Album")
@ -21,7 +22,6 @@ test_library = os.path.abspath("./trier/Test Library")
class TestPlaylistRoot(unittest.TestCase):
def setUp(self):
trak.reset()
library.reset()
notify.register("next-track", self.on_next_track)
notify.register("playlist-changed", self.on_playlist_changed)
@ -36,8 +36,7 @@ class TestPlaylistRoot(unittest.TestCase):
self.cb_change = [ ]
def tearDown(self):
notify.cancel("new-track", self.playman.lookup("Collection").add)
notify.cancel("new-track", self.playman.lookup("Genres").new_track)
trackdb.reset()
notify.cancel("next-track", self.on_next_track)
notify.register("playlist-changed", self.on_playlist_changed)
library.stop()

View File

@ -27,7 +27,7 @@ class TestTags(unittest.TestCase):
self.assertEqual(trak.trak_db, { })
def test_trak_lookup(self):
notify.register("new-track", self.on_new_track)
trackdb.library.TrackAdded.register(self.on_new_track)
path = test_tracks / "01 - Test Track.ogg"
track = trak.lookup(path, self.lib)

View File

@ -16,7 +16,7 @@ def lookup(path, lib):
ret = trackdb.track.Track(tid, pathlib.Path(path))
lib.tracks[tid] = ret
trak_db[path] = ret
notify.notify("new-track", ret, lib)
trackdb.library.TrackAdded.publish(ret, lib)
except Exception as e:
print(e)
return None

View File

@ -2,6 +2,7 @@
from . import notify
from . import sort
import threading
import trackdb
class ETree:
def __init__(self, name="", icon=""):
@ -39,7 +40,7 @@ class ETree:
def __new_track__(self):
if self.new_track != ETree.new_track:
notify.register("new-track", self.new_track)
trackdb.library.TrackAdded.register(self.new_track)
def __nth_child__(self, n):
return self.children[n] if -1 < n < len(self.children) else None

View File

@ -5,7 +5,8 @@ class Publisher:
self.subscribers = set()
def publish(self, *args):
for func in self.subscribers:
funcs = self.subscribers.copy()
for func in funcs:
func(*args)
def register(self, func):