playlist: Create a SortButton menu button

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-11-08 16:11:08 -05:00
parent 94cb57dbfc
commit c5aff410b4
2 changed files with 37 additions and 0 deletions

View File

@ -3,6 +3,7 @@ import db
import lib
from gi.repository import Gtk
from . import model
from . import view
class FilterEntry(lib.filter.Entry):
def __init__(self):
@ -47,3 +48,15 @@ class LoopToggle(PropertyToggle):
self.set_sensitive(plist != db.user.Table.find("Collection") and
plist != db.user.Table.find("Previous") and
plist != db.user.Table.find("Queued Tracks"))
class SortButton(Gtk.MenuButton):
def __init__(self):
Gtk.MenuButton.__init__(self)
self.set_icon_name("view-sort-ascending")
self.set_popover(view.SortOrderPopover())
self.set_sensitive(False)
def set_playlist(self, plist):
self.get_popover().set_playlist(plist)
self.set_sensitive(plist != db.user.Table.find("Previous"))

View File

@ -5,6 +5,7 @@ import unittest
from gi.repository import Gtk
from . import header
from . import model
from . import view
class TestFilterEntry(unittest.TestCase):
def test_init(self):
@ -87,3 +88,26 @@ class TestLoopToggle(unittest.TestCase):
self.assertFalse(loop.get_sensitive())
loop.set_playlist(db.user.Table.find("Queued Tracks"))
self.assertFalse(loop.get_sensitive())
class TestSortButton(unittest.TestCase):
def test_init(self):
sort = header.SortButton()
self.assertIsInstance(sort, Gtk.MenuButton)
self.assertIsInstance(sort.get_popover(), Gtk.Popover)
self.assertIsInstance(sort.get_popover(), view.SortOrderPopover)
self.assertEqual(sort.get_icon_name(), "view-sort-ascending")
self.assertFalse(sort.get_sensitive())
def test_set_playlist(self):
sort = header.SortButton()
sort.set_playlist(db.user.Table.find("Collection"))
self.assertTrue(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("Favorites"))
self.assertTrue(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("New Tracks"))
self.assertTrue(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("Previous"))
self.assertFalse(sort.get_sensitive())
sort.set_playlist(db.user.Table.find("Queued Tracks"))
self.assertTrue(sort.get_sensitive())