00001
00002
00003
00004
00005
00006
00007
00008
00009 #import "KeyMapTableDataSource.h"
00010
00011
00012 @implementation KeyMapTableDataSource
00013
00014 - (id) init {
00015 self = [super init];
00016 if (self != nil) {
00017
00018 myMap = [[MTKeyMap alloc] init];
00019
00020 [NSThread detachNewThreadSelector:@selector(readDefaultKeyMap) toTarget:myMap withObject:nil];
00021
00022 }
00023 return self;
00024 }
00025
00026 - (MTKeyMap *) keyMap {
00027 return myMap;
00028 }
00029
00030 - (int)numberOfRowsInTableView:(NSTableView *)aTableView {
00031
00032 if (keyMapTableView == aTableView) {
00033 return [myMap count];
00034 }
00035 return 0;
00036 }
00037
00038 - (id)tableView:(NSTableView *)aTableView
00039 objectValueForTableColumn:(NSTableColumn *)aTableColumn
00040 row:(int)rowIndex {
00041
00042 if (keyMapTableView == aTableView) {
00043 NSArray *actionKeys = [myMap allKeys];
00044 int action = [[actionKeys objectAtIndex:rowIndex] intValue];
00045 if ([[aTableColumn identifier] isEqualTo: @"description"]) {
00046 return [myMap descriptionForAction:action];
00047 } else if ([[aTableColumn identifier] isEqualTo: @"key"]) {
00048 return [NSString stringWithFormat:@"%c", [myMap keyForAction:action]];
00049 } else {
00050 return @"ERROR";
00051 }
00052 }
00053 return @"ERROR";
00054 }
00055
00056
00057 - (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
00058 if ([[aTableColumn identifier] isEqualToString:@"description"]) {
00059 return NO;
00060 } else {
00061 return YES;
00062 }
00063 }
00064
00065 - (void)tableView:(NSTableView *)tableView setObjectValue:(id)object
00066 forTableColumn:(NSTableColumn *)column row:(int)row {
00067
00068
00069 if (tableView == keyMapTableView) {
00070 NSArray *actionKeys = [myMap allKeys];
00071 int action = [[actionKeys objectAtIndex:row] intValue];
00072
00073
00074 if ([object length] == 1) {
00075 NSString *newkey = object;
00076 char c = [newkey characterAtIndex:0];
00077 [myMap setKey:c forAction:action];
00078 }
00079 }
00080 }
00081
00082
00083 @end