curds: PlaylistManager shouldn't inherit from list
This is just the next step in changing this into a PlaylistNode Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
8ab2d97cf5
commit
8434446dcd
|
@ -9,24 +9,25 @@ import os
|
|||
import random
|
||||
|
||||
|
||||
class PlaylistManager(list):
|
||||
class PlaylistManager:
|
||||
def __init__(self):
|
||||
self.append(collection.CollectionPlaylist())
|
||||
self.append(previous.PreviousPlaylist())
|
||||
self.append(genre.GenreNode())
|
||||
self.append(library.LibraryNode())
|
||||
|
||||
for plist in self:
|
||||
plist.parent = self
|
||||
self.children = self
|
||||
self.children = [ ]
|
||||
self.parent = None
|
||||
|
||||
self.children.append(collection.CollectionPlaylist())
|
||||
self.children.append(previous.PreviousPlaylist())
|
||||
self.children.append(genre.GenreNode())
|
||||
self.children.append(library.LibraryNode())
|
||||
|
||||
for plist in self.children:
|
||||
plist.parent = self
|
||||
|
||||
self.current = [ self.lookup("Collection") ]
|
||||
self.track = None
|
||||
|
||||
def __getitem__(self, index):
|
||||
if index < len(self):
|
||||
return list.__getitem__(self, index)
|
||||
if index < len(self.children):
|
||||
return self.children[index]
|
||||
return None
|
||||
|
||||
def __current_changed(self, old):
|
||||
|
@ -47,7 +48,7 @@ class PlaylistManager(list):
|
|||
return [ ]
|
||||
|
||||
def index(self, plist):
|
||||
for (i, pl) in enumerate(self):
|
||||
for (i, pl) in enumerate(self.children):
|
||||
if id(pl) == id(plist): return i
|
||||
return None
|
||||
|
||||
|
@ -107,7 +108,7 @@ class PlaylistManager(list):
|
|||
return self.track
|
||||
|
||||
def reset(self):
|
||||
for plist in self:
|
||||
for plist in self.children:
|
||||
plist.reset()
|
||||
self.current = [ self.lookup("Collection") ]
|
||||
self.track = None
|
||||
|
|
|
@ -48,7 +48,6 @@ class TestPlaylistManager(unittest.TestCase):
|
|||
|
||||
def test_manager_init(self):
|
||||
self.assertIsInstance(self.playman, manager.PlaylistManager)
|
||||
self.assertIsInstance(self.playman, list)
|
||||
|
||||
self.assertIsInstance(self.playman.lookup("Collection"), collection.CollectionPlaylist)
|
||||
self.assertIsInstance(self.playman.lookup("Previous"), previous.PreviousPlaylist)
|
||||
|
@ -67,7 +66,7 @@ class TestPlaylistManager(unittest.TestCase):
|
|||
self.assertEqual( self.playman[3], self.playman.lookup("Libraries"))
|
||||
self.assertIsNone(self.playman[999])
|
||||
|
||||
for i in range(len(self.playman)):
|
||||
for i in range(self.playman.n_children()):
|
||||
self.assertEqual(self.playman.index(self.playman[i]), i)
|
||||
self.assertIsNone(self.playman.index(plist))
|
||||
|
||||
|
|
|
@ -53,16 +53,16 @@ class TestManager(unittest.TestCase):
|
|||
self.assertEqual(self.model.get_column_type(col), GObject.GType(str))
|
||||
|
||||
def test_model_get_iter(self):
|
||||
for i in range(len(plist_mgr)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
path = Gtk.TreePath.new_from_indices([ i ])
|
||||
iter = self.model.get_iter(path)
|
||||
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
|
||||
|
||||
path = Gtk.TreePath.new_from_indices([ len(plist_mgr) ])
|
||||
path = Gtk.TreePath.new_from_indices([ plist_mgr.n_children() ])
|
||||
self.assertRaises(ValueError, self.model.get_iter, path)
|
||||
|
||||
idx = plist_mgr.index(self.genre)
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
path = Gtk.TreePath.new_from_indices([ idx, i ])
|
||||
iter = self.model.get_iter(path)
|
||||
self.assertTreeIterEqual(iter, (idx + 1, i + 1, 0))
|
||||
|
@ -70,13 +70,13 @@ class TestManager(unittest.TestCase):
|
|||
def test_model_get_path(self):
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
for i in range(len(plist_mgr)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
path = self.model.get_path(iter)
|
||||
self.assertEqual(path.get_indices(), [ i ])
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
iter.user_data2 = i + 1
|
||||
path = self.model.get_path(iter)
|
||||
self.assertEqual(path.get_indices(), [ iter.user_data - 1, i ])
|
||||
|
@ -84,52 +84,59 @@ class TestManager(unittest.TestCase):
|
|||
def test_model_get_value(self):
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
for i in range(len(plist_mgr)):
|
||||
plist = plist_mgr[i]
|
||||
text = str(plist) if i != 0 else f"<b>{str(plist)}</b>"
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
text = str(node) if i != 0 else f"<b>{str(node)}</b>"
|
||||
iter.user_data = i + 1
|
||||
self.assertEqual(self.model.get_value(iter, 0), plist.icon)
|
||||
self.assertEqual(self.model.get_value(iter, 0), node.icon)
|
||||
self.assertEqual(self.model.get_value(iter, 1), text)
|
||||
|
||||
def test_model_iter_children(self):
|
||||
iter = self.model.iter_children(None)
|
||||
self.assertTreeIterEqual(iter, (1, 0, 0))
|
||||
|
||||
for i in range(len(plist_mgr) + 1):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
child = self.model.iter_children(iter)
|
||||
if plist_mgr[i] != self.genre:
|
||||
if node != self.genre:
|
||||
self.assertIsNone(child)
|
||||
iter.user_data = plist_mgr.n_children()
|
||||
self.assertIsNone(self.model.iter_children(iter))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
child = self.model.iter_children(iter)
|
||||
self.assertTreeIterEqual(child, (iter.user_data, 1, 0))
|
||||
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
child.user_data2 = i + 1
|
||||
self.assertIsNone(self.model.iter_children(child))
|
||||
|
||||
def test_model_iter_has_child(self):
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
for i in range(len(plist_mgr) + 1):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
expected = plist_mgr[i] == self.genre
|
||||
expected = node == self.genre
|
||||
self.assertEqual(self.model.iter_has_child(iter), expected)
|
||||
iter.user_data = plist_mgr.n_children()
|
||||
self.assertFalse(self.model.iter_has_child(iter))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i in range(self.genre.n_children() + 1):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
iter.user_data2 = i + 1
|
||||
self.assertFalse(self.model.iter_has_child(iter))
|
||||
iter.user_data2 = self.genre.n_children()
|
||||
self.assertFalse(self.model.iter_has_child(iter))
|
||||
|
||||
def test_model_iter_n_children(self):
|
||||
iter = Gtk.TreeIter()
|
||||
self.assertEqual(self.model.iter_n_children(None), len(plist_mgr))
|
||||
self.assertEqual(self.model.iter_n_children(None), plist_mgr.n_children())
|
||||
|
||||
for i in range(len(plist_mgr) + 1):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
n = 2 if plist_mgr[i] == self.genre else 0
|
||||
n = 2 if node == self.genre else 0
|
||||
self.assertEqual(self.model.iter_n_children(iter), n)
|
||||
iter.user_data = plist_mgr.n_children()
|
||||
self.assertEqual(self.model.iter_n_children(iter), 0)
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i in range(self.genre.n_children() + 1):
|
||||
|
@ -137,49 +144,49 @@ class TestManager(unittest.TestCase):
|
|||
self.assertEqual(self.model.iter_n_children(iter), 0)
|
||||
|
||||
def test_model_iter_nth_child(self):
|
||||
for i in range(len(plist_mgr)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter = self.model.iter_nth_child(None, i)
|
||||
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
|
||||
if plist_mgr[i] != self.genre:
|
||||
if node != self.genre:
|
||||
self.assertIsNone(self.model.iter_nth_child(iter, 0))
|
||||
self.assertIsNone(self.model.iter_nth_child(None, len(plist_mgr)))
|
||||
self.assertIsNone(self.model.iter_nth_child(None, plist_mgr.n_children()))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
child = self.model.iter_nth_child(iter, i)
|
||||
self.assertTreeIterEqual(child, (iter.user_data, i + 1, 0))
|
||||
self.assertIsNone(self.model.iter_nth_child(iter, i + 1))
|
||||
|
||||
def test_model_iter_next(self):
|
||||
iter = self.model.iter_children(None)
|
||||
for i in range(len(curds.PlaylistManager)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
|
||||
iter = self.model.iter_next(iter)
|
||||
self.assertIsNone(iter)
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
child = self.model.iter_children(iter)
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
self.assertTreeIterEqual(child, (iter.user_data, i + 1, 0))
|
||||
child = self.model.iter_next(child)
|
||||
self.assertIsNone(child)
|
||||
|
||||
def test_model_iter_parent(self):
|
||||
iter = self.model.iter_children(None)
|
||||
for i in range(len(curds.PlaylistManager)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
self.assertIsNone(self.model.iter_parent(iter))
|
||||
iter = self.model.iter_next(iter)
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
iter = self.model.iter_children(iter)
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
parent = self.model.iter_parent(iter)
|
||||
self.assertTreeIterEqual(parent, (iter.user_data, 0, 0))
|
||||
iter = self.model.iter_next(iter)
|
||||
|
||||
def test_model_iter_previous(self):
|
||||
iter = self.model.playlist_iter(plist_mgr.lookup("Libraries"))
|
||||
for i in range(len(curds.PlaylistManager) - 1, -1, -1):
|
||||
for i in range(plist_mgr.n_children() - 1, -1, -1):
|
||||
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
|
||||
iter = self.model.iter_previous(iter)
|
||||
self.assertIsNone(iter)
|
||||
|
@ -197,15 +204,16 @@ class TestManager(unittest.TestCase):
|
|||
self.assertEqual(self.model.iter_playlist(None), curds.PlaylistManager)
|
||||
self.assertEqual(self.model.iter_playlist(iter), curds.PlaylistManager)
|
||||
|
||||
for i in range(len(plist_mgr) + 1):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
expected = plist_mgr[i] if i < len(plist_mgr) else None
|
||||
self.assertEqual(self.model.iter_playlist(iter), expected)
|
||||
self.assertEqual(self.model.iter_playlist(iter), node)
|
||||
iter.user_data = plist_mgr.n_children() + 1
|
||||
self.assertIsNone(self.model.iter_playlist(iter))
|
||||
|
||||
iter.user_data2 = 1
|
||||
for i in range(len(plist_mgr) + 1):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
expected = self.genre.nth_child(0) if plist_mgr[i] == self.genre else None
|
||||
expected = self.genre.nth_child(0) if node == self.genre else None
|
||||
self.assertEqual(self.model.iter_playlist(iter), expected)
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
|
@ -218,33 +226,48 @@ class TestManager(unittest.TestCase):
|
|||
iter = Gtk.TreeIter()
|
||||
self.assertEqual(self.model.iter_valid(iter), (False, None))
|
||||
|
||||
for i in range(len(plist_mgr) + 1):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter.user_data = i + 1
|
||||
expected = (True, iter) if i < len(plist_mgr) else (False, None)
|
||||
self.assertEqual(self.model.iter_valid(iter), expected)
|
||||
self.assertEqual(self.model.iter_valid(iter), (True, iter))
|
||||
iter.user_data = plist_mgr.n_children() + 1
|
||||
self.assertEqual(self.model.iter_valid(iter), (False, None))
|
||||
|
||||
def test_model_playlist_iter(self):
|
||||
self.assertIsNone(self.model.playlist_iter(None))
|
||||
|
||||
for i in range(len(plist_mgr)):
|
||||
iter = self.model.playlist_iter(plist_mgr[i])
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter = self.model.playlist_iter(node)
|
||||
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i in range(self.genre.n_children()):
|
||||
child = self.model.playlist_iter(self.genre.nth_child(i))
|
||||
for i, node in enumerate(self.genre.children):
|
||||
child = self.model.playlist_iter(node)
|
||||
self.assertTreeIterEqual(child, (iter.user_data, i + 1, 0))
|
||||
|
||||
def test_model_playlist_valid_iter(self):
|
||||
self.assertEqual(self.model.playlist_valid_iter(None), (False, None))
|
||||
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
(valid, iter) = self.model.playlist_valid_iter(node)
|
||||
self.assertTrue(valid)
|
||||
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i, node in enumerate(self.genre.children):
|
||||
(valid, child) = self.model.playlist_valid_iter(node)
|
||||
self.assertTrue(valid)
|
||||
self.assertTreeIterEqual(child, (iter.user_data, i + 1, 0))
|
||||
|
||||
def test_manager_selection(self):
|
||||
selection = manager.Treeview.get_selection()
|
||||
self.assertIsInstance(selection, Gtk.TreeSelection)
|
||||
|
||||
for i in range(len(plist_mgr)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
path = Gtk.TreePath(i)
|
||||
selection.select_path(path)
|
||||
if isinstance(plist_mgr[i], curds.Playlist):
|
||||
if isinstance(node, curds.Playlist):
|
||||
self.assertTrue( selection.path_is_selected(path))
|
||||
self.assertEqual(playlist.PlistModel.playlist, plist_mgr[i])
|
||||
self.assertEqual(playlist.PlistModel.playlist, node)
|
||||
else:
|
||||
self.assertFalse(selection.path_is_selected(path))
|
||||
|
||||
|
@ -276,16 +299,16 @@ class TestManager(unittest.TestCase):
|
|||
self.assertFalse(entry.get_style_context().has_class("warning"))
|
||||
self.assertFalse(manager.SearchPopover.is_visible())
|
||||
|
||||
for i in range(len(plist_mgr)):
|
||||
for i, node in enumerate(plist_mgr.children):
|
||||
iter = filter.iter_nth_child(None, i)
|
||||
text = str(plist_mgr[i]) if i != 0 else f"<b>{str(plist_mgr[i])}</b>"
|
||||
text = str(node) if i != 0 else f"<b>{str(node)}</b>"
|
||||
self.assertEqual(filter.get_value(iter, 1), text)
|
||||
if plist_mgr[i] != self.genre:
|
||||
if node != self.genre:
|
||||
self.assertIsNone(filter.iter_nth_child(iter, 0))
|
||||
else:
|
||||
for i in range(self.genre.n_children()):
|
||||
for i, node in enumerate(self.genre.children):
|
||||
child = filter.iter_nth_child(iter, i)
|
||||
self.assertEqual(filter.get_value(child, 1), str(self.genre.nth_child(i)))
|
||||
self.assertEqual(filter.get_value(child, 1), str(node))
|
||||
|
||||
entry.set_text("*v")
|
||||
self.model.set_filter_text(entry)
|
||||
|
@ -301,11 +324,11 @@ class TestManager(unittest.TestCase):
|
|||
self.assertFalse(entry.get_style_context().has_class("warning"))
|
||||
self.assertFalse(manager.SearchPopover.is_visible())
|
||||
|
||||
for i in range(2, len(plist_mgr)):
|
||||
iter = filter.iter_nth_child(None, i - 2)
|
||||
self.assertEqual(filter.get_value(iter, 1), str(plist_mgr[i]))
|
||||
for i, node in enumerate(plist_mgr.children[2:]):
|
||||
iter = filter.iter_nth_child(None, i)
|
||||
self.assertEqual(filter.get_value(iter, 1), str(node))
|
||||
child = filter.iter_nth_child(iter, 0)
|
||||
if plist_mgr[i] != self.genre:
|
||||
if node != self.genre:
|
||||
self.assertIsNone(child)
|
||||
else:
|
||||
self.assertEqual(filter.get_value(child, 1), str(self.genre.nth_child(1)))
|
||||
|
|
Loading…
Reference in New Issue