sidebar: Give the AddPlaylistButton an "add-to-playlist" signal

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-12-05 12:05:33 -05:00
parent 981e98818d
commit 44f778bdb7
2 changed files with 32 additions and 3 deletions

View File

@ -53,6 +53,9 @@ class TestProgressBar(unittest.TestCase):
class TestAddPlaylistEntry(unittest.TestCase):
def activated_playlist(self, entry, playlist):
self.playlist = playlist
def test_init(self):
entry = widgets.AddPlaylistEntry()
self.assertIsInstance(entry, Gtk.Entry)
@ -71,11 +74,15 @@ class TestAddPlaylistEntry(unittest.TestCase):
def test_activate(self):
entry = widgets.AddPlaylistEntry()
self.assertIsNone(db.user.Table.lookup("Test Playlist"))
entry.connect("activated-playlist", self.activated_playlist)
entry.set_text("Test Playlist")
self.assertIsNone(db.user.Table.lookup("Test Playlist"))
entry.icon_released(entry, Gtk.EntryIconPosition.PRIMARY)
self.assertEqual(entry.get_text(), "")
self.assertIsNotNone(db.user.Table.lookup("Test Playlist"))
self.assertEqual(self.playlist, db.user.Table.lookup("Test Playlist"))
self.assertIsNotNone(self.playlist)
entry.icon_released(entry, Gtk.EntryIconPosition.PRIMARY)
self.assertIsNone(db.user.Table.lookup(""))
@ -97,8 +104,11 @@ class TestAddPlaylistPopover(unittest.TestCase):
popover = widgets.AddPlaylistPopover()
child = popover.box.get_first_child()
self.assertIsInstance(child, view.UserView)
self.assertEqual(child, popover.get_view())
child = child.get_next_sibling()
self.assertIsInstance(child, widgets.AddPlaylistEntry)
self.assertEqual(child, popover.get_entry())
class TestAddPlaylistButton(unittest.TestCase):

View File

@ -2,6 +2,7 @@
import db
import scanner
from gi.repository import Gtk
from gi.repository import GObject
from . import view
class LibraryButtons(Gtk.Box):
@ -44,7 +45,7 @@ class AddPlaylistEntry(Gtk.Entry):
def do_activate(self):
if self.get_text() != "":
db.user.Table.find(self.get_text())
self.emit("activated-playlist", db.user.Table.find(self.get_text()))
scanner.commit()
self.set_text("")
@ -52,6 +53,9 @@ class AddPlaylistEntry(Gtk.Entry):
icon = None if self.get_text() == "" else "edit-clear-symbolic"
self.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, icon)
@GObject.Signal(arg_types=(db.playlist.Playlist,))
def activated_playlist(self, playlist): pass
class AddPlaylistPopover(Gtk.Popover):
def __init__(self):
@ -63,6 +67,9 @@ class AddPlaylistPopover(Gtk.Popover):
self.box.set_focus_child(self.box.get_last_child())
self.set_child(self.box)
def get_view(self): return self.box.get_first_child()
def get_entry(self): return self.box.get_last_child()
class AddPlaylistButton(Gtk.MenuButton):
def __init__(self):
@ -71,6 +78,18 @@ class AddPlaylistButton(Gtk.MenuButton):
self.set_direction(Gtk.ArrowType.UP)
self.set_popover(AddPlaylistPopover())
self.get_popover().get_view().connect("activate", self.view_activate)
self.get_popover().get_entry().connect("activated-playlist", self.entry_activate)
def entry_activate(self, entry, playlist):
self.emit("add-to-playlist", playlist)
def view_activate(self, view, position):
self.emit("add-to-playlist", view.get_model().get_item(position))
@GObject.Signal(arg_types=(db.playlist.Playlist,))
def add_to_playlist(self, playlist): pass
class AddUpdateBox(Gtk.Box):
def __init__(self):