playlist: Add a button for scrolling to the current track

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-31 13:12:43 -04:00
parent 1d45ce9beb
commit d3c66d7c31
3 changed files with 16 additions and 0 deletions

View File

@ -55,10 +55,15 @@ def scroll_to_track(track):
adj.set_value(pos * adj.get_upper())
return
def scroll_to_current(*args):
scroll_to_track(audio.Player.track)
Model.Controls.jump.connect("clicked", scroll_to_current)
def on_tracks_changed(prev, new):
scroll_to_track(new)
audio.Player.TrackChanged.register(on_tracks_changed)
Box = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0)
Box.append(Model.Controls)
Box.append(Scroll)

View File

@ -28,6 +28,10 @@ class Controls(Gtk.Box):
self.loop.set_sensitive(False)
self.append(self.loop)
self.jump = Gtk.Button.new_from_icon_name("go-jump")
self.jump.set_sensitive(False)
self.append(self.jump)
self.add_popover = popover.AddPopover()
self.add = Gtk.MenuButton()
@ -41,6 +45,7 @@ class Controls(Gtk.Box):
def set_tag(self, tag):
self.tag = tag
self.add.set_sensitive(tag is not None)
self.jump.set_sensitive(tag is not None)
self.random.set_sensitive(tag.can_random())
self.random.set_active(tag.random)

View File

@ -14,12 +14,14 @@ class TestPlaylistControls(unittest.TestCase):
self.assertIsInstance(ctrl.search, Gtk.SearchEntry)
self.assertIsInstance(ctrl.random, Gtk.ToggleButton)
self.assertIsInstance(ctrl.loop, Gtk.ToggleButton)
self.assertIsInstance(ctrl.jump, Gtk.Button)
self.assertIsInstance(ctrl.add_popover, popover.AddPopover)
self.assertIsInstance(ctrl.add, Gtk.MenuButton)
self.assertIsInstance(ctrl.filter, filter.Filter)
self.assertEqual(ctrl.random.get_icon_name(), "media-playlist-shuffle")
self.assertEqual(ctrl.loop.get_icon_name(), "media-playlist-repeat")
self.assertEqual(ctrl.jump.get_icon_name(), "go-jump")
self.assertEqual(ctrl.add.get_icon_name(), "list-add")
self.assertEqual(ctrl.add.get_popover(), ctrl.add_popover)
self.assertEqual(ctrl.search.get_property("placeholder-text"),
@ -31,6 +33,7 @@ class TestPlaylistControls(unittest.TestCase):
self.assertIn(ctrl.search, ctrl)
self.assertIn(ctrl.random, ctrl)
self.assertIn(ctrl.loop, ctrl)
self.assertIn(ctrl.jump, ctrl)
self.assertIn(ctrl.add, ctrl)
def test_playlist_controls_set_tag(self):
@ -43,6 +46,7 @@ class TestPlaylistControls(unittest.TestCase):
self.assertFalse(ctrl.random.get_active())
self.assertFalse(ctrl.loop.get_sensitive())
self.assertFalse(ctrl.loop.get_active())
self.assertFalse(ctrl.jump.get_sensitive())
self.assertFalse(ctrl.add.get_sensitive())
fav.random = True
@ -53,6 +57,7 @@ class TestPlaylistControls(unittest.TestCase):
self.assertTrue(ctrl.random.get_active())
self.assertTrue(ctrl.loop.get_sensitive())
self.assertTrue(ctrl.loop.get_active())
self.assertTrue(ctrl.jump.get_sensitive())
self.assertTrue(ctrl.add.get_sensitive())
ctrl.set_tag(prev)
@ -61,4 +66,5 @@ class TestPlaylistControls(unittest.TestCase):
self.assertFalse(ctrl.random.get_active())
self.assertFalse(ctrl.loop.get_sensitive())
self.assertFalse(ctrl.loop.get_active())
self.assertTrue(ctrl.jump.get_sensitive())
self.assertTrue(ctrl.add.get_sensitive())