curds: Replace str(node) with node.get_markup()
This lets us save str(node) to be used for something else, and it gives playlists a chance to escape their names before returning to the UI Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0e018473f7
commit
3a939f92e1
|
@ -28,9 +28,6 @@ class PlaylistNode(tree.ETree):
|
|||
nodes[id(self)] = self
|
||||
self.__init_common__()
|
||||
|
||||
def __str__(self):
|
||||
return f"<big>{self.name}</big>"
|
||||
|
||||
def append_child(self, child):
|
||||
with self.lock:
|
||||
index = len(self.children)
|
||||
|
|
|
@ -4,6 +4,7 @@ from .. import notify
|
|||
from .. import sort
|
||||
from .. import trak
|
||||
import random
|
||||
from gi.repository import GLib
|
||||
|
||||
class Playlist(node.PlaylistNode):
|
||||
def __init__(self, name, icon="", sort=[], can_loop=True, can_random=True):
|
||||
|
@ -44,10 +45,6 @@ class Playlist(node.PlaylistNode):
|
|||
self.random = state["random"]
|
||||
self.visible = False
|
||||
|
||||
def __str__(self):
|
||||
l = len(self.list)
|
||||
return f"{self.name}\n{l} Track{'s' if l != 1 else ''}"
|
||||
|
||||
def add(self, track):
|
||||
with self.lock:
|
||||
if track == None:
|
||||
|
@ -73,6 +70,11 @@ class Playlist(node.PlaylistNode):
|
|||
with self.lock:
|
||||
return track in self.list
|
||||
|
||||
def get_markup(self):
|
||||
t = GLib.markup_escape_text(self.name)
|
||||
l = len(self.list)
|
||||
return f"{t}\n{l} Track{'s' if l != 1 else ''}"
|
||||
|
||||
def index(self, track):
|
||||
with self.lock:
|
||||
if track != None:
|
||||
|
|
|
@ -24,7 +24,6 @@ class TestPlaylistNode(unittest.TestCase):
|
|||
n = node.PlaylistNode("Test Node", "test-icon")
|
||||
self.assertEqual(n.icon, "test-icon")
|
||||
self.assertEqual(n.name, "Test Node")
|
||||
self.assertEqual(str(n), "<big>Test Node</big>")
|
||||
self.assertEqual(node.nodes.get(id(n)), n)
|
||||
|
||||
def test_node_append_child(self):
|
||||
|
|
|
@ -95,13 +95,6 @@ class TestPlaylist(unittest.TestCase):
|
|||
self.assertTrue( self.plist.random)
|
||||
self.assertFalse(self.plist.visible)
|
||||
|
||||
def test_playlist__str__(self):
|
||||
self.assertEqual(str(self.plist), "Test Playlist\n0 Tracks")
|
||||
self.add_tracks([1])
|
||||
self.assertEqual(str(self.plist), "Test Playlist\n1 Track")
|
||||
self.add_tracks([2])
|
||||
self.assertEqual(str(self.plist), "Test Playlist\n2 Tracks")
|
||||
|
||||
def test_playlist_add_append(self):
|
||||
tracks = self.add_tracks(range(1, 6))
|
||||
|
||||
|
@ -140,6 +133,15 @@ class TestPlaylist(unittest.TestCase):
|
|||
track = trak.lookup(os.path.join(test_album, f"10 - Test Track 10.ogg"))
|
||||
self.assertFalse(self.plist.contains(track))
|
||||
|
||||
def test_playlist_get_markup(self):
|
||||
self.assertEqual(self.plist.get_markup(), "Test Playlist\n0 Tracks")
|
||||
self.add_tracks([1])
|
||||
self.assertEqual(self.plist.get_markup(), "Test Playlist\n1 Track")
|
||||
self.add_tracks([2])
|
||||
self.assertEqual(self.plist.get_markup(), "Test Playlist\n2 Tracks")
|
||||
self.plist.name = "Test & Playlist"
|
||||
self.assertEqual(self.plist.get_markup(), "Test & Playlist\n2 Tracks")
|
||||
|
||||
def test_playlist_index(self):
|
||||
tracks = self.add_tracks(range(9, 0, -1))
|
||||
for i, track in enumerate(tracks):
|
||||
|
|
|
@ -90,9 +90,9 @@ class TestETree(unittest.TestCase):
|
|||
self.assertEqual(root.find_child("D", "icon"), d)
|
||||
self.assertEqual(root.children, [ a, b, c, d ])
|
||||
|
||||
def test_etree_get_name(self):
|
||||
def test_etree_get_markup(self):
|
||||
etree = tree.ETree("Test Tree", "test-icon")
|
||||
self.assertEqual(etree.get_name(), "<big>Test Tree</big>")
|
||||
self.assertEqual(etree.get_markup(), "<big>Test Tree</big>")
|
||||
|
||||
def test_etree_get_path(self):
|
||||
root = tree.ETree()
|
||||
|
|
|
@ -58,7 +58,7 @@ class ETree:
|
|||
return node
|
||||
return self.__insert__(index, self.alloc_child(name, icon))
|
||||
|
||||
def get_name(self):
|
||||
def get_markup(self):
|
||||
return f"<big>{self.name}</big>"
|
||||
|
||||
def get_path(self):
|
||||
|
|
|
@ -32,30 +32,23 @@ class NodeTreeModel(GObject.GObject, Gtk.TreeModel):
|
|||
plist = self.iter_playlist(iter)
|
||||
return Gtk.TreePath(plist.get_path())
|
||||
|
||||
def do_get_node_value(self, plist, column):
|
||||
if column == 1:
|
||||
return str(plist)
|
||||
elif column == 2:
|
||||
area = Treeview.get_cell_area(Gtk.TreePath(0), Treeview.get_column(1))
|
||||
self.height = max(self.height, area.height)
|
||||
return self.height
|
||||
|
||||
def do_get_playlist_value(self, plist, column):
|
||||
if column == 1:
|
||||
text = GLib.markup_escape_text(str(plist))
|
||||
if plist == curds.playlist.current():
|
||||
return f"<b>{text}</b>"
|
||||
return text
|
||||
elif column == 2:
|
||||
return -1
|
||||
def do_get_node_height(self, plist, column):
|
||||
area = Treeview.get_cell_area(Gtk.TreePath(0), Treeview.get_column(1))
|
||||
self.height = max(self.height, area.height)
|
||||
return self.height
|
||||
|
||||
def do_get_value(self, iter, column):
|
||||
plist = self.iter_playlist(iter)
|
||||
plist = self.iter_playlist(iter)
|
||||
if column == 0:
|
||||
return plist.icon
|
||||
elif column == 1:
|
||||
if plist == curds.playlist.current():
|
||||
return f"<b>{plist.get_markup()}</b>"
|
||||
return plist.get_markup()
|
||||
|
||||
if isinstance(plist, curds.Playlist):
|
||||
return self.do_get_playlist_value(plist, column)
|
||||
return self.do_get_node_value(plist, column)
|
||||
return -1
|
||||
return self.do_get_node_height(plist, column)
|
||||
|
||||
def do_iter_children(self, parent):
|
||||
return self.do_iter_nth_child(parent, 0)
|
||||
|
|
|
@ -63,7 +63,7 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
|
||||
for child in curds.playlist.Root.walk():
|
||||
iter.user_data = id(child)
|
||||
text = str(child)
|
||||
text = child.get_markup()
|
||||
height = rect.height
|
||||
if child == curds.playlist.Root.current[0]:
|
||||
text = f"<b>{text}</b>"
|
||||
|
|
Loading…
Reference in New Issue
Block a user