curds: Add helpful playlist shortcuts
- curds.playlist.current() for the currently selected playlist - curds.playlist.lookup() for lookups Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
729dad28e3
commit
ac7001c3bf
|
@ -8,8 +8,14 @@ Node = node.PlaylistNode
|
|||
Root = root.Root
|
||||
Starred = Root.lookup("Playlists").lookup("Starred")
|
||||
|
||||
def current():
|
||||
return Root.current[0]
|
||||
|
||||
def lookup(name):
|
||||
return Root.lookup(name)
|
||||
|
||||
def reset():
|
||||
global Starred
|
||||
Root.reset()
|
||||
library.reset()
|
||||
Starred = Root.lookup("Playlists").lookup("Starred")
|
||||
Starred = lookup("Playlists").lookup("Starred")
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import playlist
|
||||
import unittest
|
||||
|
||||
class TestPlaylist(unittest.TestCase):
|
||||
def test_current_shortcut(self):
|
||||
self.assertEqual(playlist.current(), playlist.lookup("Collection"))
|
||||
playlist.Root.select(playlist.Starred)
|
||||
self.assertEqual(playlist.current(), playlist.Starred)
|
||||
|
||||
def test_lookup_shortcut(self):
|
||||
self.assertEqual(playlist.lookup("Collection"), playlist.Root.lookup("Collection"))
|
||||
self.assertEqual(playlist.lookup("Playlists"), playlist.Root.lookup("Playlists"))
|
||||
|
||||
def test_starred_shortcut(self):
|
||||
self.assertEqual(playlist.Starred, playlist.Root.lookup("Playlists").lookup("Starred"))
|
||||
playlist.Starred = None
|
||||
|
||||
playlist.reset()
|
||||
self.assertEqual(playlist.Starred, playlist.Root.lookup("Playlists").lookup("Starred"))
|
|
@ -151,7 +151,7 @@ class TestAutoPause(unittest.TestCase):
|
|||
self.assertEqual(autopause.__icon__(), "media-playback-pause")
|
||||
|
||||
def test_pause_estimate(self):
|
||||
curds.playlist.Root.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.library.join()
|
||||
|
||||
playbin.set_uri(test_track, Gst.State.PAUSED)
|
||||
|
|
|
@ -73,7 +73,7 @@ class TestAudioWidgets(unittest.TestCase):
|
|||
self.assertEqual(playbin.get_state(), Gst.State.NULL)
|
||||
self.assertEqual(curds.playlist.Root.track, None)
|
||||
|
||||
curds.playlist.Root.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.library.join()
|
||||
|
||||
widgets.Next.clicked()
|
||||
|
@ -184,7 +184,7 @@ class TestAudioWidgets(unittest.TestCase):
|
|||
self.assertIsNone(widgets.NEXT_TRACK)
|
||||
|
||||
def test_eos(self):
|
||||
curds.playlist.Root.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.library.join()
|
||||
|
||||
track = curds.playlist.Root.next()
|
||||
|
@ -200,7 +200,7 @@ class TestAudioWidgets(unittest.TestCase):
|
|||
self.assertNotEqual(curds.playlist.Root.track, track)
|
||||
|
||||
def test_about_to_finish(self):
|
||||
curds.playlist.Root.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.lookup("Libraries").lookup(test_album)
|
||||
curds.playlist.library.join()
|
||||
|
||||
track = curds.playlist.Root.next()
|
||||
|
|
|
@ -26,7 +26,7 @@ Cancel.connect("clicked", cancel_clicked)
|
|||
def ok_clicked(button):
|
||||
Popover.popdown()
|
||||
path = Chooser.get_filename()
|
||||
curds.playlist.Root.lookup("Libraries").lookup(path)
|
||||
curds.playlist.lookup("Libraries").lookup(path)
|
||||
|
||||
Ok = gtk.Builder.get_object("library_ok")
|
||||
Ok.connect("clicked", ok_clicked)
|
||||
|
|
|
@ -41,7 +41,7 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
|
|||
def do_get_playlist_value(self, plist, column):
|
||||
if column == 1:
|
||||
text = GLib.markup_escape_text(str(plist))
|
||||
if plist == curds.playlist.Root.current[0]:
|
||||
if plist == curds.playlist.current():
|
||||
return f"<b>{text}</b>"
|
||||
return text
|
||||
elif column == 2:
|
||||
|
|
|
@ -17,9 +17,9 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
curds.reset()
|
||||
|
||||
self.model = model.NodeTreeModel()
|
||||
self.artist = curds.playlist.Root.lookup("Artists")
|
||||
self.decade = curds.playlist.Root.lookup("Decades")
|
||||
self.genre = curds.playlist.Root.lookup("Genres")
|
||||
self.artist = curds.playlist.lookup("Artists")
|
||||
self.decade = curds.playlist.lookup("Decades")
|
||||
self.genre = curds.playlist.lookup("Genres")
|
||||
curds.Track.lookup(os.path.join(test_album1, "01 - Test Track 01.ogg"))
|
||||
curds.Track.lookup(os.path.join(test_album2, "01 - Test Track 01.ogg"))
|
||||
|
||||
|
|
|
@ -55,8 +55,8 @@ class TestNodeTreeView(unittest.TestCase):
|
|||
|
||||
def test_node_inserted(self):
|
||||
path = os.path.abspath("./trier/Test Library/Test Artist 01")
|
||||
library = curds.playlist.Root.lookup("Libraries")
|
||||
user = curds.playlist.Root.lookup("Playlists")
|
||||
library = curds.playlist.lookup("Libraries")
|
||||
user = curds.playlist.lookup("Playlists")
|
||||
row = Gtk.TreePath(library.get_path())
|
||||
|
||||
crow = Gtk.TreePath(user.get_path())
|
||||
|
@ -92,8 +92,8 @@ class TestNodeTreeView(unittest.TestCase):
|
|||
self.assertFalse(view.Selection.path_is_selected(path))
|
||||
|
||||
def test_select_path(self):
|
||||
collection = curds.playlist.Root.lookup("Collection")
|
||||
previous = curds.playlist.Root.lookup("Previous")
|
||||
collection = curds.playlist.lookup("Collection")
|
||||
previous = curds.playlist.lookup("Previous")
|
||||
|
||||
self.assertNotEqual(playlist.model.PlistModel.playlist, previous)
|
||||
|
||||
|
@ -109,22 +109,21 @@ class TestNodeTreeView(unittest.TestCase):
|
|||
self.assertEqual(playlist.model.PlistModel.playlist, collection)
|
||||
|
||||
def test_row_activate(self):
|
||||
collection = curds.playlist.Root.lookup("Collection")
|
||||
playlists = curds.playlist.Root.lookup("Playlists")
|
||||
starred = playlists.lookup("Starred")
|
||||
collection = curds.playlist.lookup("Collection")
|
||||
playlists = curds.playlist.lookup("Playlists")
|
||||
column = view.TreeView.get_column(1)
|
||||
|
||||
self.assertEqual(curds.playlist.Root.current[0], collection)
|
||||
self.assertEqual(curds.playlist.current(), collection)
|
||||
|
||||
path = Gtk.TreePath(starred.get_path())
|
||||
path = Gtk.TreePath(curds.playlist.Starred.get_path())
|
||||
path = view.Filter.convert_child_path_to_path(path)
|
||||
view.TreeView.row_activated(path, column)
|
||||
self.assertEqual(curds.playlist.Root.current[0], starred)
|
||||
self.assertEqual(curds.playlist.current(), curds.playlist.Starred)
|
||||
|
||||
path = Gtk.TreePath(playlists.get_path())
|
||||
path = view.Filter.convert_child_path_to_path(path)
|
||||
view.TreeView.row_activated(path, column)
|
||||
self.assertEqual(curds.playlist.Root.current[0], starred)
|
||||
self.assertEqual(curds.playlist.current(), curds.playlist.Starred)
|
||||
|
||||
def test_filter_error(self):
|
||||
view.Entry.set_text("*v")
|
||||
|
|
|
@ -73,6 +73,12 @@ class PlaylistModel(GObject.GObject, Gtk.TreeModel):
|
|||
return self.playlist[iter.user_data]
|
||||
return None
|
||||
|
||||
def scroll_to_current(self):
|
||||
if self.playlist.current >= 0 and Treeview.get_model() == self:
|
||||
path = Gtk.TreePath([ self.playlist.current ])
|
||||
Treeview.get_selection().select_path(path)
|
||||
Treeview.scroll_to_cell(path, None, True, 0.25, 0)
|
||||
|
||||
def set_playlist(self, plist):
|
||||
Treeview.set_model(None)
|
||||
self.playlist = plist
|
||||
|
@ -93,5 +99,5 @@ class PlaylistModel(GObject.GObject, Gtk.TreeModel):
|
|||
return None
|
||||
|
||||
|
||||
PlistModel = PlaylistModel(curds.playlist.Root.lookup("Collection"))
|
||||
PlistModel = PlaylistModel(curds.playlist.lookup("Collection"))
|
||||
Treeview.set_model(PlistModel)
|
||||
|
|
|
@ -13,7 +13,7 @@ class TestPlaylistModel(unittest.TestCase):
|
|||
def setUp(self):
|
||||
curds.reset()
|
||||
node.reset()
|
||||
model.PlistModel.set_playlist(curds.playlist.Root.lookup("Collection"))
|
||||
model.PlistModel.set_playlist(curds.playlist.lookup("Collection"))
|
||||
|
||||
self.playlist = curds.Playlist("Test Playlist")
|
||||
self.track1 = curds.tags.Track.lookup(os.path.join(test_album, "01 - Test Track 01.ogg"))
|
||||
|
@ -67,9 +67,8 @@ class TestPlaylistModel(unittest.TestCase):
|
|||
self.assertEqual(self.model.get_value(iter, 7), "1973")
|
||||
self.assertEqual(self.model.get_value(iter, 8).title(), "Test Genre 1")
|
||||
|
||||
iter = self.model.track_iter(self.track2)
|
||||
starred = curds.playlist.Root.lookup("Playlists").lookup("Starred")
|
||||
starred.add(self.track2)
|
||||
iter = self.model.track_iter(self.track2)
|
||||
curds.playlist.Starred.add(self.track2)
|
||||
|
||||
self.assertEqual(self.model.get_value(iter, 0), "starred")
|
||||
self.assertEqual(self.model.get_value(iter, 1), "02")
|
||||
|
@ -123,7 +122,7 @@ class TestPlaylistModel(unittest.TestCase):
|
|||
|
||||
def test_model(self):
|
||||
plist = curds.Playlist("Test Playlist")
|
||||
plist_model = model.PlaylistModel(curds.playlist.Root.lookup("Collection"))
|
||||
plist_model = model.PlaylistModel(curds.playlist.lookup("Collection"))
|
||||
path = Gtk.TreePath(1)
|
||||
tracks = [ ]
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ curds.notify.register("playlist-changed", on_playlist_changed, queue=True)
|
|||
|
||||
def on_stream_start():
|
||||
plist = model.PlistModel.playlist
|
||||
if plist == curds.playlist.Root.current[0]:
|
||||
if plist == curds.playlist.current():
|
||||
if plist.current < 0:
|
||||
Selection.unselect_all()
|
||||
else:
|
||||
|
|
|
@ -33,7 +33,7 @@ class TestLibrary(unittest.TestCase):
|
|||
library.Cancel.clicked()
|
||||
gtk.main_loop(iteration_delay=0.01)
|
||||
self.assertFalse(library.Popover.is_visible())
|
||||
self.assertEqual(curds.playlist.Root.lookup("Libraries").n_children(), 0)
|
||||
self.assertEqual(curds.playlist.lookup("Libraries").n_children(), 0)
|
||||
|
||||
def test_add_ok(self):
|
||||
music_dir = os.path.join(os.path.expanduser("~"), "Music")
|
||||
|
@ -50,7 +50,7 @@ class TestLibrary(unittest.TestCase):
|
|||
|
||||
library.Ok.clicked()
|
||||
gtk.main_loop(iteration_delay=0.01)
|
||||
self.assertEqual(curds.playlist.Root.lookup("Libraries").n_children(), 1)
|
||||
self.assertEqual(curds.playlist.lookup("Libraries").n_children(), 1)
|
||||
self.assertFalse(library.Popover.is_visible())
|
||||
|
||||
curds.playlist.library.join()
|
||||
|
|
|
@ -14,7 +14,7 @@ class TestEmmental(unittest.TestCase):
|
|||
self.assertEqual(curds.Playlist, curds.playlist.playlist.Playlist)
|
||||
self.assertEqual(curds.playlist.Library, curds.playlist.library.LibraryPlaylist)
|
||||
self.assertEqual(curds.playlist.Node, curds.playlist.node.PlaylistNode)
|
||||
self.assertEqual(curds.playlist.Starred, curds.playlist.Root.lookup("Playlists").lookup("Starred"))
|
||||
self.assertEqual(curds.playlist.Starred, curds.playlist.lookup("Playlists").lookup("Starred"))
|
||||
|
||||
self.assertIsNotNone(curds.notify)
|
||||
self.assertIsInstance(curds.playlist.Root, curds.playlist.root.PlaylistRoot)
|
||||
|
@ -41,8 +41,8 @@ class TestEmmental(unittest.TestCase):
|
|||
curds.reset()
|
||||
self.assertEqual(curds.tags.tag_map, {})
|
||||
self.assertTrue(curds.playlist.library.library_thread.is_alive())
|
||||
self.assertEqual(len(curds.playlist.Root.lookup("Collection")), 0)
|
||||
self.assertEqual(curds.playlist.Root.lookup("Libraries").n_children(), 0)
|
||||
self.assertEqual(len(curds.playlist.lookup("Collection")), 0)
|
||||
self.assertEqual(curds.playlist.lookup("Libraries").n_children(), 0)
|
||||
|
||||
curds.stop()
|
||||
self.assertFalse(curds.playlist.library.library_thread.is_alive())
|
||||
|
|
Loading…
Reference in New Issue