]> code.delx.au - notipod/blobdiff - notipod_gui.py
Version 1.7
[notipod] / notipod_gui.py
index 5a0d3290de5eab19fea3038f1298d9fa5038aac2..85d2f159400e57eafca02dee407ac9308de92bb7 100644 (file)
@@ -4,6 +4,8 @@
 
 import logging
 import os
+import sys
+import traceback
 
 import objc
 from Foundation import *
@@ -167,6 +169,7 @@ class NotiPodController(NSObject):
                                        self.loadingLabel.setStringValue_, msg, True)
                except Exception, e:
                        NSRunAlertPanel("Error!", str(e), "Ok", None, None)
+                       traceback.print_exc()
                        finish = fail
                self.performSelectorOnMainThread_withObject_waitUntilDone_(
                        self.stopGenerator, finish, True)
@@ -188,11 +191,15 @@ class NotiPodController(NSObject):
                yield "Calculating changes..."
 
                folder = self.folders()[0]
-               playlists = [self.library.get_playlist_pid(pid) for pid in self.playlists()]
+               if not os.path.isdir(folder.encode("utf-8")):
+                       NSRunAlertPanel("Error!", "Destination " + folder + " does not exist, try mounting it first?", "Ok", None, None)
+                       return
 
                all_tracks = []
-               for playlist in playlists:
-                       all_tracks.extend(playlist.tracks)
+               for playlist_id in self.playlists():
+                       playlist = self.library.get_playlist_pid(playlist_id)
+                       if playlist is not None:
+                               all_tracks.extend(playlist.tracks)
 
                gen = libnotipod.sync(
                        dry_run=True,
@@ -217,14 +224,17 @@ class NotiPodController(NSObject):
        @objc.IBAction
        def doSync_(self, sender):
                folder = self.folders()[0]
-               playlists = [self.library.get_playlist_pid(pid) for pid in self.playlists()]
-
                if not os.path.isdir(folder.encode("utf-8")):
                        NSRunAlertPanel("Error!", "Destination " + folder + " does not exist, try mounting it first?", "Ok", None, None)
                        return
 
                all_tracks = []
-               for playlist in playlists:
+               for playlist_id in self.playlists():
+                       playlist = self.library.get_playlist_pid(playlist_id)
+                       if playlist is None:
+                               print "Forgetting unknown playlist:", playlist_id
+                               self.setPlaylist_selected_(playlist_id, False)
+                               continue
                        all_tracks.extend(playlist.tracks)
                        libnotipod.export_m3u(dry_run=False, dest=folder, path_prefix="",
                                        playlist_name=playlist.name, files=playlist.tracks)