Scrolling, mouse scope, icon
[enjoyable.git] / TargetController.m
index 70dc1e8..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];
+}
 
 
 -(Target*) state {
                        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];
-            [mb setWhich: [mouseBtnRadio selectedCol]];
+            if ([mouseBtnSelect selectedSegment] == 0) {
+                [mb setWhich: kCGMouseButtonLeft];
+            }
+            else {
+                [mb setWhich: kCGMouseButtonRight];
+            }
             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];
        } else if([target isKindOfClass: [TargetConfig class]]) {
                [radioButtons setState:1 atRow: 2 column: 0];
                [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 if ([target isKindOfClass: [TargetMouseMove class]]) {
+        [radioButtons setState:1 atRow: 3 column: 0];
+        [mouseDirSelect setSelectedSegment: [(TargetMouseMove *)target dir]];
+       }
+    else if ([target isKindOfClass: [TargetMouseBtn class]]) {
+        [radioButtons setState: 1 atRow: 4 column: 0];
+        if ([(TargetMouseBtn *)target which] == kCGMouseButtonLeft)
+            [mouseBtnSelect setSelectedSegment: 0];
         else
-            [radioButtons setState:1 atRow: 4 column: 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"];
        }
 }