From a2993c398bc63ce210d0478bd90620ad565e67ef Mon Sep 17 00:00:00 2001 From: Denver Timothy Date: Tue, 11 Jan 2011 22:06:08 -0700 Subject: [PATCH] initial commit --- AppController.h | 64 + AppController.m | 402 ++++++ AppIcon.icns | Bin 0 -> 37285 bytes English.lproj/InfoPlist.strings | Bin 0 -> 92 bytes English.lproj/MainMenu.xib | 1855 +++++++++++++++++++++++++ Info.plist | 34 + Proximity.xcodeproj/TemplateIcon.icns | Bin 0 -> 52318 bytes Proximity.xcodeproj/dlt.mode1v3 | 1397 +++++++++++++++++++ Proximity.xcodeproj/dlt.pbxuser | 317 +++++ Proximity.xcodeproj/project.pbxproj | 318 +++++ Proximity_Prefix.pch | 7 + inRange.png | Bin 0 -> 3171 bytes inRangeAlt.png | Bin 0 -> 3167 bytes main.m | 14 + outRange.png | Bin 0 -> 3183 bytes outRangeAlt.png | Bin 0 -> 3183 bytes 16 files changed, 4408 insertions(+) create mode 100644 AppController.h create mode 100644 AppController.m create mode 100644 AppIcon.icns create mode 100644 English.lproj/InfoPlist.strings create mode 100644 English.lproj/MainMenu.xib create mode 100644 Info.plist create mode 100644 Proximity.xcodeproj/TemplateIcon.icns create mode 100644 Proximity.xcodeproj/dlt.mode1v3 create mode 100644 Proximity.xcodeproj/dlt.pbxuser create mode 100644 Proximity.xcodeproj/project.pbxproj create mode 100644 Proximity_Prefix.pch create mode 100644 inRange.png create mode 100644 inRangeAlt.png create mode 100644 main.m create mode 100644 outRange.png create mode 100644 outRangeAlt.png diff --git a/AppController.h b/AppController.h new file mode 100644 index 0000000..1cc92f7 --- /dev/null +++ b/AppController.h @@ -0,0 +1,64 @@ +#import +//#import +//#import +#import + +int thisVersionMajor = 1; +int thisVersionMinor = 5; + +typedef enum _BPStatus { + InRange, + OutOfRange +} BPStatus; + +@interface AppController : NSObject +{ + IOBluetoothDevice *device; + NSTimer *timer; + BPStatus priorStatus; + NSStatusItem *statusItem; + + NSImage *outOfRangeImage; + NSImage *outOfRangeAltImage; + NSImage *inRangeImage; + NSImage *inRangeAltImage; + + IBOutlet id checkUpdatesOnStartup; + IBOutlet id deviceName; + IBOutlet id inRangeScriptPath; + IBOutlet id monitoringEnabled; + IBOutlet id outOfRangeScriptPath; + IBOutlet id prefsWindow; + IBOutlet id progressIndicator; + IBOutlet id runScriptsOnStartup; + IBOutlet id timerInterval; +} + +// AppController methods +- (void)createMenuBar; +- (void)userDefaultsLoad; +- (void)userDefaultsSave; +- (BOOL)isInRange; +- (void)menuIconInRange; +- (void)menuIconOutOfRange; +- (void)runInRangeScript; +- (void)runOutOfRangeScript; +- (void)startMonitoring; +- (void)stopMonitoring; + + +// UI methods +- (IBAction)changeDevice:(id)sender; +- (IBAction)checkConnectivity:(id)sender; +- (IBAction)checkForUpdates:(id)sender; +- (IBAction)donate:(id)sender; +- (IBAction)enableMonitoring:(id)sender; +- (IBAction)inRangeScriptChange:(id)sender; +- (IBAction)inRangeScriptClear:(id)sender; +- (IBAction)inRangeScriptTest:(id)sender; +- (IBAction)outOfRangeScriptChange:(id)sender; +- (IBAction)outOfRangeScriptClear:(id)sender; +- (IBAction)outOfRangeScriptTest:(id)sender; +- (IBAction)showWindow:(id)sender; + +@end diff --git a/AppController.m b/AppController.m new file mode 100644 index 0000000..d38e533 --- /dev/null +++ b/AppController.m @@ -0,0 +1,402 @@ +#import "AppController.h" + + +@implementation AppController + + +#pragma mark - +#pragma mark Delegate Methods + +- (void)applicationWillTerminate:(NSNotification *)aNotification +{ + [self stopMonitoring]; +} + +- (void)awakeFromNib +{ + NSBundle *bundle = [NSBundle mainBundle]; + inRangeImage = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource: @"inRange" ofType: @"png"]]; + inRangeAltImage = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource: @"inRangeAlt" ofType: @"png"]]; + outOfRangeImage = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource: @"outRange" ofType: @"png"]]; + outOfRangeAltImage = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource: @"outOfRange" ofType: @"png"]]; + + priorStatus = OutOfRange; + + [self createMenuBar]; + [self userDefaultsLoad]; +} + +- (void)windowWillClose:(NSNotification *)aNotification +{ + [self userDefaultsSave]; + [self stopMonitoring]; + [self startMonitoring]; +} + + +#pragma mark - +#pragma mark AppController Methods + +- (void)createMenuBar +{ + NSMenu *myMenu; + NSMenuItem *menuItem; + + // Menu for status bar item + myMenu = [[NSMenu alloc] init]; + + // Prefences menu item + menuItem = [myMenu addItemWithTitle:@"Preferences" action:@selector(showWindow:) keyEquivalent:@""]; + [menuItem setTarget:self]; + + // Quit menu item + [myMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@""]; + + // Space on status bar + statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; + [statusItem retain]; + + // Attributes of space on status bar + [statusItem setHighlightMode:YES]; + [statusItem setMenu:myMenu]; + + [self menuIconOutOfRange]; +} + +- (void)handleTimer:(NSTimer *)theTimer +{ + if( [self isInRange] ) + { + if( priorStatus == OutOfRange ) + { + priorStatus = InRange; + + [self menuIconInRange]; + [self runInRangeScript]; + } + } + else + { + if( priorStatus == InRange ) + { + priorStatus = OutOfRange; + + [self menuIconOutOfRange]; + [self runOutOfRangeScript]; + } + } + + [self startMonitoring]; +} + +- (BOOL)isInRange +{ + if( device && [device remoteNameRequest:nil] == kIOReturnSuccess ) + return true; + + return false; +} + +- (void)menuIconInRange +{ + [statusItem setImage:inRangeImage]; + [statusItem setAlternateImage:inRangeAltImage]; + + //[statusItem setTitle:@"O"]; +} + +- (void)menuIconOutOfRange +{ + [statusItem setImage:outOfRangeImage]; + [statusItem setAlternateImage:outOfRangeAltImage]; + +// [statusItem setTitle:@"X"]; +} + +- (BOOL)newVersionAvailable +{ + NSURL *url = [NSURL URLWithString:@"http://reduxcomputing.com/download/Proximity.plist"]; + NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL:url]; + NSArray *version = [[dict valueForKey:@"version"] componentsSeparatedByString:@"."]; + + int newVersionMajor = [[version objectAtIndex:0] intValue]; + int newVersionMinor = [[version objectAtIndex:1] intValue]; + + if( thisVersionMajor < newVersionMajor || thisVersionMinor < newVersionMinor ) + return YES; + + return NO; +} + +- (void)runInRangeScript +{ + NSAppleScript *script; + NSDictionary *errDict; + NSAppleEventDescriptor *ae; + + script = [[NSAppleScript alloc] + initWithContentsOfURL:[NSURL fileURLWithPath:[inRangeScriptPath stringValue]] + error:&errDict]; + ae = [script executeAndReturnError:&errDict]; +} + +- (void)runOutOfRangeScript +{ + NSAppleScript *script; + NSDictionary *errDict; + NSAppleEventDescriptor *ae; + + script = [[NSAppleScript alloc] + initWithContentsOfURL:[NSURL fileURLWithPath:[outOfRangeScriptPath stringValue]] + error:&errDict]; + ae = [script executeAndReturnError:&errDict]; +} + +- (void)startMonitoring +{ + if( [monitoringEnabled state] == NSOnState ) + { + timer = [NSTimer scheduledTimerWithTimeInterval:[timerInterval intValue] + target:self + selector:@selector(handleTimer:) + userInfo:nil + repeats:NO]; + [timer retain]; + } +} + +- (void)stopMonitoring +{ + [timer invalidate]; +} + +- (void)userDefaultsLoad +{ + NSUserDefaults *defaults; + NSData *deviceAsData; + + defaults = [NSUserDefaults standardUserDefaults]; + + // Device + deviceAsData = [defaults objectForKey:@"device"]; + if( [deviceAsData length] > 0 ) + { + device = [NSKeyedUnarchiver unarchiveObjectWithData:deviceAsData]; + [device retain]; + [deviceName setStringValue:[NSString stringWithFormat:@"%@ (%@)", + [device getName], [device getAddressString]]]; + + if( [self isInRange] ) + { + priorStatus = InRange; + [self menuIconInRange]; + } + else + { + priorStatus = OutOfRange; + [self menuIconOutOfRange]; + } + } + + //Timer interval + if( [[defaults stringForKey:@"timerInterval"] length] > 0 ) + [timerInterval setStringValue:[defaults stringForKey:@"timerInterval"]]; + + // Out of range script path + if( [[defaults stringForKey:@"outOfRangeScriptPath"] length] > 0 ) + [outOfRangeScriptPath setStringValue:[defaults stringForKey:@"outOfRangeScriptPath"]]; + + // In range script path + if( [[defaults stringForKey:@"inRangeScriptPath"] length] > 0 ) + [inRangeScriptPath setStringValue:[defaults stringForKey:@"inRangeScriptPath"]]; + + // Check for updates on startup + BOOL updating = [defaults boolForKey:@"updating"]; + if( updating ) { + [checkUpdatesOnStartup setState:NSOnState]; + if( [self newVersionAvailable] ) + { + if( NSRunAlertPanel( @"Proximity", @"A new version of Proximity is available for download.", + @"Close", @"Download", nil, nil ) == NSAlertAlternateReturn ) + { + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://reduxcomputing.com/proximity/"]]; + } + } + } + + // Monitoring enabled + BOOL monitoring = [defaults boolForKey:@"enabled"]; + if( monitoring ) { + [monitoringEnabled setState:NSOnState]; + [self startMonitoring]; + } + + // Run scripts on startup + BOOL startup = [defaults boolForKey:@"executeOnStartup"]; + if( startup ) + { + [runScriptsOnStartup setState:NSOnState]; + + if( monitoring ) + { + if( [self isInRange] ) { + [self runInRangeScript]; + } else { + [self runOutOfRangeScript]; + } + } + } + +} + +- (void)userDefaultsSave +{ + NSUserDefaults *defaults; + NSData *deviceAsData; + + defaults = [NSUserDefaults standardUserDefaults]; + + // Monitoring enabled + BOOL monitoring = ( [monitoringEnabled state] == NSOnState ? TRUE : FALSE ); + [defaults setBool:monitoring forKey:@"enabled"]; + + // Update checking + BOOL updating = ( [checkUpdatesOnStartup state] == NSOnState ? TRUE : FALSE ); + [defaults setBool:updating forKey:@"updating"]; + + // Execute scripts on startup + BOOL startup = ( [runScriptsOnStartup state] == NSOnState ? TRUE : FALSE ); + [defaults setBool:startup forKey:@"executeOnStartup"]; + + // Timer interval + [defaults setObject:[timerInterval stringValue] forKey:@"timerInterval"]; + + // In range script + [defaults setObject:[inRangeScriptPath stringValue] forKey:@"inRangeScriptPath"]; + + // Out of range script + [defaults setObject:[outOfRangeScriptPath stringValue] forKey:@"outOfRangeScriptPath"]; + + // Device + if( device ) { + deviceAsData = [NSKeyedArchiver archivedDataWithRootObject:device]; + [defaults setObject:deviceAsData forKey:@"device"]; + } + + [defaults synchronize]; +} + + +#pragma mark - +#pragma mark Interface Methods + +- (IBAction)changeDevice:(id)sender +{ + IOBluetoothDeviceSelectorController *deviceSelector; + deviceSelector = [IOBluetoothDeviceSelectorController deviceSelector]; + [deviceSelector runModal]; + + NSArray *results; + results = [deviceSelector getResults]; + + if( !results ) + return; + + device = [results objectAtIndex:0]; + [device retain]; + + [deviceName setStringValue:[NSString stringWithFormat:@"%@ (%@)", + [device getName], + [device getAddressString]]]; +} + +- (IBAction)checkConnectivity:(id)sender +{ + [progressIndicator startAnimation:nil]; + + if( [self isInRange] ) + { + [progressIndicator stopAnimation:nil]; + NSRunAlertPanel( @"Found", @"Device is powered on and in range", nil, nil, nil, nil ); + } + else + { + [progressIndicator stopAnimation:nil]; + NSRunAlertPanel( @"Not Found", @"Device is powered off or out of range", nil, nil, nil, nil ); + } +} + +- (IBAction)checkForUpdates:(id)sender +{ + if( [self newVersionAvailable] ) + { + if( NSRunAlertPanel( @"Proximity", @"A new version of Proximity is available for download.", + @"Close", @"Download", nil, nil ) == NSAlertAlternateReturn ) + { + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://reduxcomputing.com/proximity/"]]; + } + } + else + { + NSRunAlertPanel( @"Proximity", @"You have the latest version.", @"Close", nil, nil, nil ); + } +} + +- (IBAction)donate:(id)sender +{ + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://reduxcomputing.com/donate.php"]]; +} + +- (IBAction)enableMonitoring:(id)sender +{ + // See windowWillClose: method +} + +- (IBAction)inRangeScriptChange:(id)sender +{ + NSOpenPanel *op = [NSOpenPanel openPanel]; + [op runModalForDirectory:@"~" file:nil types:[NSArray arrayWithObject:@"scpt"]]; + + NSArray *filenames = [op filenames]; + [inRangeScriptPath setStringValue:[filenames objectAtIndex:0]]; +} + +- (IBAction)inRangeScriptClear:(id)sender +{ + [inRangeScriptPath setStringValue:@""]; +} + +- (IBAction)inRangeScriptTest:(id)sender +{ + [self runInRangeScript]; +} + +- (IBAction)outOfRangeScriptChange:(id)sender +{ + NSOpenPanel *op = [NSOpenPanel openPanel]; + [op runModalForDirectory:@"~" file:nil types:[NSArray arrayWithObject:@"scpt"]]; + + NSArray *filenames = [op filenames]; + [outOfRangeScriptPath setStringValue:[filenames objectAtIndex:0]]; +} + +- (IBAction)outOfRangeScriptClear:(id)sender +{ + [outOfRangeScriptPath setStringValue:@""]; +} + +- (IBAction)outOfRangeScriptTest:(id)sender +{ + [self runOutOfRangeScript]; +} + +- (void)showWindow:(id)sender +{ + [prefsWindow makeKeyAndOrderFront:self]; + [prefsWindow center]; + + [self stopMonitoring]; +} + + +@end diff --git a/AppIcon.icns b/AppIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..7a7ed14aad7cc8d750f649328e44518ca64b3649 GIT binary patch literal 37285 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 QDJXumO~$|B-^X?SA4^qwV*mgE literal 0 HcmV?d00001 diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..5e45963c382ba690b781b953a00585212b898ac5 GIT binary patch literal 92 zcmW-XQ3`+{5C!MkQ~2$No+IcIkqMDxWCV8j>LCj|yTg2Mz+o9F%uHlf9u}h9EuK`F a!Y*1dX%G66ZqL#C$|bw0ZoP5@jOGW1ArT7z literal 0 HcmV?d00001 diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib new file mode 100644 index 0000000..c539edd --- /dev/null +++ b/English.lproj/MainMenu.xib @@ -0,0 +1,1855 @@ + + + + 1040 + 9G55 + 677 + 949.43 + 353.00 + + YES + + + + + YES + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + Proximity + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Proximity + + YES + + + About Proximity + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + UHJlZmVyZW5jZXPigKY + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Proximity + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Proximity + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + _NSMainMenu + + + 3 + 2 + {{335, 320}, {480, 430}} + 1946157056 + Proximity Preferences + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 256 + + YES + + + 12 + + YES + + + 256 + + YES + + + 12 + + YES + + + 256 + + YES + + + 268 + {{15, 14}, {382, 17}} + + YES + + 68288064 + 272630784 + A Bluetooth-enabled device has not been selected + + LucidaGrande + 1.300000e+01 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + {{1, 1}, {412, 42}} + + + + {{15, 35}, {414, 44}} + + {0, 0} + + 67239424 + 0 + Box + + LucidaGrande + 1.100000e+01 + 3100 + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 0 + NO + + + + 268 + {{18, 12}, {126, 19}} + + YES + + 67239424 + 134217728 + Check Connectivity + + LucidaGrande + 1.200000e+01 + 16 + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{326, 12}, {100, 19}} + + YES + + 67239424 + 134217728 + Change Device + + + -2038152961 + 164 + + + 400 + 75 + + + + + 1292 + + {{152, 14}, {16, 16}} + + 20746 + 1.600000e+01 + 1.000000e+02 + + + {{1, 1}, {444, 87}} + + + + {{17, 207}, {446, 103}} + + {0, 0} + + 67239424 + 0 + Bluetooth Device + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 2 + NO + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{16, 54}, {287, 18}} + + YES + + -2080244224 + 0 + Enable device monitoring and check every + + + 1211912703 + 130 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{306, 53}, {51, 22}} + + YES + + -1804468671 + -1874852864 + 60 + + + YES + + + 6 + System + textColor + + + + + + + 268 + {{359, 55}, {56, 17}} + + YES + + 68288064 + 272630784 + seconds + + + + + + + + + 268 + {{16, 14}, {207, 18}} + + YES + + -2080244224 + 0 + Check for updates on startup + + + 1211912703 + 130 + + + + + 200 + 25 + + + + + 268 + {{229, 12}, {122, 19}} + + YES + + -2080244224 + 134217728 + Check for Updates + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{16, 34}, {412, 18}} + + YES + + -2080244224 + 0 + Immediately run scripts on startup (if enabled and in-range) + + + 1211912703 + 130 + + + + + 200 + 25 + + + + {{1, 1}, {444, 80}} + + + + {{17, 314}, {446, 96}} + + {0, 0} + + 67239424 + 0 + Preferences + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 2 + NO + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{15, 108}, {127, 17}} + + YES + + 68288064 + 272630784 + Out of Range Script + + + + + + + + + 268 + {{18, 78}, {404, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{265, 105}, {44, 19}} + + YES + + -2080244224 + 134217728 + Clear + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{317, 105}, {39, 19}} + + YES + + -2080244224 + 134217728 + Test + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{364, 105}, {58, 19}} + + YES + + -2080244224 + 134217728 + Change + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{15, 53}, {99, 17}} + + YES + + 68288064 + 272630784 + In Range Script + + + + + + + + + 268 + {{18, 23}, {404, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{265, 50}, {44, 19}} + + YES + + -2080244224 + 134217728 + Clear + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{317, 50}, {39, 19}} + + YES + + -2080244224 + 134217728 + Test + + + -2038152961 + 164 + + + 400 + 75 + + + + + 268 + {{364, 50}, {58, 19}} + + YES + + -2080244224 + 134217728 + Change + + + -2038152961 + 164 + + + 400 + 75 + + + + {{1, 1}, {444, 135}} + + + + {{17, 52}, {446, 151}} + + {0, 0} + + 67239424 + 0 + AppleScripts + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 2 + NO + + + + 268 + {{17, 20}, {261, 28}} + + YES + + 67239424 + 4194304 + Proximity is donation-ware. If you find this application useful, please consider a donation. + + LucidaGrande + 1.100000e+01 + 16 + + + + + + + + + 268 + {{306, 23}, {154, 19}} + + YES + + -2080244224 + 134217728 + Donate + + + -2038152961 + 164 + + + 400 + 75 + + + + {480, 430} + + + {{0, 0}, {1440, 878}} + {3.40282e+38, 3.40282e+38} + + + NSFontManager + + + AppController + + + + + YES + + + orderFrontStandardAboutPanel: + + + + 142 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + terminate: + + + + 449 + + + + checkUpdatesOnStartup + + + + 577 + + + + deviceName + + + + 578 + + + + inRangeScriptPath + + + + 579 + + + + monitoringEnabled + + + + 580 + + + + progressIndicator + + + + 582 + + + + runScriptsOnStartup + + + + 583 + + + + timerInterval + + + + 584 + + + + prefsWindow + + + + 585 + + + + changeDevice: + + + + 586 + + + + checkConnectivity: + + + + 587 + + + + checkForUpdates: + + + + 588 + + + + donate: + + + + 589 + + + + inRangeScriptChange: + + + + 590 + + + + inRangeScriptClear: + + + + 591 + + + + inRangeScriptTest: + + + + 592 + + + + delegate + + + + 596 + + + + enableMonitoring: + + + + 597 + + + + outOfRangeScriptPath + + + + 598 + + + + outOfRangeScriptChange: + + + + 599 + + + + outOfRangeScriptClear: + + + + 600 + + + + outOfRangeScriptTest: + + + + 601 + + + + showWindow: + + + + 604 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + MainMenu + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + 420 + + + + + 450 + + + AppController + + + 518 + + + YES + + + + + + + + + 519 + + + YES + + + + + + + + + + + 520 + + + YES + + + + + + 521 + + + YES + + + + + + 522 + + + YES + + + + + + 523 + + + YES + + + + + + 524 + + + YES + + + + + + 525 + + + + + 526 + + + YES + + + + + 527 + + + + + 528 + + + + + 529 + + + + + 530 + + + YES + + + + + + 531 + + + YES + + + + + + 532 + + + YES + + + + + + 533 + + + + + 534 + + + + + 535 + + + + + 536 + + + YES + + + + + + 537 + + + + + 549 + + + YES + + + + + + 550 + + + + + 551 + + + YES + + + + + + + + + + + + + + + 552 + + + YES + + + + + + 553 + + + + + 554 + + + YES + + + + + + 555 + + + + + 556 + + + YES + + + + + + 557 + + + + + 558 + + + YES + + + + + + 559 + + + + + 560 + + + YES + + + + + + 561 + + + + + 562 + + + YES + + + + + + 563 + + + YES + + + + + + 564 + + + YES + + + + + + 565 + + + YES + + + + + + 566 + + + YES + + + + + + 567 + + + + + 568 + + + + + 569 + + + + + 570 + + + + + 571 + + + + + 573 + + + YES + + + + + + 574 + + + + + 575 + + + YES + + + + + + 576 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 371.IBEditorWindowLastContentRect + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 371.windowTemplate.maxSize + 372.IBPluginDependency + 420.IBPluginDependency + 450.IBPluginDependency + 518.IBPluginDependency + 519.IBPluginDependency + 520.IBPluginDependency + 521.IBPluginDependency + 522.IBPluginDependency + 523.IBPluginDependency + 524.IBPluginDependency + 525.IBPluginDependency + 526.IBPluginDependency + 527.IBPluginDependency + 528.IBPluginDependency + 529.IBPluginDependency + 530.IBPluginDependency + 531.IBPluginDependency + 532.IBPluginDependency + 533.IBPluginDependency + 534.IBPluginDependency + 535.IBPluginDependency + 536.IBPluginDependency + 537.IBPluginDependency + 549.IBPluginDependency + 550.IBPluginDependency + 551.IBPluginDependency + 552.IBPluginDependency + 553.IBPluginDependency + 554.IBPluginDependency + 555.IBPluginDependency + 556.IBPluginDependency + 557.IBPluginDependency + 558.IBPluginDependency + 559.IBPluginDependency + 56.IBPluginDependency + 56.ImportedFromIB2 + 560.IBPluginDependency + 561.IBPluginDependency + 562.IBPluginDependency + 563.IBPluginDependency + 564.IBPluginDependency + 565.IBPluginDependency + 566.IBPluginDependency + 567.IBPluginDependency + 568.IBPluginDependency + 569.IBPluginDependency + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 570.IBPluginDependency + 571.IBPluginDependency + 573.IBPluginDependency + 574.IBPluginDependency + 575.IBPluginDependency + 576.IBPluginDependency + 58.IBPluginDependency + 58.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{220, 348}, {111, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + {{312, 419}, {480, 430}} + {{312, 419}, {480, 430}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{232, 165}, {203, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 604 + + + + YES + + AppController + NSObject + + YES + + YES + changeDevice: + checkConnectivity: + checkForUpdates: + donate: + enableMonitoring: + inRangeScriptChange: + inRangeScriptClear: + inRangeScriptTest: + outOfRangeScriptChange: + outOfRangeScriptClear: + outOfRangeScriptTest: + showWindow: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + checkUpdatesOnStartup + deviceName + inRangeScriptPath + monitoringEnabled + outOfRangeScriptPath + prefsWindow + progressIndicator + runScriptsOnStartup + timerInterval + + + YES + id + id + id + id + id + id + id + id + id + + + + IBProjectSource + AppController.h + + + + AppController + NSObject + + IBUserSource + + + + + + 0 + ../Proximity.xcodeproj + 3 + + diff --git a/Info.plist b/Info.plist new file mode 100644 index 0000000..d9c1ff8 --- /dev/null +++ b/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + AppIcon + CFBundleIdentifier + com.reduxcomputing.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.5 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + LSUIElement + + CFBundleShortVersionString + 1.5 + CFBundleGetInfoString + 1.5 + + diff --git a/Proximity.xcodeproj/TemplateIcon.icns b/Proximity.xcodeproj/TemplateIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..62cb7015e09d6ea3e65d7f7949c4c07f9246a908 GIT binary patch literal 52318 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 WhsmLR^b3` + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 2E67EC110FC03B7C0025D101 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + active-buildstyle-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-goOrGo + go-debug + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 080E96DDFE201D6D7F000001 + 29B97315FDCFA39411CA2CEA + 29B97317FDCFA39411CA2CEA + 29B97323FDCFA39411CA2CEA + 19C28FACFE9D520D11CA2CBB + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 13 + 7 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 753}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 771}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 108 66 1098 812 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + Info.plist + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + Info.plist + _historyCapacity + 0 + bookmark + 2EB6A6AB0FD9FE850045261B + history + + 2E9A79250FC486CB0054A42B + 2E9A79660FC4D24A0054A42B + 2EB6A6A90FD9FE850045261B + 2E9A77B70FC31F100054A42B + + prevStack + + 2E7C72E40FC05A6000A9CF0D + 2E7C72E50FC05A6000A9CF0D + 2E9A778E0FC31C940054A42B + 2EB6A6AA0FD9FE850045261B + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {890, 766}} + RubberWindowFrame + 108 66 1098 812 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 766pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 771}, {890, 0}} + RubberWindowFrame + 108 66 1098 812 0 0 1440 878 + + Module + XCDetailModule + Proportion + 0pt + + + Proportion + 890pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 2EB6A6AC0FD9FE850045261B + 1CE0B1FE06471DED0097A5F4 + 2EB6A6AD0FD9FE850045261B + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 2 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + /Users/dlt/Desktop/proximity-working/Proximity.xcodeproj + + WindowString + 108 66 1098 812 0 0 1440 878 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {735, 226}} + RubberWindowFrame + 70 163 735 692 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 226pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 231}, {735, 420}} + RubberWindowFrame + 70 163 735 692 0 0 1440 878 + + Module + PBXBuildResultsModule + Proportion + 420pt + + + Proportion + 651pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 2E67EC1D0FC03BAC0025D101 + 2EB6A69C0FD9FE790045261B + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 70 163 735 692 0 0 1440 878 + WindowToolGUID + 2E67EC1D0FC03BAC0025D101 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {582, 316}} + {{582, 0}, {695, 316}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {1277, 316}} + {{0, 316}, {1277, 276}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {1277, 592}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 237 + Value + 85 + Summary + 348 + + Frame + {{582, 0}, {695, 316}} + RubberWindowFrame + 72 167 1277 633 0 0 1440 878 + + RubberWindowFrame + 72 167 1277 633 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 592pt + + + Proportion + 592pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 2EB6A69D0FD9FE790045261B + 1C162984064C10D400B95A72 + 2EB6A69E0FD9FE790045261B + 2EB6A69F0FD9FE790045261B + 2EB6A6A00FD9FE790045261B + 2EB6A6A10FD9FE790045261B + 2EB6A6A20FD9FE790045261B + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 72 167 1277 633 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 639 408 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 639 408 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 2E7C72DB0FC059CB00A9CF0D + 2E7C72DC0FC059CB00A9CF0D + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 639 408 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 209}} + RubberWindowFrame + 9 383 650 250 0 0 1440 878 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 2EB6A6A30FD9FE790045261B + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 9 383 650 250 0 0 1440 878 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 141 446 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 141 446 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 2E9A77EA0FC32BF80054A42B + 2E9A77EB0FC32BF80054A42B + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 141 446 744 409 0 0 1440 878 + WindowToolGUID + 2E9A77EA0FC32BF80054A42B + WindowToolIsVisible + + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/Proximity.xcodeproj/dlt.pbxuser b/Proximity.xcodeproj/dlt.pbxuser new file mode 100644 index 0000000..1a66803 --- /dev/null +++ b/Proximity.xcodeproj/dlt.pbxuser @@ -0,0 +1,317 @@ +// !$*UTF8*$! +{ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 2E67EC080FC03B430025D101 /* Proximity */; + activeSDKPreference = macosx10.4; + activeTarget = 8D1107260486CEB800E47090 /* Proximity */; + breakpoints = ( + ); + codeSenseManager = 2E67EC0C0FC03B740025D101 /* Code sense */; + executables = ( + 2E67EC080FC03B430025D101 /* Proximity */, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 651, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 265944697; + PBXWorkspaceStateSaveDate = 265944697; + }; + perUserProjectItems = { + 2E7C72E40FC05A6000A9CF0D = 2E7C72E40FC05A6000A9CF0D /* PBXTextBookmark */; + 2E7C72E50FC05A6000A9CF0D = 2E7C72E50FC05A6000A9CF0D /* PBXTextBookmark */; + 2E9A778E0FC31C940054A42B = 2E9A778E0FC31C940054A42B /* PlistBookmark */; + 2E9A77B70FC31F100054A42B = 2E9A77B70FC31F100054A42B /* PlistBookmark */; + 2E9A78FA0FC44B7B0054A42B = 2E9A78FA0FC44B7B0054A42B /* PBXTextBookmark */; + 2E9A78FC0FC44B7B0054A42B = 2E9A78FC0FC44B7B0054A42B /* PBXTextBookmark */; + 2E9A78FD0FC44B7B0054A42B = 2E9A78FD0FC44B7B0054A42B /* PBXTextBookmark */; + 2E9A78FE0FC44B7B0054A42B = 2E9A78FE0FC44B7B0054A42B /* PBXTextBookmark */; + 2E9A78FF0FC44B7B0054A42B = 2E9A78FF0FC44B7B0054A42B /* PBXTextBookmark */; + 2E9A79000FC44B7B0054A42B = 2E9A79000FC44B7B0054A42B /* PBXTextBookmark */; + 2E9A79250FC486CB0054A42B = 2E9A79250FC486CB0054A42B /* PBXTextBookmark */; + 2E9A79260FC486CB0054A42B = 2E9A79260FC486CB0054A42B /* PBXTextBookmark */; + 2E9A79660FC4D24A0054A42B = 2E9A79660FC4D24A0054A42B /* PBXTextBookmark */; + 2EB6A6A90FD9FE850045261B /* PBXBookmark */ = 2EB6A6A90FD9FE850045261B /* PBXBookmark */; + 2EB6A6AA0FD9FE850045261B /* PBXBookmark */ = 2EB6A6AA0FD9FE850045261B /* PBXBookmark */; + 2EB6A6AB0FD9FE850045261B /* PlistBookmark */ = 2EB6A6AB0FD9FE850045261B /* PlistBookmark */; + }; + sourceControlManager = 2E67EC0B0FC03B740025D101 /* Source Control */; + userBuildSettings = { + }; + }; + 2E10CA170FBD00900059A159 /* AppController.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {829, 938}}"; + sepNavSelRange = "{284, 0}"; + sepNavVisRange = "{104, 1263}"; + sepNavWindowFrame = "{{15, 59}, {842, 814}}"; + }; + }; + 2E10CA180FBD00900059A159 /* AppController.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {829, 5642}}"; + sepNavSelRange = "{8638, 0}"; + sepNavVisRange = "{0, 1288}"; + }; + }; + 2E67EC080FC03B430025D101 /* Proximity */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = Proximity; + savedGlobals = { + }; + sourceDirectories = ( + ); + variableFormatDictionary = { + $cs = 1; + $ds = 1; + $eax = 1; + $ebp = 1; + $ebx = 1; + $ecx = 1; + $edi = 1; + $edx = 1; + $eflags = 1; + $eip = 1; + $es = 1; + $esi = 1; + $esp = 1; + $gs = 1; + $ss = 1; + }; + }; + 2E67EC0B0FC03B740025D101 /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + }; + 2E67EC0C0FC03B740025D101 /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 2E7C72E40FC05A6000A9CF0D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA180FBD00900059A159 /* AppController.m */; + name = "AppController.m: 399"; + rLen = 0; + rLoc = 9615; + rType = 0; + vrLen = 1181; + vrLoc = 6821; + }; + 2E7C72E50FC05A6000A9CF0D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA170FBD00900059A159 /* AppController.h */; + name = "AppController.h: 25"; + rLen = 0; + rLoc = 689; + rType = 0; + vrLen = 1226; + vrLoc = 0; + }; + 2E9A778E0FC31C940054A42B /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D1107310486CEB800E47090 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = "/Users/dlt/Desktop/Proximity Working/Info.plist"; + rLen = 0; + rLoc = 2147483647; + }; + 2E9A77B70FC31F100054A42B /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D1107310486CEB800E47090 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = "/Users/dlt/Desktop/Proximity Working/Info.plist"; + rLen = 0; + rLoc = 2147483647; + }; + 2E9A78FA0FC44B7B0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA170FBD00900059A159 /* AppController.h */; + name = "AppController.h: 20"; + rLen = 27; + rLoc = 392; + rType = 0; + vrLen = 1220; + vrLoc = 104; + }; + 2E9A78FC0FC44B7B0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA170FBD00900059A159 /* AppController.h */; + name = "AppController.h: 33"; + rLen = 0; + rLoc = 769; + rType = 0; + vrLen = 1212; + vrLoc = 0; + }; + 2E9A78FD0FC44B7B0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA180FBD00900059A159 /* AppController.m */; + name = "AppController.m: 133"; + rLen = 266; + rLoc = 3021; + rType = 0; + vrLen = 1414; + vrLoc = 2503; + }; + 2E9A78FE0FC44B7B0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA170FBD00900059A159 /* AppController.h */; + name = "AppController.h: 52"; + rLen = 36; + rLoc = 1133; + rType = 0; + vrLen = 1264; + vrLoc = 104; + }; + 2E9A78FF0FC44B7B0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA180FBD00900059A159 /* AppController.m */; + name = "AppController.m: 42"; + rLen = 614; + rLoc = 1025; + rType = 0; + vrLen = 1088; + vrLoc = 921; + }; + 2E9A79000FC44B7B0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA170FBD00900059A159 /* AppController.h */; + name = "AppController.h: 20"; + rLen = 27; + rLoc = 392; + rType = 0; + vrLen = 1220; + vrLoc = 104; + }; + 2E9A79250FC486CB0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA180FBD00900059A159 /* AppController.m */; + name = "AppController.m: 347"; + rLen = 0; + rLoc = 8638; + rType = 0; + vrLen = 1288; + vrLoc = 0; + }; + 2E9A79260FC486CB0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA180FBD00900059A159 /* AppController.m */; + name = "AppController.m: 347"; + rLen = 0; + rLoc = 8638; + rType = 0; + vrLen = 1288; + vrLoc = 0; + }; + 2E9A79660FC4D24A0054A42B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2E10CA170FBD00900059A159 /* AppController.h */; + name = "AppController.h: 13"; + rLen = 0; + rLoc = 284; + rType = 0; + vrLen = 1263; + vrLoc = 104; + }; + 2EB6A6A90FD9FE850045261B /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 2E10CA840FBD09DA0059A159 /* outRangeAlt.png */; + }; + 2EB6A6AA0FD9FE850045261B /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 2E10CA840FBD09DA0059A159 /* outRangeAlt.png */; + }; + 2EB6A6AB0FD9FE850045261B /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D1107310486CEB800E47090 /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = "/Users/dlt/Desktop/proximity-working/Info.plist"; + rLen = 0; + rLoc = 2147483647; + }; + 8D1107260486CEB800E47090 /* Proximity */ = { + activeExec = 0; + executables = ( + 2E67EC080FC03B430025D101 /* Proximity */, + ); + }; + 8D1107310486CEB800E47090 /* Info.plist */ = { + uiCtxt = { + sepNavWindowFrame = "{{15, 59}, {842, 814}}"; + }; + }; +} diff --git a/Proximity.xcodeproj/project.pbxproj b/Proximity.xcodeproj/project.pbxproj new file mode 100644 index 0000000..15dd84d --- /dev/null +++ b/Proximity.xcodeproj/project.pbxproj @@ -0,0 +1,318 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; + 2E10CA190FBD00900059A159 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E10CA180FBD00900059A159 /* AppController.m */; }; + 2E10CA850FBD09DA0059A159 /* inRange.png in Resources */ = {isa = PBXBuildFile; fileRef = 2E10CA810FBD09DA0059A159 /* inRange.png */; }; + 2E10CA860FBD09DA0059A159 /* inRangeAlt.png in Resources */ = {isa = PBXBuildFile; fileRef = 2E10CA820FBD09DA0059A159 /* inRangeAlt.png */; }; + 2E10CA870FBD09DA0059A159 /* outRange.png in Resources */ = {isa = PBXBuildFile; fileRef = 2E10CA830FBD09DA0059A159 /* outRange.png */; }; + 2E10CA880FBD09DA0059A159 /* outRangeAlt.png in Resources */ = {isa = PBXBuildFile; fileRef = 2E10CA840FBD09DA0059A159 /* outRangeAlt.png */; }; + 2E67EBFB0FC03A780025D101 /* IOBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E67EBFA0FC03A780025D101 /* IOBluetooth.framework */; }; + 2E67EC010FC03A8F0025D101 /* IOBluetoothUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E67EC000FC03A8F0025D101 /* IOBluetoothUI.framework */; }; + 2EA9F55B0FC02F68007354EF /* AppIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2EA9F55A0FC02F68007354EF /* AppIcon.icns */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 2E10CA170FBD00900059A159 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; + 2E10CA180FBD00900059A159 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = ""; }; + 2E10CA810FBD09DA0059A159 /* inRange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = inRange.png; sourceTree = ""; }; + 2E10CA820FBD09DA0059A159 /* inRangeAlt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = inRangeAlt.png; sourceTree = ""; }; + 2E10CA830FBD09DA0059A159 /* outRange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = outRange.png; sourceTree = ""; }; + 2E10CA840FBD09DA0059A159 /* outRangeAlt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = outRangeAlt.png; sourceTree = ""; }; + 2E67EBFA0FC03A780025D101 /* IOBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOBluetooth.framework; path = /System/Library/Frameworks/IOBluetooth.framework; sourceTree = ""; }; + 2E67EC000FC03A8F0025D101 /* IOBluetoothUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOBluetoothUI.framework; path = /System/Library/Frameworks/IOBluetoothUI.framework; sourceTree = ""; }; + 2EA9F55A0FC02F68007354EF /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = AppIcon.icns; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* Proximity_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Proximity_Prefix.pch; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* Proximity.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Proximity.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 2E67EBFB0FC03A780025D101 /* IOBluetooth.framework in Frameworks */, + 2E67EC010FC03A8F0025D101 /* IOBluetoothUI.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + 2E10CA170FBD00900059A159 /* AppController.h */, + 2E10CA180FBD00900059A159 /* AppController.m */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* Proximity.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* Proximity */ = { + isa = PBXGroup; + children = ( + 080E96DDFE201D6D7F000001 /* Classes */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = Proximity; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32CA4F630368D1EE00C91783 /* Proximity_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 2EA9F55A0FC02F68007354EF /* AppIcon.icns */, + 2E10CA810FBD09DA0059A159 /* inRange.png */, + 2E10CA820FBD09DA0059A159 /* inRangeAlt.png */, + 2E10CA830FBD09DA0059A159 /* outRange.png */, + 2E10CA840FBD09DA0059A159 /* outRangeAlt.png */, + 8D1107310486CEB800E47090 /* Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2E67EC000FC03A8F0025D101 /* IOBluetoothUI.framework */, + 2E67EBFA0FC03A780025D101 /* IOBluetooth.framework */, + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* Proximity */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Proximity" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Proximity; + productInstallPath = "$(HOME)/Applications"; + productName = Proximity; + productReference = 8D1107320486CEB800E47090 /* Proximity.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Proximity" */; + compatibilityVersion = "Xcode 3.1"; + hasScannedForEncodings = 1; + mainGroup = 29B97314FDCFA39411CA2CEA /* Proximity */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* Proximity */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, + 2E10CA850FBD09DA0059A159 /* inRange.png in Resources */, + 2E10CA860FBD09DA0059A159 /* inRangeAlt.png in Resources */, + 2E10CA870FBD09DA0059A159 /* outRange.png in Resources */, + 2E10CA880FBD09DA0059A159 /* outRangeAlt.png in Resources */, + 2EA9F55B0FC02F68007354EF /* AppIcon.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + 2E10CA190FBD00900059A159 /* AppController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 1DDD58150DA1D0A300B32029 /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Proximity_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = Proximity; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Proximity_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = Proximity; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.4; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.4; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Proximity" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Proximity" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/Proximity_Prefix.pch b/Proximity_Prefix.pch new file mode 100644 index 0000000..f55561f --- /dev/null +++ b/Proximity_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'Proximity' target in the 'Proximity' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/inRange.png b/inRange.png new file mode 100644 index 0000000000000000000000000000000000000000..fa489ac7afadc575a051e562aaa23d1967d6f76d GIT binary patch literal 3171 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 JPDHLkV1h!e_-6nB literal 0 HcmV?d00001 diff --git a/inRangeAlt.png b/inRangeAlt.png new file mode 100644 index 0000000000000000000000000000000000000000..0a716bd8fc68d8287c6556862d881ec700c30870 GIT binary patch literal 3167 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 FV1kON*hByT literal 0 HcmV?d00001 diff --git a/main.m b/main.m new file mode 100644 index 0000000..c5f1148 --- /dev/null +++ b/main.m @@ -0,0 +1,14 @@ +// +// main.m +// Proximity +// +// Created by Denver Timothy on 5/14/09. +// Copyright __MyCompanyName__ 2009. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +} diff --git a/outRange.png b/outRange.png new file mode 100644 index 0000000000000000000000000000000000000000..8de8375600e3196f8653dca39f98826323021c42 GIT binary patch literal 3183 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 V^2_|56xaX&002ovPDHLkV1j}l`Vs&D literal 0 HcmV?d00001 diff --git a/outRangeAlt.png b/outRangeAlt.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a24279772445e42c23d766b68e64ca8c427f4a GIT binary patch literal 3183 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 Vc*wdW`YQkc002ovPDHLkV1h)8^6UTr literal 0 HcmV?d00001