diff --git a/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.h b/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.h index 3a866444471fb934eec4ec7522c76b61bdd7ec34..7c8676d3e14df066c648f2bd8547db42eaebfb04 100644 --- a/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.h +++ b/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.h @@ -13,13 +13,16 @@ NSWindow *window; IBOutlet NSWindow *prefsWindow; + NSTimer *statusTimer; + NSImage *menuIcon; IBOutlet NSMenu *statusMenu; IBOutlet NSMenuItem *statusMenuItem; - NSTimer *statusTimer; - + IBOutlet NSTextField *bwLimitField; + IBOutlet NSNumberFormatter *bwLimitFormatter; IBOutlet NSTextField *musicFolderField; IBOutlet NSTextField *apiKeyField; + IBOutlet NSMenu *uploadBwMenu; NSStatusItem *statusItem; diff --git a/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.m b/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.m index 2c8fe22306b86a30020dbbe0a8e2610de665dc2e..0b20686ee7eeb2f8eb6e61bcc8dc27bff2d316dc 100644 --- a/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.m +++ b/client/osx-ui/DJRandomUploader/DJRandomUploaderAppDelegate.m @@ -40,14 +40,21 @@ NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"~/Music", @"musicFolder", @"", @"apiKey", + [NSNumber numberWithInt:0], @"bwLimit", nil]; [preferences registerDefaults:dict]; + // Set the saved preferences as the UI defaults. + NSString *savedMusicFolder = [preferences objectForKey:@"musicFolder"]; + NSString *savedApiKey = [preferences objectForKey:@"apiKey"]; + NSNumber *savedBwLimit = [preferences objectForKey:@"bwLimit"]; + [musicFolderField setStringValue:savedMusicFolder]; + [apiKeyField setStringValue:savedApiKey]; + [bwLimitField setStringValue:[bwLimitFormatter stringFromNumber:savedBwLimit]]; + // Start background daemon. daemon = [[ProcessController alloc] init]; - [daemon start:[preferences objectForKey:@"musicFolder"] - apiKey:[preferences objectForKey:@"apiKey"]]; - + [daemon start:savedMusicFolder apiKey:savedApiKey bwLimit:savedBwLimit]; // Start a timer that will read state and update the tooltip. statusTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 @@ -70,12 +77,12 @@ if ([daemon isRunning]) { NSDictionary *state = [daemon readState]; if (state != nil) { - NSString *currentlyUploading = [state valueForKey:@"uploading"]; - if (currentlyUploading == nil) { + if ([state valueForKey:@"uploading"] == [NSNull null]) { message = @"Idle"; - } else if ([currentlyUploading length] > 0) { + } else { + NSString *currentlyUploadingStr = [state valueForKey:@"uploading"]; message = [NSString stringWithFormat:@"Uploading: %@", - [currentlyUploading lastPathComponent]]; + [currentlyUploadingStr lastPathComponent]]; } } else { message = @"Initializing..."; @@ -130,14 +137,16 @@ NSString *apiKey = [apiKeyField stringValue]; NSString *musicFolder = [musicFolderField stringValue]; - + NSNumber *bwLimit = [bwLimitFormatter numberFromString:[bwLimitField stringValue]]; + // Save preferences. [preferences setObject:musicFolder forKey:@"musicFolder"]; [preferences setObject:apiKey forKey:@"apiKey"]; + [preferences setObject:bwLimit forKey:@"bwLimit"]; [preferences synchronize]; // Restart daemon process with the new settings. - [daemon start:musicFolder apiKey:apiKey]; + [daemon start:musicFolder apiKey:apiKey bwLimit:bwLimit]; } @end diff --git a/client/osx-ui/DJRandomUploader/ProcessController.h b/client/osx-ui/DJRandomUploader/ProcessController.h index 76569de031ff7dbcc81d78fe8c22798042f1bcb8..1153ed90f5f23f1aeba373dadd86a6fd135503cf 100644 --- a/client/osx-ui/DJRandomUploader/ProcessController.h +++ b/client/osx-ui/DJRandomUploader/ProcessController.h @@ -11,13 +11,14 @@ @interface ProcessController : NSObject { @private NSTask *task; - + NSString *path; NSString *curMusicFolder; NSString *curApiKey; + NSNumber *curBwLimit; } - (BOOL)isRunning; -- (void)start:(NSString *)musicDir apiKey:(NSString *)apiKey; +- (void)start:(NSString *)musicDir apiKey:(NSString *)apiKey bwLimit:(NSNumber *)bwLimit; - (void)stop; - (NSDictionary*)readState; diff --git a/client/osx-ui/DJRandomUploader/ProcessController.m b/client/osx-ui/DJRandomUploader/ProcessController.m index 7191829144a97c6d7611e82573545d547a33fe43..cb3f78ad2ad98e36245f7e933e8b2934f4a28f59 100644 --- a/client/osx-ui/DJRandomUploader/ProcessController.m +++ b/client/osx-ui/DJRandomUploader/ProcessController.m @@ -18,11 +18,14 @@ // Initialization code here. curMusicFolder = @""; curApiKey = @""; + curBwLimit = [NSNumber numberWithInt:0]; task = [[NSTask alloc] init]; NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - NSString *path = [bundle pathForAuxiliaryExecutable:@"djrandom-client"]; + path = [bundle pathForAuxiliaryExecutable:@"djrandom-client"]; + if (path == nil) { + path = @"/usr/local/bin/djrandom-client"; + } NSLog(@"Executable location: %@", path); - [task setLaunchPath:path]; } return self; @@ -52,23 +55,29 @@ arrayWithObjects:@"--api_key", curApiKey, @"--music_dir", curMusicFolder, @"--debug", @"--foreground", nil]; + if ([curBwLimit intValue] > 0) { + args = [args arrayByAddingObjectsFromArray:[NSArray + arrayWithObjects:@"--bwlimit", + [curBwLimit stringValue], nil]]; + } NSLog(@"Starting subprocess with args: %@", args); - [task setArguments:args]; - [task launch]; + task = [NSTask launchedTaskWithLaunchPath:path arguments:args]; } } -- (void)start:(NSString *)musicDir apiKey:(NSString *)apiKey { +- (void)start:(NSString *)musicDir apiKey:(NSString *)apiKey bwLimit:(NSNumber *)bwLimit { if (![musicDir isEqualToString:curMusicFolder] || - ![apiKey isEqualToString:curApiKey]) { + ![apiKey isEqualToString:curApiKey] || + ![bwLimit isEqualToNumber:curBwLimit]) { curMusicFolder = musicDir; curApiKey = apiKey; + curBwLimit = [bwLimit copy]; [self reloadProcess]; } } - (BOOL)isRunning { - return [task isRunning]; + return (task != nil && [task isRunning]); } - (NSDictionary *)readState { diff --git a/client/osx-ui/DJRandomUploader/en.lproj/MainMenu.xib b/client/osx-ui/DJRandomUploader/en.lproj/MainMenu.xib index 9d65a77c32ffec05efdad69a8cc3cab770e71adb..31b0adad9315634fcf88a2b5f2666ad6b35c6162 100644 --- a/client/osx-ui/DJRandomUploader/en.lproj/MainMenu.xib +++ b/client/osx-ui/DJRandomUploader/en.lproj/MainMenu.xib @@ -3,15 +3,25 @@ <data> <int key="IBDocument.SystemTarget">1060</int> <string key="IBDocument.SystemVersion">10K549</string> - <string key="IBDocument.InterfaceBuilderVersion">844</string> + <string key="IBDocument.InterfaceBuilderVersion">1306</string> <string key="IBDocument.AppKitVersion">1038.36</string> <string key="IBDocument.HIToolboxVersion">461.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="NS.object.0">844</string> + <string key="NS.object.0">1306</string> </object> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <object class="NSArray" key="IBDocument.IntegratedClassDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSTextField</string> + <string>NSView</string> + <string>NSWindowTemplate</string> + <string>NSMenu</string> + <string>NSMenuItem</string> + <string>NSTextFieldCell</string> + <string>NSNumberFormatter</string> + <string>NSButtonCell</string> + <string>NSButton</string> + <string>NSCustomObject</string> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -1363,9 +1373,8 @@ <string key="NSWindowTitle">Preferences</string> <string key="NSWindowClass">NSWindow</string> <nil key="NSViewClass"/> - <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> <object class="NSView" key="NSWindowView" id="1044359901"> - <nil key="NSNextResponder"/> + <reference key="NSNextResponder"/> <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -1374,6 +1383,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{46, 126}, {88, 17}}</string> <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="856487261"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="888415337"> @@ -1411,6 +1421,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{139, 123}, {149, 22}}</string> <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="461774918"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="788252969"> @@ -1442,6 +1453,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{46, 96}, {88, 17}}</string> <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="176167148"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="705598222"> @@ -1459,7 +1471,8 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{139, 93}, {240, 22}}</string> <reference key="NSSuperview" ref="1044359901"/> - <reference key="NSNextKeyView" ref="714556157"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="239767912"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="1034376801"> <int key="NSCellFlags">-1804468671</int> @@ -1472,11 +1485,31 @@ <reference key="NSTextColor" ref="612193748"/> </object> </object> + <object class="NSTextField" id="239767912"> + <reference key="NSNextResponder" ref="1044359901"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{11, 66}, {123, 17}}</string> + <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="516165132"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="653555036"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">71304192</int> + <string key="NSContents">Upload BW:</string> + <reference key="NSSupport" ref="470143994"/> + <reference key="NSControlView" ref="239767912"/> + <reference key="NSBackgroundColor" ref="19200246"/> + <reference key="NSTextColor" ref="542058056"/> + </object> + </object> <object class="NSButton" id="714556157"> <reference key="NSNextResponder" ref="1044359901"/> <int key="NSvFlags">268</int> <string key="NSFrame">{{289, 12}, {96, 32}}</string> <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="11101756"> <int key="NSCellFlags">67239424</int> @@ -1497,6 +1530,7 @@ <int key="NSvFlags">268</int> <string key="NSFrame">{{289, 116}, {96, 32}}</string> <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="546672064"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="297032244"> @@ -1513,12 +1547,116 @@ <int key="NSPeriodicInterval">25</int> </object> </object> + <object class="NSTextField" id="619808493"> + <reference key="NSNextResponder" ref="1044359901"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{206, 66}, {137, 17}}</string> + <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="714556157"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="138752257"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">(KB/s, 0 is unlimited)</string> + <reference key="NSSupport" ref="470143994"/> + <reference key="NSControlView" ref="619808493"/> + <reference key="NSBackgroundColor" ref="19200246"/> + <reference key="NSTextColor" ref="542058056"/> + </object> + </object> + <object class="NSTextField" id="516165132"> + <reference key="NSNextResponder" ref="1044359901"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{139, 63}, {62, 22}}</string> + <reference key="NSSuperview" ref="1044359901"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="619808493"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1008438086"> + <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags2">272630784</int> + <real value="0.0" key="NSContents"/> + <reference key="NSSupport" ref="470143994"/> + <object class="NSNumberFormatter" key="NSFormatter" id="570203085"> + <object class="NSMutableDictionary" key="NS.attributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>allowsFloats</string> + <string>formatterBehavior</string> + <string>locale</string> + <string>negativeInfinitySymbol</string> + <string>nilSymbol</string> + <string>numberStyle</string> + <string>positiveInfinitySymbol</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <boolean value="YES"/> + <integer value="1040"/> + <object class="NSLocale"> + <string key="NS.identifier"/> + </object> + <string>-∞</string> + <string/> + <integer value="1"/> + <string>+∞</string> + </object> + </object> + <string key="NS.positiveformat">#,##0.###</string> + <string key="NS.negativeformat">#,##0.###</string> + <nil key="NS.positiveattrs"/> + <nil key="NS.negativeattrs"/> + <nil key="NS.zero"/> + <object class="NSAttributedString" key="NS.nil"> + <string key="NSString"/> + </object> + <object class="NSAttributedString" key="NS.nan"> + <string key="NSString">NaN</string> + <object class="NSDictionary" key="NSAttributes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <reference key="dict.values" ref="0"/> + </object> + </object> + <object class="NSDecimalNumberPlaceholder" key="NS.min" id="666115858"> + <int key="NS.exponent">0</int> + <int key="NS.length">0</int> + <bool key="NS.negative">YES</bool> + <bool key="NS.compact">NO</bool> + <int key="NS.mantissa.bo">1</int> + <bytes key="NS.mantissa">AAAAAAAAAAAAAAAAAAAAAA</bytes> + </object> + <reference key="NS.max" ref="666115858"/> + <object class="NSDecimalNumberHandler" key="NS.rounding"> + <int key="NS.roundingmode">3</int> + <bool key="NS.raise.overflow">YES</bool> + <bool key="NS.raise.underflow">YES</bool> + <bool key="NS.raise.dividebyzero">YES</bool> + </object> + <string key="NS.decimal">.</string> + <string key="NS.thousand">,</string> + <bool key="NS.hasthousands">YES</bool> + <bool key="NS.localized">NO</bool> + <bool key="NS.allowsfloats">YES</bool> + </object> + <reference key="NSControlView" ref="516165132"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="295824313"/> + <reference key="NSTextColor" ref="612193748"/> + </object> + </object> </object> <string key="NSFrame">{{7, 11}, {428, 165}}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="185048135"/> </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> - <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSMaxSize">{1e+13, 1e+13}</string> </object> </object> <object class="IBObjectContainer" key="IBDocument.Objects"> @@ -2268,15 +2406,29 @@ </object> <int key="connectionID">562</int> </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">bwLimitFormatter</string> + <reference key="source" ref="976324537"/> + <reference key="destination" ref="570203085"/> + </object> + <int key="connectionID">600</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">bwLimitField</string> + <reference key="source" ref="976324537"/> + <reference key="destination" ref="516165132"/> + </object> + <int key="connectionID">601</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBObjectRecord"> <int key="objectID">0</int> - <object class="NSArray" key="object" id="0"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> + <reference key="object" ref="0"/> <reference key="children" ref="1048"/> <nil key="parent"/> </object> @@ -3344,6 +3496,9 @@ <reference ref="176167148"/> <reference ref="714556157"/> <reference ref="461774918"/> + <reference ref="239767912"/> + <reference ref="516165132"/> + <reference ref="619808493"/> </object> <reference key="parent" ref="513836616"/> </object> @@ -3436,6 +3591,57 @@ <reference key="object" ref="407630613"/> <reference key="parent" ref="721958043"/> </object> + <object class="IBObjectRecord"> + <int key="objectID">563</int> + <reference key="object" ref="239767912"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="653555036"/> + </object> + <reference key="parent" ref="1044359901"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">566</int> + <reference key="object" ref="653555036"/> + <reference key="parent" ref="239767912"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">589</int> + <reference key="object" ref="619808493"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="138752257"/> + </object> + <reference key="parent" ref="1044359901"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">590</int> + <reference key="object" ref="138752257"/> + <reference key="parent" ref="619808493"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">597</int> + <reference key="object" ref="516165132"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1008438086"/> + </object> + <reference key="parent" ref="1044359901"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">598</int> + <reference key="object" ref="1008438086"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="570203085"/> + </object> + <reference key="parent" ref="516165132"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">599</int> + <reference key="object" ref="570203085"/> + <reference key="parent" ref="1008438086"/> + </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -3673,12 +3879,20 @@ <string>56.IBPluginDependency</string> <string>56.ImportedFromIB2</string> <string>561.IBPluginDependency</string> + <string>563.IBPluginDependency</string> + <string>566.IBPluginDependency</string> <string>57.IBEditorWindowLastContentRect</string> <string>57.IBPluginDependency</string> <string>57.ImportedFromIB2</string> <string>57.editorWindowContentRectSynchronizationRect</string> <string>58.IBPluginDependency</string> <string>58.ImportedFromIB2</string> + <string>589.IBPluginDependency</string> + <string>590.IBPluginDependency</string> + <string>597.IBPluginDependency</string> + <string>598.IBPluginDependency</string> + <string>599.IBNumberFormatterBehaviorMetadataKey</string> + <string>599.IBNumberFormatterLocalizesFormatMetadataKey</string> <string>72.IBPluginDependency</string> <string>72.ImportedFromIB2</string> <string>73.IBPluginDependency</string> @@ -3939,6 +4153,8 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>{{286, 129}, {275, 183}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> @@ -3946,6 +4162,12 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1041"/> + <boolean value="YES"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <integer value="1"/> @@ -3976,20 +4198,16 @@ <object class="NSMutableDictionary" key="unlocalizedProperties"> <bool key="EncodedWithXMLCoder">YES</bool> <reference key="dict.sortedKeys" ref="0"/> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> + <reference key="dict.values" ref="0"/> </object> <nil key="activeLocalization"/> <object class="NSMutableDictionary" key="localizations"> <bool key="EncodedWithXMLCoder">YES</bool> <reference key="dict.sortedKeys" ref="0"/> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> + <reference key="dict.values" ref="0"/> </object> <nil key="sourceID"/> - <int key="maxID">562</int> + <int key="maxID">601</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -4002,19 +4220,25 @@ <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>apiKeyField</string> + <string>bwLimitField</string> + <string>bwLimitFormatter</string> <string>musicFolderField</string> <string>prefsWindow</string> <string>statusMenu</string> <string>statusMenuItem</string> + <string>uploadBwMenu</string> <string>window</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>NSTextField</string> <string>NSTextField</string> + <string>NSNumberFormatter</string> + <string>NSTextField</string> <string>NSWindow</string> <string>NSMenu</string> <string>NSMenuItem</string> + <string>NSMenu</string> <string>NSWindow</string> </object> </object> @@ -4023,10 +4247,13 @@ <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> <string>apiKeyField</string> + <string>bwLimitField</string> + <string>bwLimitFormatter</string> <string>musicFolderField</string> <string>prefsWindow</string> <string>statusMenu</string> <string>statusMenuItem</string> + <string>uploadBwMenu</string> <string>window</string> </object> <object class="NSMutableArray" key="dict.values"> @@ -4035,6 +4262,14 @@ <string key="name">apiKeyField</string> <string key="candidateClassName">NSTextField</string> </object> + <object class="IBToOneOutletInfo"> + <string key="name">bwLimitField</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">bwLimitFormatter</string> + <string key="candidateClassName">NSNumberFormatter</string> + </object> <object class="IBToOneOutletInfo"> <string key="name">musicFolderField</string> <string key="candidateClassName">NSTextField</string> @@ -4051,6 +4286,10 @@ <string key="name">statusMenuItem</string> <string key="candidateClassName">NSMenuItem</string> </object> + <object class="IBToOneOutletInfo"> + <string key="name">uploadBwMenu</string> + <string key="candidateClassName">NSMenu</string> + </object> <object class="IBToOneOutletInfo"> <string key="name">window</string> <string key="candidateClassName">NSWindow</string> @@ -4142,7 +4381,6 @@ <integer value="3000" key="NS.object.0"/> </object> <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> - <nil key="IBDocument.LastKnownRelativeProjectPath"/> <int key="IBDocument.defaultPropertyAccessControl">3</int> <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> <bool key="EncodedWithXMLCoder">YES</bool>