X-Git-Url: https://code.delx.au/notipod/blobdiff_plain/29b2c46f6b47c8f3a39157ccad85e74a381bf77f..4df5b7a6f44e423bb38036187b7a1102865d1942:/notipod_gui.py diff --git a/notipod_gui.py b/notipod_gui.py index f4c6dde..4c175a9 100644 --- a/notipod_gui.py +++ b/notipod_gui.py @@ -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]