2ee6a844bf93b4a2f946d9c1178114498e2d316b
[enjoyable.git] / Classes / NJOutputMapping.m
1 //
2 // NJOutputMapping.m
3 // Enjoy
4 //
5 // Created by Sam McCall on 6/05/09.
6 //
7
8 #import "NJOutputMapping.h"
9
10 #import "EnjoyableApplicationDelegate.h"
11 #import "NJMapping.h"
12
13 @implementation NJOutputMapping
14
15 + (NSString *)serializationCode {
16 return @"mapping";
17 }
18
19 - (NSDictionary *)serialize {
20 NSString *name = _mapping ? _mapping.name : self.mappingName;
21 return name
22 ? @{ @"type": self.class.serializationCode, @"name": name }
23 : nil;
24 }
25
26 + (NJOutputMapping *)outputDeserialize:(NSDictionary *)serialization {
27 NSString *name = serialization[@"name"];
28 NJOutputMapping *output = [[NJOutputMapping alloc] init];
29 output.mappingName = name;
30 return name ? output : nil;
31 }
32
33 - (void)trigger {
34 EnjoyableApplicationDelegate *ctrl = (EnjoyableApplicationDelegate *)NSApplication.sharedApplication.delegate;
35 if (_mapping) {
36 [ctrl.ic activateMapping:_mapping];
37 self.mappingName = _mapping.name;
38 } else {
39 // TODO: Show an error message? Unobtrusively since something
40 // is probably running.
41 }
42 }
43
44 - (void)postLoadProcess:(id <NSFastEnumeration>)allMappings {
45 if (!self.mapping) {
46 for (NJMapping *mapping in allMappings) {
47 if ([mapping.name isEqualToString:self.mappingName]) {
48 self.mapping = mapping;
49 break;
50 }
51 }
52 }
53 }
54
55 @end