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()
NSApp.delegate().addFolder_(folder)
self.folderPopup.insertItemWithTitle_atIndex_(folder, 2)
self.folderPopup.selectItemAtIndex_(2)
+ else:
+ self.folderPopup.selectItemAtIndex_(self.lastIndex)
class NotiPodAppDelegate(NSObject):
playlistModel = objc.IBOutlet()
folderModel = objc.IBOutlet()
loadingSheet = objc.IBOutlet()
+ synchronizingSheet = objc.IBOutlet()
# Delegate methods
@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
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__":