rind: Add an iter_playlist() function to the MangaerModel
Converting between a TreeIter and a playlist is very useful, so implement that functionality now. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
4c256f7656
commit
6539299212
|
@ -23,17 +23,12 @@ class ManagerModel(GObject.GObject, Gtk.TreeModel):
|
|||
return Gtk.TreePath((iter.user_data))
|
||||
|
||||
def do_get_value(self, iter, column):
|
||||
top = toplevel[iter.user_data]
|
||||
if top != None:
|
||||
plist = curds.PlaylistManager[top]
|
||||
if column == 0:
|
||||
return plist.icon
|
||||
if column == 1:
|
||||
if not isinstance(plist, curds.Playlist):
|
||||
return f"<big>{plist.name}</big>"
|
||||
l = len(plist)
|
||||
return f"{plist.name}\n{len(plist)} Track{'s' if l != 1 else ''}"
|
||||
return ""
|
||||
plist = self.iter_playlist(iter)
|
||||
if plist == None:
|
||||
return ""
|
||||
if column == 0:
|
||||
return plist.icon
|
||||
return str(plist)
|
||||
|
||||
def do_iter_has_child(self, iter):
|
||||
return False
|
||||
|
@ -56,6 +51,12 @@ class ManagerModel(GObject.GObject, Gtk.TreeModel):
|
|||
return (False, None)
|
||||
return (True, iter)
|
||||
|
||||
def iter_playlist(self, iter):
|
||||
top = toplevel[iter.user_data]
|
||||
if top != None:
|
||||
return curds.PlaylistManager[top]
|
||||
return None
|
||||
|
||||
def on_add_track(self, plist, track):
|
||||
if plist.name in toplevel:
|
||||
iter = self.iter_nth_child(None, toplevel.index(plist.name))
|
||||
|
|
|
@ -6,9 +6,11 @@ import os
|
|||
import unittest
|
||||
from gi.repository import Gtk, GObject
|
||||
|
||||
test_album = os.path.abspath("./trier/Test Library/Test Artist 02/Test Album 1")
|
||||
toplevel_names = [ "Collection\n0 Tracks", "", "<big>Library</big>" ]
|
||||
toplevel_icons = [ "emblem-music", "", "folder" ]
|
||||
plist_mgr = curds.PlaylistManager
|
||||
test_album = os.path.abspath("./trier/Test Library/Test Artist 02/Test Album 1")
|
||||
toplevel_names = [ "Collection\n0 Tracks", "", "<big>Library</big>" ]
|
||||
toplevel_icons = [ "emblem-music", "", "folder" ]
|
||||
toplevel_plist = [ plist_mgr["Collection"], None, plist_mgr["Library"] ]
|
||||
|
||||
class TestManager(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
@ -40,6 +42,7 @@ class TestManager(unittest.TestCase):
|
|||
self.assertEqual(iter.user_data, 0)
|
||||
self.assertFalse(model.iter_has_child(iter))
|
||||
self.assertEqual(model.iter_n_children(iter), 0)
|
||||
self.assertEqual(model.iter_playlist(iter), plist_mgr["Collection"])
|
||||
self.assertEqual(model.get_value(iter, 0), toplevel_icons[0])
|
||||
self.assertEqual(model.get_value(iter, 1), toplevel_names[0])
|
||||
track = curds.Track.lookup(os.path.join(test_album, "01 - Test Track 01.ogg"))
|
||||
|
@ -53,8 +56,9 @@ class TestManager(unittest.TestCase):
|
|||
self.assertEqual(iter.user_data, i)
|
||||
self.assertEqual(path.get_indices()[0], i)
|
||||
self.assertEqual(model.iter_n_children(iter), 0)
|
||||
self.assertEqual(model.get_value(iter, 0), toplevel_icons[i])
|
||||
self.assertEqual(model.get_value(iter, 1), toplevel_names[i])
|
||||
self.assertEqual(model.iter_playlist(iter), toplevel_plist[i])
|
||||
self.assertEqual(model.get_value(iter, 0), toplevel_icons[i])
|
||||
self.assertEqual(model.get_value(iter, 1), toplevel_names[i])
|
||||
|
||||
iter = model.iter_nth_child(None, 2)
|
||||
self.assertEqual(iter.user_data, 2)
|
||||
|
|
Loading…
Reference in New Issue