diff --git a/Ample/Base.lproj/Preferences.xib b/Ample/Base.lproj/Preferences.xib index d77c51c..06d60fc 100644 --- a/Ample/Base.lproj/Preferences.xib +++ b/Ample/Base.lproj/Preferences.xib @@ -33,6 +33,7 @@ + @@ -57,14 +58,14 @@ diff --git a/Ample/Defaults.plist b/Ample/Defaults.plist index 340dd9d..472d948 100644 --- a/Ample/Defaults.plist +++ b/Ample/Defaults.plist @@ -2,8 +2,8 @@ - UseSystemMame - + UseCustomMame + AutoCloseLogWindow MamePath diff --git a/Ample/LaunchWindowController.m b/Ample/LaunchWindowController.m index 93a8f3c..9cf73fc 100644 --- a/Ample/LaunchWindowController.m +++ b/Ample/LaunchWindowController.m @@ -91,6 +91,39 @@ static NSString *kContextMachine = @"kContextMachine"; } } + +static NSURL *MameURL(void) { + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSBundle *bundle = [NSBundle mainBundle]; + + if ([defaults boolForKey: @"UseSystemMame"]) { + NSString *path = [defaults stringForKey: @"MamePath"]; + if (![path length]) return [NSURL fileURLWithPath: path]; + } + + return [bundle URLForAuxiliaryExecutable: @"mame64"]; + + return nil; +} + +static NSString *MamePath(void) { + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSBundle *bundle = [NSBundle mainBundle]; + + NSString *path; + + if ([defaults boolForKey: @"UseCustomMame"]) { + path = [defaults stringForKey: @"MamePath"]; + if ([path length]) return path; + } + path = [bundle pathForAuxiliaryExecutable: @"mame64"]; + if ([path length]) return path; + return nil; +} + + static NSString * JoinArguments(NSArray *argv) { static NSCharacterSet *safe = nil; @@ -110,7 +143,10 @@ static NSString * JoinArguments(NSArray *argv) { //unsigned ix = 0; - [rv appendString: @"mame"]; + //[rv appendString: @"mame"]; + NSString *path = MamePath(); + path = path ? [path lastPathComponent] : @"mame"; + [rv appendString: path]; for (NSString *s in argv) { [rv appendString: @" "]; NSUInteger l = [s length]; @@ -224,17 +260,20 @@ static NSString * JoinArguments(NSArray *argv) { + - (IBAction)launchAction:(id)sender { if (![_args count]) return; + + NSURL *url = MameURL(); - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - - - NSString *path = [defaults stringForKey: @"MamePath"]; - if (![path length]) path = @"/usr/local/bin/mame"; - - NSURL *url = [NSURL fileURLWithPath: path]; + if (!url) { + NSAlert *alert = [NSAlert new]; + + [alert setMessageText: @"Unable to find MAME executable path"]; + [alert runModal]; + return; + } NSTask *task = [NSTask new]; [task setExecutableURL: url];