sidebar: Create a UserGrid

This adds a button users can click to remove the playlists they create.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-11-05 13:05:16 -04:00
parent d1d84af228
commit 0e7cb81476
2 changed files with 58 additions and 0 deletions

View File

@ -40,3 +40,26 @@ class Grid(Gtk.Grid):
item.disconnect_by_func(self.set_count)
item.disconnect_by_func(self.set_count)
item.disconnect_by_func(self.set_count)
class UserGrid(Grid):
def __init__(self):
Grid.__init__(self)
self.remove = self.attach(Gtk.Button(), 2, 0, 1, 2)
self.remove.set_icon_name("list-remove")
self.remove.add_css_class("flat")
self.remove.set_halign(Gtk.Align.CENTER)
self.remove.set_valign(Gtk.Align.CENTER)
def set_item(self, item):
system = [ "Collection", "Favorites", "New Tracks",
"Previous", "Queued Tracks" ]
super().set_item(item)
self.remove.set_visible(item.name not in system)
self.remove.connect("clicked", self.clicked, item)
def unset_item(self, item):
self.remove.disconnect_by_func(self.clicked)
def clicked(self, button, item):
item.delete()

View File

@ -60,3 +60,38 @@ class TestGrid(unittest.TestCase):
db.track.Table.delete(track)
artist.remove_track(track, False)
self.assertEqual(grid.count.get_text(), "0 Tracks")
class TestUserGrid(unittest.TestCase):
def tearDown(self): db.reset()
def test_init(self):
grid = row.UserGrid()
self.assertIsInstance(grid, row.Grid)
self.assertIsInstance(grid.remove, Gtk.Button)
self.assertEqual(grid.get_child_at(2, 0), grid.remove)
self.assertEqual(grid.remove.get_icon_name(), "list-remove")
self.assertEqual(grid.remove.get_halign(), Gtk.Align.CENTER)
self.assertEqual(grid.remove.get_valign(), Gtk.Align.CENTER)
self.assertTrue(grid.remove.has_css_class("flat"))
def test_set_item(self):
grid = row.UserGrid()
grid.set_item(db.user.Table.find("Collection"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Favorites"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("New Tracks"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Previous"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Queued Tracks"))
self.assertFalse(grid.remove.get_visible())
grid.set_item(db.user.Table.find("Test Playlist"))
self.assertTrue(grid.remove.get_visible())
def test_click(self):
grid = row.UserGrid()
grid.set_item(db.user.Table.find("Test Playlist"))
grid.remove.emit("clicked")
self.assertIsNone(db.user.Table.lookup("Test Playlist"))