From 8efd23aa57105475f58b22751b78df696e019c2a Mon Sep 17 00:00:00 2001 From: six Date: Sun, 22 Mar 2009 00:24:40 +0000 Subject: Make the frontend check both the current bundle as well as the default install location 0110 git-svn-id: svn://svn.icculus.org/quake3/trunk@1514 edf5b092-35ff-0310-97b2-ce42778d08ea --- misc/osxfe/ioquake3fe/Controller.m | 36 +++++++++++++-------------- misc/osxfe/ioquake3fe/ErrorWindow.m | 3 +-- misc/osxfe/ioquake3fe/ErrorWindowController.m | 3 +-- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/misc/osxfe/ioquake3fe/Controller.m b/misc/osxfe/ioquake3fe/Controller.m index 6ebde2f..2d2bf45 100644 --- a/misc/osxfe/ioquake3fe/Controller.m +++ b/misc/osxfe/ioquake3fe/Controller.m @@ -9,12 +9,12 @@ #import "Controller.h" #import "ErrorWindow.h" +#define IOQ3_BUNDLE @"/Applications/ioquake3/ioquake3.app" #define IOQ3_BIN @"ioquake3.ub" @implementation Controller -- (id)init -{ +- (id)init { [super init]; quakeData = [[NSMutableData alloc] initWithCapacity:1.0]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(readPipe:) name:NSFileHandleReadCompletionNotification object:nil]; @@ -22,14 +22,16 @@ return self; } -- (void)dealloc -{ +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } -- (IBAction)launch:(id)sender -{ +- (IBAction)launch:(id)sender { + NSString *ioQuake3Path = [[NSBundle mainBundle] pathForAuxiliaryExecutable:IOQ3_BIN]; + if (!ioQuake3Path) + ioQuake3Path = [[NSBundle bundleWithPath:IOQ3_BUNDLE] pathForAuxiliaryExecutable:IOQ3_BIN]; + NSPipe *pipe = [NSPipe pipe]; quakeOut = [pipe fileHandleForReading]; [quakeOut readInBackgroundAndNotify]; @@ -41,13 +43,12 @@ NSString *args = [argsTextField stringValue]; if ([args length]) [quakeTask setArguments:[args componentsSeparatedByString:@" "]]; - // tiger sucks - //[quakeTask setArguments:[args componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]]; +// [quakeTask setArguments:[args componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]]; // tiger BOOL die = NO; @try { - [quakeTask setLaunchPath:[[NSBundle mainBundle] pathForAuxiliaryExecutable:IOQ3_BIN]]; + [quakeTask setLaunchPath:ioQuake3Path]; [quakeTask launch]; } @catch (NSException *e) { @@ -56,8 +57,10 @@ defaultButton:NSLocalizedString(@"OK", @"OK") alternateButton:nil otherButton:nil - informativeTextWithFormat:NSLocalizedString(@"Something is probably wrong with the actual ioquake3 binary.", @"launch failed text")] - runModal]; +// informativeTextWithFormat:NSLocalizedString(@"Something is probably wrong with the actual ioquake3 binary.", @"launch failed text")] +// informativeTextWithFormat:NSLocalizedString([@"Unable to find the Quake binary at:\n" stringByAppendingString:ioQuake3Path], @"launch failed text")] + informativeTextWithFormat:NSLocalizedString([[[e reason] stringByAppendingString:@"\n\nExecutable path was:\n"] stringByAppendingString:ioQuake3Path], @"launch failed text")] + runModal]; die = YES; } @finally { @@ -69,8 +72,7 @@ return; } -- (void)readPipe:(NSNotification *)note -{ +- (void)readPipe:(NSNotification *)note { if ([note object] == quakeOut) { NSData *outputData = [[note userInfo] objectForKey:NSFileHandleNotificationDataItem]; if ([outputData length]) @@ -80,18 +82,16 @@ } } -- (void)taskNote:(NSNotification *)note -{ +- (void)taskNote:(NSNotification *)note { if ([note object] == quakeTask) { if ([quakeTask isRunning] == NO) { if ([quakeTask terminationStatus] != 0) { ErrorWindow *ew = [[[ErrorWindow alloc] init] autorelease]; [ew bitch:[[[NSString alloc] initWithData:quakeData encoding:NSUTF8StringEncoding] autorelease]]; - } else { + } + else [NSApp terminate:self]; - } } } } - @end diff --git a/misc/osxfe/ioquake3fe/ErrorWindow.m b/misc/osxfe/ioquake3fe/ErrorWindow.m index bcb373d..93a8d91 100644 --- a/misc/osxfe/ioquake3fe/ErrorWindow.m +++ b/misc/osxfe/ioquake3fe/ErrorWindow.m @@ -2,8 +2,7 @@ @implementation ErrorWindow -- (void)bitch:(NSString *)errorlog -{ +- (void)bitch:(NSString *)errorlog { NSLog(errorlog); NSNib *nib = [[NSNib alloc] initWithNibNamed:@"ErrorWindow.nib" bundle:[NSBundle mainBundle]]; diff --git a/misc/osxfe/ioquake3fe/ErrorWindowController.m b/misc/osxfe/ioquake3fe/ErrorWindowController.m index 40bd296..ceb3f8b 100644 --- a/misc/osxfe/ioquake3fe/ErrorWindowController.m +++ b/misc/osxfe/ioquake3fe/ErrorWindowController.m @@ -12,8 +12,7 @@ // yes, a whole class just so the fucking app will quit -- (BOOL)windowShouldClose:(id)sender -{ +- (BOOL)windowShouldClose:(id)sender { [NSApp terminate:self]; return YES; } -- cgit v1.2.3