sidebar: Give the AddPlaylistButton an "add-to-playlist" signal
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
981e98818d
commit
44f778bdb7
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue