X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FEnjoyableApplicationDelegate.m;h=26ea09cdf3321660eaceef0cc96dce8e03d155e5;hp=b1d9907fb850cd85f7f05679c5acdbb8d6ce3224;hb=24bdb92798b9abe86c7954042a47523791736b7c;hpb=b417eb4ae97804070277eb19cc596bdb6bb9d281 diff --git a/Classes/EnjoyableApplicationDelegate.m b/Classes/EnjoyableApplicationDelegate.m index b1d9907..26ea09c 100644 --- a/Classes/EnjoyableApplicationDelegate.m +++ b/Classes/EnjoyableApplicationDelegate.m @@ -31,13 +31,13 @@ object:nil]; [NSNotificationCenter.defaultCenter addObserver:self - selector:@selector(eventTranslationActivated:) - name:NJEventTranslationActivated + selector:@selector(eventSimulationStarted:) + name:NJEventSimulationStarted object:nil]; [NSNotificationCenter.defaultCenter addObserver:self - selector:@selector(eventTranslationDeactivated:) - name:NJEventTranslationDeactivated + selector:@selector(eventSimulationStopped:) + name:NJEventSimulationStopped object:nil]; [self.mappingsController load]; @@ -104,7 +104,7 @@ return NO; } -- (void)eventTranslationActivated:(NSNotification *)note { +- (void)eventSimulationStarted:(NSNotification *)note { statusItem.image = [NSImage imageNamed:@"Status Menu Icon"]; [NSWorkspace.sharedWorkspace.notificationCenter addObserver:self @@ -113,7 +113,7 @@ object:nil]; } -- (void)eventTranslationDeactivated:(NSNotification *)note { +- (void)eventSimulationStopped:(NSNotification *)note { statusItem.image = [NSImage imageNamed:@"Status Menu Icon Disabled"]; [NSWorkspace.sharedWorkspace.notificationCenter removeObserver:self @@ -135,9 +135,21 @@ - (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename { [self restoreToForeground:sender]; - NSURL *url = [NSURL fileURLWithPath:filename]; - [self.mappingsController addMappingWithContentsOfURL:url]; - return YES; + NSError *error; + NSURL *URL = [NSURL fileURLWithPath:filename]; + NJMapping *mapping = [NJMapping mappingWithContentsOfURL:URL + error:&error]; + if (mapping) { + [self.mappingsController addOrMergeMapping:mapping]; + return YES; + } else { + [window presentError:error + modalForWindow:window + delegate:nil + didPresentSelector:nil + contextInfo:nil]; + return NO; + } } - (void)mappingWasChosen:(NJMapping *)mapping { @@ -146,7 +158,7 @@ - (void)mappingListShouldOpen { [self restoreToForeground:self]; - [self.mappingsController mappingPressed:self]; + [self.mappingsController.mvc mappingTriggerClicked:self]; } - (void)loginItemPromptDidEnd:(NSWindow *)sheet @@ -190,5 +202,51 @@ return NO; } +- (void)importMappingClicked:(id)sender { + NSOpenPanel *panel = [NSOpenPanel openPanel]; + panel.allowedFileTypes = @[ @"enjoyable", @"json", @"txt" ]; + [panel beginSheetModalForWindow:window + completionHandler:^(NSInteger result) { + if (result != NSFileHandlingPanelOKButton) + return; + [panel close]; + NSError *error; + NJMapping *mapping = [NJMapping mappingWithContentsOfURL:panel.URL + error:&error]; + if (mapping) { + [self.mappingsController addOrMergeMapping:mapping]; + } else { + [window presentError:error + modalForWindow:window + delegate:nil + didPresentSelector:nil + contextInfo:nil]; + } + }]; + +} + +- (void)exportMappingClicked:(id)sender { + NSSavePanel *panel = [NSSavePanel savePanel]; + panel.allowedFileTypes = @[ @"enjoyable" ]; + NJMapping *mapping = self.mappingsController.currentMapping; + panel.nameFieldStringValue = [mapping.name stringByFixingPathComponent]; + [panel beginSheetModalForWindow:window + completionHandler:^(NSInteger result) { + if (result != NSFileHandlingPanelOKButton) + return; + [panel close]; + NSError *error; + if (![mapping writeToURL:panel.URL error:&error]) { + [window presentError:error + modalForWindow:window + delegate:nil + didPresentSelector:nil + contextInfo:nil]; + } + }]; +} + + @end