playlist: Create a DirectionButton button

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-11-10 09:54:45 -05:00
parent 9cfbf2acc9
commit 768a3388d7
2 changed files with 29 additions and 0 deletions

View File

@ -27,3 +27,14 @@ class UpDownBox(Gtk.Box):
@GObject.Signal
def move_down(self): pass
class DirectionButton(Gtk.Button):
def __init__(self):
Gtk.Button.__init__(self, sensitive=False)
self.set_icon_name("view-sort-ascending")
def set_direction(self, direction, active):
sort = "ascending" if direction == "ASC" else "descending"
self.set_icon_name(f"view-sort-{sort}")
self.set_sensitive(active)

View File

@ -49,3 +49,21 @@ class TestUpDownBox(unittest.TestCase):
self.assertTrue(self.up)
updown.get_last_child().emit("clicked")
self.assertTrue(self.down)
class TestDirectionButton(unittest.TestCase):
def test_init(self):
button = sort.DirectionButton()
self.assertIsInstance(button, Gtk.Button)
self.assertEqual(button.get_icon_name(), "view-sort-ascending")
self.assertFalse(button.get_sensitive())
def test_set_direction(self):
button = sort.DirectionButton()
button.set_direction("DESC", active=True)
self.assertEqual(button.get_icon_name(), "view-sort-descending")
self.assertTrue(button.get_sensitive())
button.set_direction("ASC", active=False)
self.assertEqual(button.get_icon_name(), "view-sort-ascending")
self.assertFalse(button.get_sensitive())