diff --git a/Ample/AppDelegate.m b/Ample/AppDelegate.m index 0f502a8..649af10 100644 --- a/Ample/AppDelegate.m +++ b/Ample/AppDelegate.m @@ -13,6 +13,8 @@ #import "DiskImagesWindowController.h" #import "Transformers.h" +#import "LogWindowController.h" + @interface AppDelegate () @property (weak) IBOutlet NSWindow *installWindow; @@ -139,6 +141,18 @@ } +-(BOOL)application:(NSApplication *)sender openFile:(NSString *)filename { + + NSString *ext = [[filename pathExtension] lowercaseString]; + + if ([ext isEqualToString: @"vgm"] || [ext isEqualToString: @"vgz"]) { + // run mame... + NSArray *args = @[ @"vgmplay", @"-window", @"-nomax", @"-quik", filename ]; + + [LogWindowController controllerForArgs: args]; + } + return NO; +} #pragma mark - IBActions diff --git a/Ample/Info.plist b/Ample/Info.plist index da8d412..8933896 100644 --- a/Ample/Info.plist +++ b/Ample/Info.plist @@ -4,6 +4,33 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + vgm + + CFBundleTypeName + Video Game Music + CFBundleTypeRole + Viewer + LSTypeIsPackage + 0 + + + CFBundleTypeExtensions + + vgz + + CFBundleTypeName + Video Game Music + CFBundleTypeRole + Viewer + LSTypeIsPackage + 0 + + CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile diff --git a/Ample/LogWindowController.h b/Ample/LogWindowController.h index cd7a4d5..a94c1a3 100644 --- a/Ample/LogWindowController.h +++ b/Ample/LogWindowController.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN @interface LogWindowController : NSWindowController +(id)controllerForTask: (NSTask *)task; - ++(id)controllerForArgs: (NSArray *)args; @end NS_ASSUME_NONNULL_END diff --git a/Ample/LogWindowController.m b/Ample/LogWindowController.m index ff201f5..f6ef0ef 100644 --- a/Ample/LogWindowController.m +++ b/Ample/LogWindowController.m @@ -36,6 +36,50 @@ static NSMutableSet *LogWindows; return controller; } +static NSURL *MameURL(void) { + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSBundle *bundle = [NSBundle mainBundle]; + + if ([defaults boolForKey: kUseCustomMame]) { + NSString *path = [defaults stringForKey: kMamePath]; + if (![path length]) return [NSURL fileURLWithPath: path]; + } + + return [bundle URLForAuxiliaryExecutable: @"mame64"]; + + return nil; +} + ++(id)controllerForArgs: (NSArray *)args { + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + NSURL *url = MameURL(); + + if (!url) { + NSAlert *alert = [NSAlert new]; + + [alert setMessageText: @"Unable to find MAME executable path"]; + [alert runModal]; + return nil; + } + + + NSTask *task = [NSTask new]; + [task setExecutableURL: url]; + [task setArguments: args]; + + if (![defaults boolForKey: kUseCustomMame]) { + // run in Application Support/Ample. + [task setCurrentDirectoryURL: SupportDirectory()]; + } + + return [LogWindowController controllerForTask: task]; + + +} + - (void)windowDidLoad { [super windowDidLoad];