Change two-pass behavior for loading mappings. Allow lazy binding of mappings by...
[enjoyable.git] / Classes / NJOutputController.m
index 6ae58d4..fd160e6 100644 (file)
@@ -53,8 +53,8 @@
     if (row != 2) {
         [mappingPopup selectItemAtIndex:-1];
         [mappingPopup resignIfFirstResponder];
-    } else if (!mappingPopup.selectedItem)
-        [mappingPopup selectItemAtIndex:0];
+        unknownMapping.hidden = YES;
+    }
     
     if (row != 3) {
         mouseDirSelect.selectedSegment = -1;
 - (void)mappingChosen:(id)sender {
     [radioButtons selectCellAtRow:2 column:0];
     [mappingPopup.window makeFirstResponder:mappingPopup];
+    unknownMapping.hidden = YES;
     [self commit];
 }
 
         case 1:
             if (keyInput.hasKeyCode) {
                 NJOutputKeyPress *k = [[NJOutputKeyPress alloc] init];
-                k.vk = keyInput.keyCode;
+                k.keyCode = keyInput.keyCode;
                 return k;
             } else {
                 return nil;
     scrollDirSelect.enabled = enabled;
     smoothCheck.enabled = enabled;
     scrollSpeedSlider.enabled = enabled && smoothCheck.state;
+    if (!enabled)
+        unknownMapping.hidden = YES;
 }
 
 - (void)loadOutput:(NJOutput *)output forInput:(NJInput *)input {
     } else {
         self.enabled = YES;
         NSString *inpFullName = input.name;
-        for (id <NJInputPathElement> cur = input.base; cur; cur = cur.base) {
+        for (NJInputPathElement *cur = input.parent; cur; cur = cur.parent) {
             inpFullName = [[NSString alloc] initWithFormat:@"%@ ▸ %@", cur.name, inpFullName];
         }
         title.stringValue = inpFullName;
 
     if ([output isKindOfClass:NJOutputKeyPress.class]) {
         [radioButtons selectCellAtRow:1 column:0];
-        keyInput.keyCode = [(NJOutputKeyPress*)output vk];
+        keyInput.keyCode = [(NJOutputKeyPress*)output keyCode];
     } else if ([output isKindOfClass:NJOutputMapping.class]) {
         [radioButtons selectCellAtRow:2 column:0];
         NSMenuItem *item = [mappingPopup itemWithRepresentedObject:[(NJOutputMapping *)output mapping]];
         [mappingPopup selectItem:item];
-        if (!item)
-            [radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0];
+        unknownMapping.hidden = !!item;
+        unknownMapping.title = [(NJOutputMapping *)output mappingName];
     }
     else if ([output isKindOfClass:NJOutputMouseMove.class]) {
         [radioButtons selectCellAtRow:3 column:0];