rind: Add the node id to the GtkTreeIter

We don't use user_data3 for anything yet, so let's use it to find
playlists easier.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-22 15:58:27 -04:00
parent 02f271bba0
commit 16bbdb7105
2 changed files with 15 additions and 13 deletions

View File

@ -88,6 +88,7 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
iter.user_data2 += 1
else:
iter.user_data += 1
iter.user_data3 = id(self.iter_playlist(iter))
return self.iter_valid(iter)
def do_iter_parent(self, child):
@ -149,6 +150,7 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
iter = Gtk.TreeIter()
iter.user_data = path[0] + 1
iter.user_data2 = path[1] + 1 if len(path) >= 2 else 0
iter.user_data3 = id(plist)
return iter
def set_filter_text(self, entry):

View File

@ -58,18 +58,18 @@ class TestNodeTreeModel(unittest.TestCase):
def test_model_get_iter(self):
for i, node in enumerate(plist_root.children):
path = Gtk.TreePath.new_from_indices([ i ])
path = Gtk.TreePath(node.get_path())
iter = self.model.get_iter(path)
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
self.assertTreeIterEqual(iter, (i + 1, 0, id(node)))
path = Gtk.TreePath.new_from_indices([ plist_root.n_children() ])
self.assertRaises(ValueError, self.model.get_iter, path)
index = self.genre.node_index()
for i, node in enumerate(self.genre.children):
path = Gtk.TreePath.new_from_indices([ index, i ])
path = Gtk.TreePath(node.get_path())
iter = self.model.get_iter(path)
self.assertTreeIterEqual(iter, (index + 1, i + 1, 0))
self.assertTreeIterEqual(iter, (index + 1, i + 1, id(node)))
def test_model_get_path(self):
iter = Gtk.TreeIter()
@ -102,7 +102,7 @@ class TestNodeTreeModel(unittest.TestCase):
def test_model_iter_children(self):
iter = self.model.iter_children(None)
self.assertTreeIterEqual(iter, (1, 0, 0))
self.assertTreeIterEqual(iter, (1, 0, id(plist_root.nth_child(0))))
for i, node in enumerate(plist_root.children):
iter.user_data = i + 1
@ -114,7 +114,7 @@ class TestNodeTreeModel(unittest.TestCase):
iter = self.model.playlist_iter(self.genre)
child = self.model.iter_children(iter)
self.assertTreeIterEqual(child, (iter.user_data, 1, 0))
self.assertTreeIterEqual(child, (iter.user_data, 1, id(self.genre.nth_child(0))))
for i, node in enumerate(self.genre.children):
child.user_data2 = i + 1
@ -155,7 +155,7 @@ class TestNodeTreeModel(unittest.TestCase):
def test_model_iter_nth_child(self):
for i, node in enumerate(plist_root.children):
iter = self.model.iter_nth_child(None, i)
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
self.assertTreeIterEqual(iter, (i + 1, 0, id(node)))
if node not in [self.artist, self.decade, self.genre]:
self.assertIsNone(self.model.iter_nth_child(iter, 0))
self.assertIsNone(self.model.iter_nth_child(None, plist_root.n_children()))
@ -163,20 +163,20 @@ class TestNodeTreeModel(unittest.TestCase):
iter = self.model.playlist_iter(self.genre)
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.assertTreeIterEqual(child, (iter.user_data, i + 1, id(node)))
self.assertIsNone(self.model.iter_nth_child(iter, i + 1))
def test_model_iter_next(self):
iter = self.model.iter_children(None)
for i, node in enumerate(plist_root.children):
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
self.assertTreeIterEqual(iter, (i + 1, 0, id(node)))
iter = self.model.iter_next(iter)
self.assertIsNone(iter)
iter = self.model.playlist_iter(self.genre)
child = self.model.iter_children(iter)
for i, node in enumerate(self.genre.children):
self.assertTreeIterEqual(child, (iter.user_data, i + 1, 0))
self.assertTreeIterEqual(child, (iter.user_data, i + 1, id(node)))
child = self.model.iter_next(child)
self.assertIsNone(child)
@ -190,7 +190,7 @@ class TestNodeTreeModel(unittest.TestCase):
iter = self.model.iter_children(iter)
for i, node in enumerate(self.genre.children):
parent = self.model.iter_parent(iter)
self.assertTreeIterEqual(parent, (iter.user_data, 0, 0))
self.assertTreeIterEqual(parent, (iter.user_data, 0, id(self.genre)))
iter = self.model.iter_next(iter)
def test_model_iter_playlist(self):
@ -231,12 +231,12 @@ class TestNodeTreeModel(unittest.TestCase):
for i, node in enumerate(plist_root.children):
iter = self.model.playlist_iter(node)
self.assertTreeIterEqual(iter, (i + 1, 0, 0))
self.assertTreeIterEqual(iter, (i + 1, 0, id(node)))
iter = self.model.playlist_iter(self.genre)
for i, node in enumerate(self.genre.children):
child = self.model.playlist_iter(node)
self.assertTreeIterEqual(child, (iter.user_data, i + 1, 0))
self.assertTreeIterEqual(child, (iter.user_data, i + 1, id(node)))
def test_node_selection(self):
selection = node.Treeview.get_selection()