sidebar: Create a LibraryGrid
This adds a menu button with extra options for libraries Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0e7cb81476
commit
3bd60b0f06
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import Pango
|
||||
from . import widgets
|
||||
|
||||
class Label(Gtk.Label):
|
||||
def __init__(self):
|
||||
|
@ -63,3 +64,22 @@ class UserGrid(Grid):
|
|||
|
||||
def clicked(self, button, item):
|
||||
item.delete()
|
||||
|
||||
|
||||
class LibraryGrid(Grid):
|
||||
def __init__(self):
|
||||
Grid.__init__(self)
|
||||
self.menu = self.attach(Gtk.MenuButton(), 2, 0, 1, 2)
|
||||
self.menu.add_css_class("flat")
|
||||
self.menu.get_first_child().add_css_class("flat")
|
||||
self.menu.set_direction(Gtk.ArrowType.LEFT)
|
||||
self.menu.set_halign(Gtk.Align.CENTER)
|
||||
self.menu.set_valign(Gtk.Align.CENTER)
|
||||
|
||||
def set_item(self, item):
|
||||
super().set_item(item)
|
||||
self.menu.set_popover(widgets.LibraryPopover(item))
|
||||
|
||||
def unset_item(self, item):
|
||||
super().unset_item(item)
|
||||
self.menu.set_popover(None)
|
||||
|
|
|
@ -4,6 +4,7 @@ import unittest
|
|||
from gi.repository import Gtk
|
||||
from gi.repository import Pango
|
||||
from . import row
|
||||
from . import widgets
|
||||
|
||||
class TestLabel(unittest.TestCase):
|
||||
def test_init(self):
|
||||
|
@ -95,3 +96,24 @@ class TestUserGrid(unittest.TestCase):
|
|||
grid.set_item(db.user.Table.find("Test Playlist"))
|
||||
grid.remove.emit("clicked")
|
||||
self.assertIsNone(db.user.Table.lookup("Test Playlist"))
|
||||
|
||||
|
||||
class TestLibraryGrid(unittest.TestCase):
|
||||
def test_init(self):
|
||||
grid = row.LibraryGrid()
|
||||
self.assertIsInstance(grid, row.Grid)
|
||||
self.assertIsInstance(grid.menu, Gtk.MenuButton)
|
||||
self.assertEqual(grid.get_child_at(2, 0), grid.menu)
|
||||
self.assertEqual(grid.menu.get_direction(), Gtk.ArrowType.LEFT)
|
||||
self.assertEqual(grid.menu.get_halign(), Gtk.Align.CENTER)
|
||||
self.assertEqual(grid.menu.get_valign(), Gtk.Align.CENTER)
|
||||
self.assertTrue(grid.menu.has_css_class("flat"))
|
||||
self.assertTrue(grid.menu.get_first_child().has_css_class("flat"))
|
||||
self.assertIsNone(grid.menu.get_popover())
|
||||
|
||||
def test_set_item(self):
|
||||
grid = row.LibraryGrid()
|
||||
grid.set_item(db.library.Table.find("/a/b/c"))
|
||||
self.assertIsInstance(grid.menu.get_popover(), widgets.LibraryPopover)
|
||||
grid.unset_item(db.library.Table.find("/a/b/c"))
|
||||
self.assertIsNone(grid.menu.get_popover())
|
||||
|
|
Loading…
Reference in New Issue