playlist: Add a "Add to Playlist" button to the Controls

And display the new popover when pressed

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-07-12 16:11:02 -04:00
parent 7b53536b27
commit f91334dab1
2 changed files with 19 additions and 0 deletions

View File

@ -1,5 +1,6 @@
# Copyright 2021 (c) Anna Schumaker.
from . import filter
from . import popover
from gi.repository import Gtk
import trackdb
@ -27,10 +28,19 @@ class Controls(Gtk.Box):
self.loop.set_sensitive(False)
self.append(self.loop)
self.add_popover = popover.AddPopover()
self.add = Gtk.MenuButton()
self.add.set_icon_name("list-add")
self.add.set_popover(self.add_popover)
self.add.set_sensitive(False)
self.append(self.add)
self.add_css_class("linked")
def set_tag(self, tag):
self.tag = tag
self.add.set_sensitive(tag is not None)
self.random.set_sensitive(tag.can_random())
self.random.set_active(tag.random)

View File

@ -1,6 +1,7 @@
# Copyright 2021 (c) Anna Schumaker.
from . import controls
from . import filter
from . import popover
from gi.repository import Gtk
import trackdb
import unittest
@ -13,10 +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.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.add.get_icon_name(), "list-add")
self.assertEqual(ctrl.add.get_popover(), ctrl.add_popover)
self.assertEqual(ctrl.search.get_property("placeholder-text"),
"Type to filter tracks")
@ -26,6 +31,7 @@ class TestPlaylistControls(unittest.TestCase):
self.assertIn(ctrl.search, ctrl)
self.assertIn(ctrl.random, ctrl)
self.assertIn(ctrl.loop, ctrl)
self.assertIn(ctrl.add, ctrl)
def test_playlist_controls_set_tag(self):
ctrl = controls.Controls()
@ -37,6 +43,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.add.get_sensitive())
fav.random = True
fav.loop = True
@ -46,6 +53,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.add.get_sensitive())
ctrl.set_tag(prev)
self.assertEqual(ctrl.tag, prev)
@ -53,3 +61,4 @@ 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.add.get_sensitive())