rind: Remove NodeTreeModel iter_valid() function

We can calculate this more efficiently without the extra function call.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-22 16:47:18 -04:00
parent f3987543ed
commit 545854ca35
2 changed files with 17 additions and 31 deletions

View File

@ -29,8 +29,9 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
def do_get_iter(self, path):
plist = curds.playlist.Root.get_node(path.get_indices())
iter = self.playlist_iter(plist)
return self.iter_valid(iter)
if plist == None or plist.parent == None:
return (False, None)
return (True, self.playlist_iter(plist))
def do_get_n_columns(self):
return 3
@ -77,26 +78,26 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
def do_iter_nth_child(self, iter, n):
plist = self.iter_playlist(iter)
if plist:
child = plist.nth_child(n)
iter = self.playlist_iter(child)
return self.iter_valid(iter)
return (False, None)
if plist == None or n >= plist.n_children():
return (False, None)
child = plist.nth_child(n)
return (True, self.playlist_iter(child))
def do_iter_next(self, iter):
plist = self.iter_playlist(iter)
if plist != None and plist.next_child != None:
res = self.playlist_iter(plist.next_child)
iter.user_data = res.user_data
iter.user_data2 = res.user_data2
iter.user_data3 = id(plist.next_child)
return self.iter_valid(iter)
return (False, None)
if plist == None or plist.next_child == None:
return (False, None)
res = self.playlist_iter(plist.next_child)
iter.user_data = res.user_data
iter.user_data2 = res.user_data2
iter.user_data3 = id(plist.next_child)
return (True, iter)
def do_iter_parent(self, child):
plist = self.iter_playlist(child)
iter = self.playlist_iter(plist.parent)
return self.iter_valid(iter)
if plist.parent == None or plist.parent == curds.playlist.Root:
return (False, None)
return (True, self.playlist_iter(plist.parent))
def is_visible(self, model, iter, data):
plist = self.iter_playlist(iter)
@ -112,11 +113,6 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
return curds.playlist.Root.get_node(path)
return curds.playlist.Root
def iter_valid(self, iter):
plist = self.iter_playlist(iter)
valid = plist != None and plist != curds.playlist.Root
return (True, iter) if valid else (False, None)
def on_playlist_changed(self, plist):
if plist.parent:
path = Gtk.TreePath(plist.get_path())

View File

@ -216,16 +216,6 @@ class TestNodeTreeModel(unittest.TestCase):
expected = self.genre.nth_child(i) if i < self.genre.n_children() else None
self.assertEqual(self.model.iter_playlist(iter), expected)
def test_model_iter_valid(self):
iter = Gtk.TreeIter()
self.assertEqual(self.model.iter_valid(iter), (False, None))
for i, node in enumerate(plist_root.children):
iter.user_data = i + 1
self.assertEqual(self.model.iter_valid(iter), (True, iter))
iter.user_data = plist_root.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))