X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=TargetController.m;h=48119c20e45e28dea3b812590fdeb1b2d37c5bdb;hp=9aad491d17eb41a936d21e08f37e4eda7ef781fe;hb=4a490c57151dd4ba9cb27cc34a0e33fc68fc4d24;hpb=62aa5b73be6ec1e499e6b155cd0e7687c338cbaa diff --git a/TargetController.m b/TargetController.m index 9aad491..48119c2 100644 --- a/TargetController.m +++ b/TargetController.m @@ -11,7 +11,7 @@ #import "Config.h" #import "JSAction.h" #import "JoystickController.h" -#import "KeyInputTextView.h" +#import "NJKeyInputField.h" #import "TargetConfig.h" #import "TargetController.h" #import "TargetKeyboard.h" @@ -26,7 +26,7 @@ NSInteger row = radioButtons.selectedRow; if (row != 1) { - keyInput.vk = -1; + keyInput.keyCode = -1; [keyInput resignIfFirstResponder]; } @@ -62,12 +62,17 @@ [self commit]; } -- (void)keyChanged { +- (void)keyInputField:(NJKeyInputField *)keyInput didChangeKey:(CGKeyCode)keyCode { [radioButtons selectCellAtRow:1 column:0]; [radioButtons.window makeFirstResponder:radioButtons]; [self commit]; } +- (void)keyInputFieldDidClear:(NJKeyInputField *)keyInput { + [radioButtons selectCellAtRow:0 column:0]; + [self commit]; +} + - (void)configChosen:(id)sender { [radioButtons selectCellAtRow:2 column:0]; [configPopup.window makeFirstResponder:configPopup]; @@ -101,9 +106,9 @@ case 0: return nil; case 1: - if (keyInput.hasKey) { + if (keyInput.hasKeyCode) { TargetKeyboard *k = [[TargetKeyboard alloc] init]; - k.vk = keyInput.vk; + k.vk = keyInput.keyCode; return k; } else { return nil; @@ -164,33 +169,38 @@ } else { self.enabled = YES; NSString *actFullName = action.name; - for (JSAction *cur = action.base; cur; cur = cur.base) { + for (id cur = action.base; cur; cur = cur.base) { actFullName = [[NSString alloc] initWithFormat:@"%@ > %@", cur.name, actFullName]; } title.stringValue = [[NSString alloc] initWithFormat:@"%@ > %@", configsController.currentConfig.name, actFullName]; } - if ([target isKindOfClass:[TargetKeyboard class]]) { + if ([target isKindOfClass:TargetKeyboard.class]) { [radioButtons selectCellAtRow:1 column:0]; - keyInput.vk = [(TargetKeyboard*)target vk]; - } else if ([target isKindOfClass:[TargetConfig class]]) { + keyInput.keyCode = [(TargetKeyboard*)target vk]; + } else if ([target isKindOfClass:TargetConfig.class]) { [radioButtons selectCellAtRow:2 column:0]; - [configPopup selectItemAtIndex:[configsController.configs - indexOfObject:[(TargetConfig *)target config]]]; + NSUInteger idx = [configsController.configs + indexOfObject:[(TargetConfig *)target config]]; + if (idx == NSNotFound) { + [radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0]; + [configPopup selectItemAtIndex:-1]; + } else + [configPopup selectItemAtIndex:idx]; } - else if ([target isKindOfClass:[TargetMouseMove class]]) { + else if ([target isKindOfClass:TargetMouseMove.class]) { [radioButtons selectCellAtRow:3 column:0]; [mouseDirSelect setSelectedSegment:[(TargetMouseMove *)target axis]]; } - else if ([target isKindOfClass:[TargetMouseBtn class]]) { + else if ([target isKindOfClass:TargetMouseBtn.class]) { [radioButtons selectCellAtRow:4 column:0]; mouseBtnSelect.selectedSegment = [(TargetMouseBtn *)target button] == kCGMouseButtonLeft ? 0 : 1; } - else if ([target isKindOfClass:[TargetMouseScroll class]]) { + else if ([target isKindOfClass:TargetMouseScroll.class]) { [radioButtons selectCellAtRow:5 column:0]; scrollDirSelect.selectedSegment = [(TargetMouseScroll *)target amount] > 0; } - else if ([target isKindOfClass:[TargetToggleMouseScope class]]) { + else if ([target isKindOfClass:TargetToggleMouseScope.class]) { [radioButtons selectCellAtRow:6 column:0]; } else { [radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0]; @@ -199,7 +209,7 @@ } - (void)loadCurrent { - [self loadTarget:[self currentTarget] forAction:joystickController.selectedAction]; + [self loadTarget:self.currentTarget forAction:joystickController.selectedAction]; } - (void)focusKey { @@ -210,11 +220,15 @@ } - (void)refreshConfigs { - // TODO: This doesn't work when removing configs. NSInteger initialIndex = configPopup.indexOfSelectedItem; - [configPopup removeAllItems]; - for (Config *config in configsController.configs) - [configPopup addItemWithTitle:config.name]; + [configPopup.menu removeAllItems]; + for (Config *config in configsController.configs) { + NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:config.name + action:@selector(configChosen:) + keyEquivalent:@""]; + item.target = self; + [configPopup.menu addItem:item]; + } [configPopup selectItemAtIndex:initialIndex]; }