tracklist: Add an Unselect All button
This button will unselect any selected tracks when clicked. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
f1e18549ff
commit
2d19d78eb6
|
@ -29,8 +29,11 @@ class Card(Gtk.Box):
|
|||
self._trackview = trackview.TrackView(sql, margin_start=6,
|
||||
margin_end=6)
|
||||
self._visible_cols = buttons.VisibleColumns(self._trackview.columns)
|
||||
self._unselect = Gtk.Button(icon_name="edit-select-none-symbolic",
|
||||
has_frame=False, sensitive=False)
|
||||
|
||||
self._top_left.append(self._visible_cols)
|
||||
self._top_left.append(self._unselect)
|
||||
|
||||
self._top_box.set_start_widget(self._top_left)
|
||||
self._top_box.set_center_widget(self._filter)
|
||||
|
@ -38,12 +41,18 @@ class Card(Gtk.Box):
|
|||
self.append(self._top_box)
|
||||
self.append(self._trackview)
|
||||
|
||||
self._trackview.bind_property("have-selected", self._unselect,
|
||||
"sensitive")
|
||||
self.bind_property("playlist", self._trackview, "playlist")
|
||||
|
||||
self._filter.connect("search-changed", self.__search_changed)
|
||||
self._unselect.connect("clicked", self.__clear_selection)
|
||||
|
||||
self.add_css_class("card")
|
||||
|
||||
def __clear_selection(self, unselect: Gtk.Button) -> None:
|
||||
self._trackview.clear_selected_tracks()
|
||||
|
||||
def __search_changed(self, filter: entry.Filter) -> None:
|
||||
self.sql.tracks.filter(filter.get_query())
|
||||
|
||||
|
|
|
@ -28,4 +28,3 @@ class OSD(Gtk.Overlay):
|
|||
def clear_selection(self, *args) -> None:
|
||||
"""Clear the current selection."""
|
||||
self.selection.unselect_all()
|
||||
self.__selection_changed(self.selection, 0, 0)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 0 0 v 1.0625 l 1.9375 1.9375 h 1.0625 v -3 z m 4 0 v 2 h 3 v -2 z m 4 0 v 2 h 4 v -2 z m 5 0 v 3 h 3 v -3 z m -13 4 v 4 h 2 v -2.8125 l -1.1875 -1.1875 z m 14 0 v 3 h 2 v -3 z m 0 4 v 4 h 2 v -4 z m -14 1 v 3 h 2 v -3 z m 0 4 v 3 h 3 v -3 z m 13 0 v 1.0625 l 1.9375 1.9375 h 1.0625 v -3 z m -9 1 v 2 h 4 v -2 z m 5 0 v 2 h 3 v -0.8125 l -1.1875 -1.1875 z m 0 0" fill="#2e3436" fill-opacity="0.34902"/><path d="m 1.53125 0.46875 l -1.0625 1.0625 l 14 14 l 1.0625 -1.0625 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 639 B |
|
@ -52,6 +52,25 @@ class TestTracklist(tests.util.TestCase):
|
|||
self.assertEqual(self.tracklist._top_left.get_first_child(),
|
||||
self.tracklist._visible_cols)
|
||||
|
||||
def test_unselect(self):
|
||||
"""Test the unselect button."""
|
||||
self.assertIsInstance(self.tracklist._unselect, Gtk.Button)
|
||||
self.assertEqual(self.tracklist._unselect.get_icon_name(),
|
||||
"edit-select-none-symbolic")
|
||||
self.assertFalse(self.tracklist._unselect.get_has_frame())
|
||||
|
||||
self.assertFalse(self.tracklist._unselect.get_sensitive())
|
||||
self.tracklist._trackview.have_selected = True
|
||||
self.assertTrue(self.tracklist._unselect.get_sensitive())
|
||||
|
||||
with unittest.mock.patch.object(self.tracklist._trackview,
|
||||
"clear_selected_tracks") as mock_clear:
|
||||
self.tracklist._unselect.emit("clicked")
|
||||
mock_clear.assert_called()
|
||||
|
||||
self.assertEqual(self.tracklist._visible_cols.get_next_sibling(),
|
||||
self.tracklist._unselect)
|
||||
|
||||
def test_filter(self):
|
||||
"""Test the Tracklist Filter entry."""
|
||||
self.assertIsInstance(self.tracklist._filter, emmental.entry.Filter)
|
||||
|
|
Loading…
Reference in New Issue