sidebar: Create a TableSelection list model
Configured to allow unselecting items so we have a way of choosing an item if it is the only one in the list. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
b74f948acb
commit
1d5a52623c
|
@ -53,6 +53,25 @@ class FilterTableModel(Gtk.FilterListModel):
|
|||
return self.get_model().get_model()
|
||||
|
||||
|
||||
class TableSelection(Gtk.SingleSelection):
|
||||
def __init__(self, table):
|
||||
Gtk.SingleSelection.__init__(self)
|
||||
self.set_model(FilterTableModel(table))
|
||||
self.set_can_unselect(True)
|
||||
self.set_autoselect(False)
|
||||
|
||||
def get_selected_playlist(self):
|
||||
item = self.get_selected_item()
|
||||
return None if item is None else item.get_item()
|
||||
|
||||
def get_playlist(self, n):
|
||||
row = self.get_item(n)
|
||||
return row.get_item() if row else None
|
||||
|
||||
def get_table(self):
|
||||
return self.get_model().get_table()
|
||||
|
||||
|
||||
class UserFilter(Gtk.Filter):
|
||||
def do_match(self, item):
|
||||
return item.name not in [ "Collection", "New Tracks", "Previous" ]
|
||||
|
|
|
@ -78,6 +78,31 @@ class TestFilterTableModel(unittest.TestCase):
|
|||
self.assertFalse(model.TableFilter.do_check(artist))
|
||||
|
||||
|
||||
class TestTableSelectionModel(unittest.TestCase):
|
||||
def test_init(self):
|
||||
selection = model.TableSelection(db.artist.Table)
|
||||
self.assertIsInstance(selection, Gtk.SingleSelection)
|
||||
self.assertIsInstance(selection.get_model(), model.FilterTableModel)
|
||||
self.assertEqual(selection.get_table(), db.artist.Table)
|
||||
self.assertTrue(selection.get_can_unselect())
|
||||
self.assertFalse(selection.get_autoselect())
|
||||
|
||||
def test_selected_playlist(self):
|
||||
db.reset()
|
||||
selection = model.TableSelection(db.artist.Table)
|
||||
self.assertIsNone(selection.get_selected_playlist())
|
||||
|
||||
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
||||
selection.set_selected(0)
|
||||
self.assertEqual(selection.get_selected_playlist(), track.artist)
|
||||
|
||||
def test_get_playlist(self):
|
||||
selection = model.TableSelection(db.artist.Table)
|
||||
track = db.make_fake_track(1, 1, "Test Track", "/a/b/c/1.ogg")
|
||||
self.assertEqual(selection.get_playlist(0), track.artist)
|
||||
self.assertIsNone(selection.get_playlist(1))
|
||||
|
||||
|
||||
class TestFilterUserModel(unittest.TestCase):
|
||||
def test_init(self):
|
||||
filter = model.FilterUserModel()
|
||||
|
|
Loading…
Reference in New Issue