[gnome-music] disable deletion of smart playlists



commit 910eaad32831fd8c6f20c654f696b0ee408d1792
Author: Maia <maia mcc gmail com>
Date:   Fri Feb 20 13:43:34 2015 -0500

    disable deletion of smart playlists
    
    (revised -- disables delete button rather than popping up a "can't delete this playlist" notification")
    
    https://bugzilla.gnome.org/show_bug.cgi?id=743884

 gnomemusic/playlists.py |    5 +++++
 gnomemusic/view.py      |   20 +++++++++++++++++---
 gnomemusic/window.py    |    3 +--
 3 files changed, 23 insertions(+), 5 deletions(-)
---
diff --git a/gnomemusic/playlists.py b/gnomemusic/playlists.py
index 2b3e030..d9143d8 100644
--- a/gnomemusic/playlists.py
+++ b/gnomemusic/playlists.py
@@ -76,6 +76,11 @@ class StaticPlaylists:
         # TRANSLATORS: this is a playlist name
         TITLE = _("Favorite Songs")
 
+    @classmethod
+    def get_protected_ids(self):
+        return [str(cls.ID) for name, cls in inspect.getmembers(StaticPlaylists)
+                     if inspect.isclass(cls) and not (name == "__class__")]
+
 
 class Playlists(GObject.GObject):
     __gsignals__ = {
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index 1a3570c..a630fbf 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -782,9 +782,9 @@ class Playlist(ViewContainer):
         playlistPlayAction = Gio.SimpleAction.new('playlist_play', None)
         playlistPlayAction.connect('activate', self._on_play_activate)
         window.add_action(playlistPlayAction)
-        playlistDeleteAction = Gio.SimpleAction.new('playlist_delete', None)
-        playlistDeleteAction.connect('activate', self._on_delete_activate)
-        window.add_action(playlistDeleteAction)
+        self.playlistDeleteAction = Gio.SimpleAction.new('playlist_delete', None)
+        self.playlistDeleteAction.connect('activate', self._on_delete_activate)
+        window.add_action(self.playlistDeleteAction)
         self._grid.insert_row(0)
         self._grid.attach(self.headerbar, 1, 0, 1, 1)
 
@@ -1111,6 +1111,12 @@ class Playlist(ViewContainer):
             self.songs_count = 0
             self._update_songs_count()
 
+        # disable delete button if current playlist is a smart playlist
+        if self.current_playlist_is_protected():
+            self.playlistDeleteAction.set_enabled(False)
+        else:
+            self.playlistDeleteAction.set_enabled(True)
+
     @log
     def _add_item(self, source, param, item, remaining=0, data=None):
         self._add_item_to_model(item, self.model)
@@ -1164,6 +1170,14 @@ class Playlist(ViewContainer):
             return False
 
     @log
+    def current_playlist_is_protected(self):
+        current_playlist_id = self.current_playlist.get_id()
+        if current_playlist_id in StaticPlaylists.get_protected_ids():
+            return True
+        else:
+            return False
+
+    @log
     def stage_playlist_for_deletion(self):
         self.model.clear()
         _iter = self.playlists_sidebar.get_generic_view().get_selection().get_selected()[1]
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 8935357..7ca1570 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -373,8 +373,7 @@ class Window(Gtk.ApplicationWindow):
         else:
             if (event.keyval == Gdk.KEY_Delete):
                 if self._stack.get_visible_child() == self.views[3]:
-                    self._init_playlist_removal_notification()
-                    self.views[3].stage_playlist_for_deletion()
+                    self.views[3]._on_delete_activate(None)
             # Close search bar after Esc is pressed
             if event.keyval == Gdk.KEY_Escape:
                 self.toolbar.searchbar.show_bar(False)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]