<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="429"/>
<integer value="29"/>
<integer value="372"/>
</object>
<object class="NSWindowTemplate" id="92204650">
<int key="NSWindowStyleMask">7</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 436}, {204, 74}}</string>
+ <string key="NSWindowRect">{{196, 436}, {342, 74}}</string>
<int key="NSWTFlags">603979776</int>
<string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<object class="NSView" key="NSWindowView" id="851027294">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="NSNextResponder" ref="851027294"/>
<int key="NSvFlags">1292</int>
<object class="NSPSMatrix" key="NSDrawMatrix"/>
- <string key="NSFrame">{{18, 16}, {168, 20}}</string>
+ <string key="NSFrame">{{18, 16}, {306, 20}}</string>
<reference key="NSSuperview" ref="851027294"/>
<int key="NSpiFlags">16394</int>
<double key="NSMinValue">2.000000e+01</double>
<double key="NSMaxValue">1.000000e+02</double>
</object>
- <object class="NSTextField" id="98522848">
+ <object class="NSTextField" id="142560492">
<reference key="NSNextResponder" ref="851027294"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 44}, {111, 17}}</string>
+ <string key="NSFrame">{{17, 44}, {308, 17}}</string>
<reference key="NSSuperview" ref="851027294"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="28320021">
+ <object class="NSTextFieldCell" key="NSCell" id="1010085952">
<int key="NSCellFlags">67239488</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Loading library...</string>
+ <int key="NSCellFlags2">272631296</int>
+ <string key="NSContents">Please wait...</string>
<reference key="NSSupport" ref="822023840"/>
- <reference key="NSControlView" ref="98522848"/>
+ <reference key="NSControlView" ref="142560492"/>
<reference key="NSBackgroundColor" ref="439689891"/>
<reference key="NSTextColor" ref="888276067"/>
</object>
</object>
</object>
- <string key="NSFrameSize">{204, 74}</string>
+ <string key="NSFrameSize">{342, 74}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1024, 746}}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
<object class="NSCustomObject" id="377758519">
<string key="NSClassName">FolderModel</string>
</object>
- <object class="NSWindowTemplate" id="359640654">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 429}, {279, 81}}</string>
- <int key="NSWTFlags">603979776</int>
- <string key="NSWindowTitle">Synchronising</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <object class="NSView" key="NSWindowView" id="63479689">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="390857350">
- <reference key="NSNextResponder" ref="63479689"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 44}, {245, 17}}</string>
- <reference key="NSSuperview" ref="63479689"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="811372136">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Synchronising.. This may take a while.</string>
- <reference key="NSSupport" ref="822023840"/>
- <reference key="NSControlView" ref="390857350"/>
- <reference key="NSBackgroundColor" ref="439689891"/>
- <reference key="NSTextColor" ref="888276067"/>
- </object>
- </object>
- <object class="NSProgressIndicator" id="626714939">
- <reference key="NSNextResponder" ref="63479689"/>
- <int key="NSvFlags">1292</int>
- <object class="NSPSMatrix" key="NSDrawMatrix"/>
- <string key="NSFrame">{{18, 16}, {243, 20}}</string>
- <reference key="NSSuperview" ref="63479689"/>
- <int key="NSpiFlags">16394</int>
- <double key="NSMinValue">2.000000e+01</double>
- <double key="NSMaxValue">1.000000e+02</double>
- </object>
- </object>
- <string key="NSFrameSize">{279, 81}</string>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">synchronizingSheet</string>
+ <string key="label">loadingLabel</string>
<reference key="source" ref="719278169"/>
- <reference key="destination" ref="359640654"/>
+ <reference key="destination" ref="142560492"/>
</object>
- <int key="connectionID">508</int>
+ <int key="connectionID">511</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="327138569"/>
- <reference ref="98522848"/>
+ <reference ref="142560492"/>
</object>
<reference key="parent" ref="92204650"/>
</object>
<reference key="object" ref="327138569"/>
<reference key="parent" ref="851027294"/>
</object>
- <object class="IBObjectRecord">
- <int key="objectID">431</int>
- <reference key="object" ref="98522848"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="28320021"/>
- </object>
- <reference key="parent" ref="851027294"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">432</int>
- <reference key="object" ref="28320021"/>
- <reference key="parent" ref="98522848"/>
- </object>
<object class="IBObjectRecord">
<int key="objectID">436</int>
<reference key="object" ref="122068822"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">503</int>
- <reference key="object" ref="359640654"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="63479689"/>
- </object>
- <reference key="parent" ref="0"/>
- <string key="objectName">SynchronizingSheet</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">504</int>
- <reference key="object" ref="63479689"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="390857350"/>
- <reference ref="626714939"/>
- </object>
- <reference key="parent" ref="359640654"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">505</int>
- <reference key="object" ref="390857350"/>
+ <int key="objectID">509</int>
+ <reference key="object" ref="142560492"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="811372136"/>
+ <reference ref="1010085952"/>
</object>
- <reference key="parent" ref="63479689"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">506</int>
- <reference key="object" ref="811372136"/>
- <reference key="parent" ref="390857350"/>
+ <reference key="parent" ref="851027294"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">507</int>
- <reference key="object" ref="626714939"/>
- <reference key="parent" ref="63479689"/>
+ <int key="objectID">510</int>
+ <reference key="object" ref="1010085952"/>
+ <reference key="parent" ref="142560492"/>
</object>
</object>
</object>
<string>428.editorWindowContentRectSynchronizationRect</string>
<string>429.IBPluginDependency</string>
<string>430.IBPluginDependency</string>
- <string>431.IBPluginDependency</string>
- <string>432.IBPluginDependency</string>
<string>436.IBPluginDependency</string>
<string>437.IBPluginDependency</string>
<string>438.IBPluginDependency</string>
<string>472.IBPluginDependency</string>
<string>477.IBPluginDependency</string>
<string>484.IBPluginDependency</string>
+ <string>485.IBPluginDependency</string>
+ <string>486.IBPluginDependency</string>
<string>490.IBPluginDependency</string>
- <string>503.IBEditorWindowLastContentRect</string>
- <string>503.IBPluginDependency</string>
- <string>503.IBWindowTemplateEditedContentRect</string>
- <string>503.NSWindowTemplate.visibleAtLaunch</string>
- <string>504.IBPluginDependency</string>
- <string>505.IBPluginDependency</string>
- <string>506.IBPluginDependency</string>
- <string>507.IBPluginDependency</string>
+ <string>509.IBPluginDependency</string>
+ <string>510.IBPluginDependency</string>
<string>56.IBPluginDependency</string>
<string>56.ImportedFromIB2</string>
<string>57.IBPluginDependency</string>
<string>{{89, 581}, {211, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{21, 626}, {204, 74}}</string>
- <string>{{21, 626}, {204, 74}}</string>
+ <string>{{82, 574}, {342, 74}}</string>
+ <string>{{82, 574}, {342, 74}}</string>
<integer value="0"/>
<string>{{196, 436}, {204, 74}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{42, 607}, {279, 81}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{42, 607}, {279, 81}}</string>
- <boolean value="NO"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">508</int>
+ <int key="maxID">511</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>folderModel</string>
+ <string>loadingLabel</string>
<string>loadingSheet</string>
<string>playlistModel</string>
- <string>synchronizingSheet</string>
<string>window</string>
</object>
<object class="NSMutableArray" key="dict.values">
playlistModel = objc.IBOutlet()
folderModel = objc.IBOutlet()
loadingSheet = objc.IBOutlet()
- synchronizingSheet = objc.IBOutlet()
+ loadingLabel = objc.IBOutlet()
+ def awakeFromNib(self):
+ self.gen = None
# Delegate methods
def applicationWillFinishLaunching_(self, _):
pass
def applicationDidFinishLaunching_(self, _):
- NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.loadingSheet, self.window, None, None, None)
self.library = libsyncitunes.ITunesLibrary.alloc().init()
- self.playlistModel.setPlaylists(self.library.get_playlists())
- NSApp.endSheet_(self.loadingSheet)
- self.loadingSheet.orderOut_(self)
+ def finish():
+ self.playlistModel.setPlaylists(self.library.get_playlists())
+ self.runGenerator(lambda: self.library.load_(None), finish)
def applicationWillTerminate_(self, _):
self.prefs().synchronize()
def applicationShouldTerminateAfterLastWindowClosed_(self, _):
return True
+
+ # Utility methods
+ def runGenerator(self, func, finish):
+ NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.loadingSheet, self.window, None, None, None)
+ self.gen = func()
+ self.finish = finish
+ self.runGeneratorNext()
+
+ def runGeneratorNext(self):
+ try:
+ msg = self.gen.next()
+ self.loadingLabel.setStringValue_(msg)
+ self.performSelector_withObject_afterDelay_(
+ self.runGeneratorNext, None, 0)
+ except StopIteration:
+ self.gen = None
+ NSApp.endSheet_(self.loadingSheet)
+ self.loadingSheet.orderOut_(self)
+ self.finish()
+ self.finish = None
+
@objc.IBAction
def doSync_(self, sender):
- NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.synchronizingSheet, self.window, None, None, None)
-
folder = self.folders()[0]
playlists = [self.library.get_playlist_pid(pid) for pid in self.playlists()]
libsyncitunes.export_m3u(dry_run=False, dest=folder, path_prefix="",
playlist_name=playlist.name, files=playlist.tracks)
- libsyncitunes.sync(dry_run=False,
- source=self.library.folder, dest=folder, files=all_tracks)
-
- NSApp.endSheet_(self.synchronizingSheet)
- self.synchronizingSheet.orderOut_(self)
-
- NSRunAlertPanel("Complete!", "Synchronisation is complete", "Ok", None, None)
+ def finish():
+ NSRunAlertPanel("Complete!", "Synchronisation is complete", "Ok", None, None)
+ self.runGenerator(
+ lambda:
+ libsyncitunes.sync(
+ dry_run=False,
+ source=self.library.folder,
+ dest=folder,
+ files=all_tracks
+ )
+ ,
+ finish
+ )
# Public accessors