]> code.delx.au - notipod/blobdiff - notipod_gui.py
Don't sync to folders that don't exist
[notipod] / notipod_gui.py
index f4c6dde72d74e0a651019f6f916fc13538f876db..4c175a909f2cfd94625c9d334cf30e2f54c9cb74 100644 (file)
@@ -112,12 +112,18 @@ class FolderModel(NSObject):
 
 class NotiPodController(NSObject):
        window = objc.IBOutlet()
-       playlistModel = objc.IBOutlet()
-       folderModel = objc.IBOutlet()
+
        loadingSheet = objc.IBOutlet()
        loadingLabel = objc.IBOutlet()
        loadingIndicator = objc.IBOutlet()
 
+       previewWindow = objc.IBOutlet()
+       previewText = objc.IBOutlet()
+
+       playlistModel = objc.IBOutlet()
+       folderModel = objc.IBOutlet()
+
+
        def awakeFromNib(self):
                self.runningGenerator = False
 
@@ -170,6 +176,36 @@ class NotiPodController(NSObject):
        def doCancel_(self, sender):
                self.runningGenerator = False
 
+       def doPreviewThread(self):
+               yield "Calculating changes..."
+
+               folder = self.folders()[0]
+               playlists = [self.library.get_playlist_pid(pid) for pid in self.playlists()]
+
+               all_tracks = []
+               for playlist in playlists:
+                       all_tracks.extend(playlist.tracks)
+
+               gen = libnotipod.sync(
+                       dry_run=True,
+                       source=self.library.folder,
+                       dest=folder, 
+                       files_to_copy=all_tracks
+               )
+               self.previewResult = "\n".join(gen)
+
+       @objc.IBAction
+       def doPreview_(self, sender):
+               self.previewResult = ""
+               self.previewWindow.orderOut_(self)
+
+               def finish():
+                       self.previewText.textStorage().mutableString().setString_(self.previewResult)
+                       self.previewWindow.center()
+                       self.previewWindow.makeKeyAndOrderFront_(self)
+
+               self.runGenerator(self.doPreviewThread, finish)
+
        @objc.IBAction
        def doSync_(self, sender):
                folder = self.folders()[0]