X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJOutputMapping.m;h=2ee6a844bf93b4a2f946d9c1178114498e2d316b;hp=28a84aba0d1b53897c3b3371edb4fb4bf0b8f539;hb=4fd28dc6483fd7c8323196abdbf4f1833a284e03;hpb=b14d8429658dd6f3f7b4904301031addb502b22c diff --git a/Classes/NJOutputMapping.m b/Classes/NJOutputMapping.m index 28a84ab..2ee6a84 100644 --- a/Classes/NJOutputMapping.m +++ b/Classes/NJOutputMapping.m @@ -9,7 +9,6 @@ #import "EnjoyableApplicationDelegate.h" #import "NJMapping.h" -#import "NJMappingsController.h" @implementation NJOutputMapping @@ -18,27 +17,39 @@ } - (NSDictionary *)serialize { - return _mapping - ? @{ @"type": self.class.serializationCode, @"name": _mapping.name } + NSString *name = _mapping ? _mapping.name : self.mappingName; + return name + ? @{ @"type": self.class.serializationCode, @"name": name } : nil; } -+ (NJOutputMapping *)outputDeserialize:(NSDictionary *)serialization - withMappings:(id )mappings { ++ (NJOutputMapping *)outputDeserialize:(NSDictionary *)serialization { NSString *name = serialization[@"name"]; NJOutputMapping *output = [[NJOutputMapping alloc] init]; - for (NJMapping *mapping in mappings) { - if ([mapping.name isEqualToString:name]) { - output.mapping = mapping; - return output; - } - } - return nil; + output.mappingName = name; + return name ? output : nil; } - (void)trigger { EnjoyableApplicationDelegate *ctrl = (EnjoyableApplicationDelegate *)NSApplication.sharedApplication.delegate; - [ctrl.mappingsController activateMapping:_mapping]; + if (_mapping) { + [ctrl.ic activateMapping:_mapping]; + self.mappingName = _mapping.name; + } else { + // TODO: Show an error message? Unobtrusively since something + // is probably running. + } +} + +- (void)postLoadProcess:(id )allMappings { + if (!self.mapping) { + for (NJMapping *mapping in allMappings) { + if ([mapping.name isEqualToString:self.mappingName]) { + self.mapping = mapping; + break; + } + } + } } @end