Rename 'stringify' to 'uid' where it pertains to unique action IDs.
[enjoyable.git] / TargetController.m
index 9b075a1..074c487 100644 (file)
        [[[NSApplication sharedApplication] mainWindow] makeFirstResponder: sender];
        [self commit];
 }
+-(IBAction)mdirChanged:(id)sender {
+    [radioButtons setState: 1 atRow: 3 column: 0];
+       [[[NSApplication sharedApplication] mainWindow] makeFirstResponder: sender];
+       [self commit];
+}
 -(IBAction)mbtnChanged:(id)sender {
+    [radioButtons setState: 1 atRow: 4 column: 0];
+       [[[NSApplication sharedApplication] mainWindow] makeFirstResponder: sender];
+       [self commit];
+}
+-(IBAction)sdirChanged:(id)sender {
     [radioButtons setState: 1 atRow: 5 column: 0];
        [[[NSApplication sharedApplication] mainWindow] makeFirstResponder: sender];
        [self commit];
@@ -27,7 +37,7 @@
                case 0: // none
                        return NULL;
                case 1: // key
-                       if([keyInput hasKey]) {
+                       if(keyInput.hasKey) {
                                TargetKeyboard* k = [[TargetKeyboard alloc] init];
                                [k setVk: [keyInput vk]];
                                [k setDescr: [keyInput descr]];
                case 2:
                {
                        TargetConfig* c = [[TargetConfig alloc] init];
-                       [c setConfig: [[configsController configs] objectAtIndex: [configPopup indexOfSelectedItem]]];
+                       [c setConfig: [configsController configs][[configPopup indexOfSelectedItem]]];
                        return c;
                }
         case 3: {
-            // mouse X
+            // mouse X/Y
             TargetMouseMove *mm = [[TargetMouseMove alloc] init];
-            [mm setDir: 0];
+            [mm setDir: [mouseDirSelect selectedSegment]];
             return mm;
         }
         case 4: {
-            // mouse Y
-            TargetMouseMove *mm = [[TargetMouseMove alloc] init];
-            [mm setDir: 1];
-            return mm;
-        }
-        case 5: {
             // mouse button
             TargetMouseBtn *mb = [[TargetMouseBtn alloc] init];
             if ([mouseBtnSelect selectedSegment] == 0) {
             }
             return mb;
         }
+        case 5: {
+            // scroll
+            TargetMouseScroll *ms = [[TargetMouseScroll alloc] init];
+            if ([scrollDirSelect selectedSegment] == 0) {
+                [ms setHowMuch: -1];
+            }
+            else {
+                [ms setHowMuch: 1];
+            }
+            return ms;
+        }
+        case 6: {
+            // toggle mouse scope
+            TargetToggleMouseScope *tms = [[TargetToggleMouseScope alloc] init];
+            return tms;
+        }
        }
        return NULL;
 }
 }
 
 -(void) commit {
-       id action = [joystickController selectedAction];
-       if(action) {
-               Target* target = [self state];
-               [[configsController currentConfig] setTarget: target forAction: action];
+       JSAction *action = [joystickController selectedAction];
+       if (action) {
+        configsController.currentConfig[action] = self.state;
        }
 }
 
 -(void) reset {
        [keyInput clear];
        [radioButtons setState: 1 atRow: 0 column: 0];
+    [mouseDirSelect setSelectedSegment: 0];
     [mouseBtnSelect setSelectedSegment: 0];
+    [scrollDirSelect setSelectedSegment: 0];
        [self refreshConfigsPreservingSelection: NO];
 }
 
        [radioButtons setEnabled: enabled];
        [keyInput setEnabled: enabled];
        [configPopup setEnabled: enabled];
+    [mouseDirSelect setEnabled: enabled];
     [mouseBtnSelect setEnabled: enabled];
+    [scrollDirSelect setEnabled: enabled];
 }
 -(BOOL) enabled {
        return [radioButtons isEnabled];
        } else {
                [self setEnabled: YES];
        }
-       Target* target = [[configsController currentConfig] getTargetForAction: jsaction];
+       Target* target = configsController.currentConfig[jsaction];
        
        id act = jsaction;
        NSString* actFullName = [act name];
                [configPopup selectItemAtIndex: [[configsController configs] indexOfObject: [(TargetConfig*)target config]]];
     }
     else if ([target isKindOfClass: [TargetMouseMove class]]) {
-        if ([(TargetMouseMove *)target dir] == 0)
-            [radioButtons setState:1 atRow: 3 column: 0];
-        else
-            [radioButtons setState:1 atRow: 4 column: 0];
+        [radioButtons setState:1 atRow: 3 column: 0];
+        [mouseDirSelect setSelectedSegment: [(TargetMouseMove *)target dir]];
        }
     else if ([target isKindOfClass: [TargetMouseBtn class]]) {
-        [radioButtons setState: 1 atRow: 5 column: 0];
+        [radioButtons setState: 1 atRow: 4 column: 0];
         if ([(TargetMouseBtn *)target which] == kCGMouseButtonLeft)
             [mouseBtnSelect setSelectedSegment: 0];
         else
             [mouseBtnSelect setSelectedSegment: 1];
+    }
+    else if ([target isKindOfClass: [TargetMouseScroll class]]) {
+        [radioButtons setState: 1 atRow: 5 column: 0];
+        if ([(TargetMouseScroll *)target howMuch] < 0)
+            [scrollDirSelect setSelectedSegment: 0];
+        else
+            [scrollDirSelect setSelectedSegment: 1];
+    }
+    else if ([target isKindOfClass: [TargetToggleMouseScope class]]) {
+        [radioButtons setState: 1 atRow: 6 column: 0];
     } else {
                [NSException raise:@"Unknown target subclass" format:@"Unknown target subclass"];
        }
        NSArray* configs = [configsController configs];
        [configPopup removeAllItems];
        for(int i=0; i<[configs count]; i++) {
-               [configPopup addItemWithTitle: [[configs objectAtIndex:i]name]];
+               [configPopup addItemWithTitle: [configs[i]name]];
        }
        if(preserve)
                [configPopup selectItemAtIndex:initialIndex];