X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=NJMappingsController.m;h=e2ac93c49a54310bcc8f0ff2cdd7b7552d5f9743;hp=e5b2b7d55d51cf3b34aa255c3dc03e27920413ec;hb=1315dd378437c84891c795c9927ff40d42d74cb3;hpb=e2a4d830dd9817f6a515a3b1b6aa152d3bb98c2b diff --git a/NJMappingsController.m b/NJMappingsController.m index e5b2b7d..e2ac93c 100644 --- a/NJMappingsController.m +++ b/NJMappingsController.m @@ -7,11 +7,10 @@ #import "NJMappingsController.h" -#import "ApplicationController.h" #import "NJMapping.h" #import "NJMappingsController.h" -#import "Target.h" -#import "TargetController.h" +#import "NJOutput.h" +#import "NJOutputController.h" #import "NJEvents.h" @implementation NJMappingsController { @@ -36,6 +35,27 @@ return nil; } +- (NJMapping *)objectAtIndexedSubscript:(NSUInteger)idx { + return idx < _mappings.count ? _mappings[idx] : nil; +} + +- (void)mappingsChanged { + [self save]; + [tableView reloadData]; + [NSNotificationCenter.defaultCenter + postNotificationName:NJEventMappingListChanged + object:_mappings]; +} + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state + objects:(__unsafe_unretained id [])buffer + count:(NSUInteger)len { + return [_mappings countByEnumeratingWithState:state + objects:buffer + count:len]; +} + + - (void)activateMappingForProcess:(NSString *)processName { NJMapping *oldMapping = manualMapping; NJMapping *newMapping = self[processName]; @@ -53,7 +73,8 @@ manualMapping = mapping; _currentMapping = mapping; [removeButton setEnabled:_mappings[0] != mapping]; - [targetController loadCurrent]; + [outputController loadCurrent]; + popoverActivate.title = _currentMapping.name; [NSNotificationCenter.defaultCenter postNotificationName:NJEventMappingChanged object:_currentMapping]; [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:[_mappings indexOfObject:mapping]] byExtendingSelection:NO]; @@ -62,11 +83,9 @@ - (IBAction)addPressed:(id)sender { NJMapping *newMapping = [[NJMapping alloc] initWithName:@"Untitled"]; [_mappings addObject:newMapping]; - [(ApplicationController *)NSApplication.sharedApplication.delegate mappingsChanged]; - [tableView reloadData]; - [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:_mappings.count - 1] byExtendingSelection:NO]; - [tableView editColumn:0 row:_mappings.count - 1 withEvent:nil select:YES]; + [self mappingsChanged]; [self activateMapping:newMapping]; + [tableView editColumn:0 row:_mappings.count - 1 withEvent:nil select:YES]; } - (IBAction)removePressed:(id)sender { @@ -74,25 +93,24 @@ return; [_mappings removeObjectAtIndex:tableView.selectedRow]; - [tableView reloadData]; - [(ApplicationController *)NSApplication.sharedApplication.delegate mappingsChanged]; + [self mappingsChanged]; [self activateMapping:_mappings[0]]; - [self save]; } -(void)tableViewSelectionDidChange:(NSNotification *)notify { - if (tableView.selectedRow >= 0) - [self activateMapping:_mappings[tableView.selectedRow]]; + [self activateMapping:self[tableView.selectedRow]]; } - (id)tableView:(NSTableView *)view objectValueForTableColumn:(NSTableColumn *)column row:(NSInteger)index { - return [_mappings[index] name]; + return self[index].name; } -- (void)tableView:(NSTableView *)view setObjectValue:(NSString *)obj forTableColumn:(NSTableColumn *)col row:(NSInteger)index { - [(NJMapping *)_mappings[index] setName:obj]; - [tableView reloadData]; - [(ApplicationController *)NSApplication.sharedApplication.delegate mappingsChanged]; +- (void)tableView:(NSTableView *)view + setObjectValue:(NSString *)obj + forTableColumn:(NSTableColumn *)col + row:(NSInteger)index { + self[index].name = obj; + [self mappingsChanged]; } - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { @@ -124,7 +142,7 @@ NSArray *storedMappings = envelope[@"mappings"]; NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count]; - // have to do two passes in case mapping1 refers to mapping2 via a TargetMapping + // have to do two passes in case mapping1 refers to mapping2 via a NJOutputMapping for (NSDictionary *storedMapping in storedMappings) { NJMapping *mapping = [[NJMapping alloc] initWithName:storedMapping[@"name"]]; [newMappings addObject:mapping]; @@ -134,10 +152,10 @@ NSDictionary *entries = storedMappings[i][@"entries"]; NJMapping *mapping = newMappings[i]; for (id key in entries) { - Target *target = [Target targetDeserialize:entries[key] - withMappings:newMappings]; - if (target) - mapping.entries[key] = target; + NJOutput *output = [NJOutput outputDeserialize:entries[key] + withMappings:newMappings]; + if (output) + mapping.entries[key] = output; } } @@ -146,8 +164,7 @@ if (current >= newMappings.count) current = 0; _mappings = newMappings; - [tableView reloadData]; - [(ApplicationController *)NSApplication.sharedApplication.delegate mappingsChanged]; + [self mappingsChanged]; [self activateMapping:_mappings[current]]; } } @@ -174,10 +191,10 @@ for (id key in entries) { NSDictionary *value = entries[key]; if ([key isKindOfClass:NSString.class]) { - Target *target = [Target targetDeserialize:value - withMappings:_mappings]; - if (target) - mapping.entries[key] = target; + NJOutput *output = [NJOutput outputDeserialize:value + withMappings:_mappings]; + if (output) + mapping.entries[key] = output; } } return mapping; @@ -230,13 +247,11 @@ mapping = mergeInto; } else { [_mappings addObject:mapping]; - [tableView reloadData]; } - [self save]; - [(ApplicationController *)NSApplication.sharedApplication.delegate mappingsChanged]; + [self mappingsChanged]; [self activateMapping:mapping]; - [targetController loadCurrent]; + [outputController loadCurrent]; if (conflict && !mergeInto) { [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:_mappings.count - 1] byExtendingSelection:NO]; @@ -284,4 +299,16 @@ }]; } +- (IBAction)mappingPressed:(id)sender { + [popover showRelativeToRect:popoverActivate.bounds ofView:popoverActivate preferredEdge:NSMinXEdge]; +} + +- (void)popoverWillShow:(NSNotification *)notification { + popoverActivate.state = NSOnState; +} + +- (void)popoverWillClose:(NSNotification *)notification { + popoverActivate.state = NSOffState; +} + @end