Skip to content

Commit

Permalink
Make the frontend check both the current bundle as well as the defaul…
Browse files Browse the repository at this point in the history
…t install location

0110
  • Loading branch information
Six committed Mar 22, 2009
1 parent 673e754 commit ba6fb02
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 22 deletions.
36 changes: 18 additions & 18 deletions misc/osxfe/ioquake3fe/Controller.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,29 @@
#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];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskNote:) name:NSTaskDidTerminateNotification object:nil];
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];
Expand All @@ -41,13 +43,12 @@ - (IBAction)launch:(id)sender
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) {
Expand All @@ -56,8 +57,10 @@ - (IBAction)launch:(id)sender
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 {
Expand All @@ -69,8 +72,7 @@ - (IBAction)launch:(id)sender
return;
}

- (void)readPipe:(NSNotification *)note
{
- (void)readPipe:(NSNotification *)note {
if ([note object] == quakeOut) {
NSData *outputData = [[note userInfo] objectForKey:NSFileHandleNotificationDataItem];
if ([outputData length])
Expand All @@ -80,18 +82,16 @@ - (void)readPipe:(NSNotification *)note
}
}

- (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
3 changes: 1 addition & 2 deletions misc/osxfe/ioquake3fe/ErrorWindow.m
Original file line number Diff line number Diff line change
Expand Up @@ -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]];
Expand Down
3 changes: 1 addition & 2 deletions misc/osxfe/ioquake3fe/ErrorWindowController.m
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ @implementation ErrorWindowController

// yes, a whole class just so the fucking app will quit

- (BOOL)windowShouldClose:(id)sender
{
- (BOOL)windowShouldClose:(id)sender {
[NSApp terminate:self];
return YES;
}
Expand Down

0 comments on commit ba6fb02

Please sign in to comment.