]> code.delx.au - notipod/blobdiff - NotiPod.py
It works! :)
[notipod] / NotiPod.py
index 610d4059353bc5aacd044bd70b4e0f197fe9baa3..df65459724b4f0a44deaeb8253bd1338498efd8a 100644 (file)
@@ -71,10 +71,13 @@ class FolderModel(NSObject):
        def awakeFromNib(self):
                self.folderPopup.addItemsWithTitles_(NSApp.delegate().folders())
                self.folderPopup.selectItemAtIndex_(2)
+               self.lastIndex = 2
 
        @objc.IBAction
        def doSelectFolder_(self, sender):
-               if self.folderPopup.indexOfSelectedItem() >= 2:
+               currentIndex = self.folderPopup.indexOfSelectedItem()
+               if currentIndex >= 2:
+                       self.lastIndex = currentIndex
                        NSApp.delegate().addFolder_(self.folderPopup.titleOfSelectedItem())
                        return
                panel = NSOpenPanel.openPanel()
@@ -92,6 +95,8 @@ class FolderModel(NSObject):
                        NSApp.delegate().addFolder_(folder)
                        self.folderPopup.insertItemWithTitle_atIndex_(folder, 2)
                        self.folderPopup.selectItemAtIndex_(2)
+               else:
+                       self.folderPopup.selectItemAtIndex_(self.lastIndex)
 
 
 class NotiPodAppDelegate(NSObject):
@@ -99,6 +104,7 @@ class NotiPodAppDelegate(NSObject):
        playlistModel = objc.IBOutlet()
        folderModel = objc.IBOutlet()
        loadingSheet = objc.IBOutlet()
+       synchronizingSheet = objc.IBOutlet()
 
 
        # Delegate methods
@@ -129,19 +135,31 @@ class NotiPodAppDelegate(NSObject):
 
        @objc.IBAction
        def doSync_(self, sender):
+               NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.synchronizingSheet, self.window, None, None, None)
+               self.performSelectorInBackground_withObject_(self.syncFromThread, None)
+
+       def syncFromThread(self):
+               pool = NSAutoreleasePool.alloc().init()
+
                folder = self.folders()[0]
                playlists = [self.library.get_playlist_pid(pid) for pid in self.playlists()]
 
                all_tracks = []
                for playlist in playlists:
-                       print playlist.name, playlist.tracks
                        all_tracks.extend(playlist.tracks)
-                       libsyncitunes.export_m3u(dry_run=True, dest=folder, path_prefix="",
+                       libsyncitunes.export_m3u(dry_run=False, dest=folder, path_prefix="",
                                        playlist_name=playlist.name, files=playlist.tracks)
 
-               libsyncitunes.sync(dry_run=True,
+               libsyncitunes.sync(dry_run=False,
                        source=self.library.folder, dest=folder, files=all_tracks)
 
+               self.performSelectorOnMainThread_withObject_waitUntilDone_(self.finishSync, None, True)
+               del pool
+
+       def finishSync(self):
+               NSApp.endSheet_(self.synchronizingSheet)
+               self.synchronizingSheet.close()
+
 
        # Public accessors
 
@@ -180,8 +198,8 @@ class NotiPodAppDelegate(NSObject):
 
 
 def main():
-       logging.basicConfig(format="%(levelname)s: %(message)s")
-       logging.getLogger().setLevel(logging.DEBUG)
+###    logging.basicConfig(format="%(levelname)s: %(message)s")
+###    logging.getLogger().setLevel(logging.DEBUG)
        AppHelper.runEventLoop()
 
 if __name__ == "__main__":