-- (BOOL)tableView:(NSTableView *)tableView_
- acceptDrop:(id <NSDraggingInfo>)info
- row:(NSInteger)row
- dropOperation:(NSTableViewDropOperation)dropOperation {
- NSPasteboard *pboard = [info draggingPasteboard];
- if ([pboard.types containsObject:PB_ROW]) {
- NSString *value = [pboard stringForType:PB_ROW];
- NSUInteger srcRow = [value intValue];
- [_mappings moveObjectAtIndex:srcRow toIndex:row];
- [self mappingsChanged];
- return YES;
- } else if ([pboard.types containsObject:NSURLPboardType]) {
- NSURL *url = [NSURL URLFromPasteboard:pboard];
- NSError *error;
- NJMapping *mapping = [NJMapping mappingWithContentsOfURL:url
- mappings:_mappings
- error:&error];
- if (error) {
- [tableView_ presentError:error];
- return NO;
- } else {
- [_mappings insertObject:mapping atIndex:row];
- [self mappingsChanged];
- return YES;
- }
- } else {
- return NO;
- }
-}
-
-- (NSDragOperation)tableView:(NSTableView *)tableView_
- validateDrop:(id <NSDraggingInfo>)info
- proposedRow:(NSInteger)row
- proposedDropOperation:(NSTableViewDropOperation)dropOperation {
- NSPasteboard *pboard = [info draggingPasteboard];
- if ([pboard.types containsObject:PB_ROW]) {
- [tableView_ setDropRow:MAX(1, row) dropOperation:NSTableViewDropAbove];
- return NSDragOperationMove;
- } else if ([pboard.types containsObject:NSURLPboardType]) {
- NSURL *url = [NSURL URLFromPasteboard:pboard];
- if ([url.pathExtension isEqualToString:@"enjoyable"]) {
- [tableView_ setDropRow:MAX(1, row) dropOperation:NSTableViewDropAbove];
- return NSDragOperationCopy;
- } else {
- return NSDragOperationNone;
- }
- } else {
- return NSDragOperationNone;
- }
+- (void)removeMappingAtIndex:(NSInteger)idx {
+ NSInteger currentIdx = [self indexOfMapping:_currentMapping];
+ [_mappings removeObjectAtIndex:idx];
+ [self activateMapping:self[MIN(currentIdx, _mappings.count - 1)]];
+ [self mappingsChanged];