From 2f1b7b397f968b411368151fef85e8eb28416e67 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 5 Dec 2021 12:05:33 -0500 Subject: [PATCH] sidebar: Add selected tracks to the selected playlist Signed-off-by: Anna Schumaker --- sidebar/__init__.py | 10 +++++++++- sidebar/stack.py | 7 +++++++ sidebar/test_stack.py | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/sidebar/__init__.py b/sidebar/__init__.py index 65876d5..72b7d67 100644 --- a/sidebar/__init__.py +++ b/sidebar/__init__.py @@ -1,4 +1,5 @@ # Copyright 2021 (c) Anna Schumaker. +import db from gi.repository import Gtk from . import stack @@ -7,13 +8,20 @@ class Sidebar(Gtk.Box): Gtk.Box.__init__(self) self.panel = panel switcher = stack.Switcher() + box = stack.Box(switcher.get_stack()) self.append(switcher) - self.append(stack.Box(switcher.get_stack())) + self.append(box) stak = switcher.get_stack() stak.connect("playlist-changed", self.playlist_changed) panel.set_playlist(stak.get_visible_child().get_selected_playlist()) + box.get_add_update_button().connect("add-to-playlist", self.add_to_playlist) def playlist_changed(self, stack, plist): self.panel.set_playlist(plist) + + def add_to_playlist(self, button, playlist): + if playlist.can_add_remove_tracks(): + for track in self.panel.selected_tracks(): + playlist.add_track(track) diff --git a/sidebar/stack.py b/sidebar/stack.py index 6825312..e99f826 100644 --- a/sidebar/stack.py +++ b/sidebar/stack.py @@ -63,3 +63,10 @@ class Box(Gtk.Box): self.append(widgets.AddUpdateBox()) self.append(Gtk.Separator.new(Gtk.Orientation.HORIZONTAL)) self.append(widgets.ProgressBar()) + + def get_add_update_button(self): + child = self.get_first_child() + while child: + if isinstance(child, widgets.AddUpdateBox): + return child.get_first_child() + child = child.get_next_sibling() diff --git a/sidebar/test_stack.py b/sidebar/test_stack.py index e1a789d..868d584 100644 --- a/sidebar/test_stack.py +++ b/sidebar/test_stack.py @@ -116,6 +116,7 @@ class TestBox(unittest.TestCase): child = child.get_next_sibling() self.assertIsInstance(child, widgets.AddUpdateBox) + self.assertEqual(box.get_add_update_button(), child.get_first_child()) child = child.get_next_sibling() self.assertIsInstance(child, Gtk.Separator)