Scrolling, mouse scope, icon
[enjoyable.git] / TargetController.m
index 9b075a1..3442a61 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];
                        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) 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];
                [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"];
        }