selector:@selector(mappingListDidChange:)
name:NJEventMappingListChanged
object:nil];
+ [NSNotificationCenter.defaultCenter
+ addObserver:self
+ selector:@selector(mappingDidChange:)
+ name:NJEventMappingChanged
+ object:nil];
}
return self;
}
if (row != 5) {
scrollDirSelect.selectedSegment = -1;
scrollSpeedSlider.floatValue = scrollSpeedSlider.minValue;
+ smoothCheck.state = NSOffState;
[scrollDirSelect resignIfFirstResponder];
+ [scrollSpeedSlider resignIfFirstResponder];
+ [smoothCheck resignIfFirstResponder];
} else {
if (scrollDirSelect.selectedSegment == -1)
scrollDirSelect.selectedSegment = 0;
- if (scrollDirSelect.selectedSegment < 2
- && !scrollSpeedSlider.floatValue)
- scrollSpeedSlider.floatValue = 15;
- else if (scrollDirSelect.selectedSegment >= 2
- && scrollSpeedSlider.floatValue)
- scrollSpeedSlider.floatValue = scrollSpeedSlider.minValue;
}
}
- (void)sdirChanged:(NSView *)sender {
[radioButtons selectCellAtRow:5 column:0];
- if (scrollDirSelect.selectedSegment >= 2)
- scrollSpeedSlider.floatValue = 0;
[sender.window makeFirstResponder:sender];
[self commit];
}
- (void)scrollSpeedChanged:(NSSlider *)sender {
[radioButtons selectCellAtRow:5 column:0];
[sender.window makeFirstResponder:sender];
- if (!sender.floatValue && scrollDirSelect.selectedSegment < 2)
- scrollDirSelect.selectedSegment += 2;
- else if (sender.floatValue && scrollDirSelect.selectedSegment >= 2)
- scrollDirSelect.selectedSegment -= 2;
+ [self commit];
+}
+
+- (IBAction)scrollTypeChanged:(NSButton *)sender {
+ [radioButtons selectCellAtRow:5 column:0];
+ [sender.window makeFirstResponder:sender];
+ if (sender.state == NSOnState) {
+ scrollSpeedSlider.floatValue =
+ scrollSpeedSlider.minValue + (scrollSpeedSlider.maxValue - scrollSpeedSlider.minValue) / 2;
+ scrollSpeedSlider.enabled = YES;
+ } else {
+ scrollSpeedSlider.floatValue = scrollSpeedSlider.minValue;
+ scrollSpeedSlider.enabled = NO;
+ }
[self commit];
}
}
case 4: {
NJOutputMouseButton *mb = [[NJOutputMouseButton alloc] init];
- mb.humanIndexedButton = mouseBtnSelect.selectedSegment;
+ mb.button = [mouseBtnSelect.cell tagForSegment:mouseBtnSelect.selectedSegment];
return mb;
}
case 5: {
NJOutputMouseScroll *ms = [[NJOutputMouseScroll alloc] init];
- ms.direction = (scrollDirSelect.selectedSegment & 1) ? 1 : -1;
- ms.speed = scrollDirSelect.selectedSegment < 2
- ? scrollSpeedSlider.floatValue
- : 0.f;
+ ms.direction = [scrollDirSelect.cell tagForSegment:scrollDirSelect.selectedSegment];
+ ms.speed = scrollSpeedSlider.floatValue;
+ ms.smooth = smoothCheck.state == NSOnState;
return ms;
}
default:
}
- (BOOL)enabled {
- return [radioButtons isEnabled];
+ return radioButtons.isEnabled;
}
- (void)setEnabled:(BOOL)enabled {
- [radioButtons setEnabled:enabled];
- [keyInput setEnabled:enabled];
- [mappingPopup setEnabled:enabled];
- [mouseDirSelect setEnabled:enabled];
- [mouseSpeedSlider setEnabled:enabled];
- [mouseBtnSelect setEnabled:enabled];
- [scrollDirSelect setEnabled:enabled];
- [scrollSpeedSlider setEnabled:enabled];
+ radioButtons.enabled = enabled;
+ keyInput.enabled = enabled;
+ mappingPopup.enabled = enabled;
+ mouseDirSelect.enabled = enabled;
+ mouseSpeedSlider.enabled = enabled;
+ mouseBtnSelect.enabled = enabled;
+ scrollDirSelect.enabled = enabled;
+ smoothCheck.enabled = enabled;
+ scrollSpeedSlider.enabled = enabled && smoothCheck.state;
}
- (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) {
- inpFullName = [[NSString alloc] initWithFormat:@"%@ > %@", cur.name, inpFullName];
+ for (NJInputPathElement *cur = input.parent; cur; cur = cur.parent) {
+ inpFullName = [[NSString alloc] initWithFormat:@"%@ ▸ %@", cur.name, inpFullName];
}
title.stringValue = inpFullName;
}
}
else if ([output isKindOfClass:NJOutputMouseButton.class]) {
[radioButtons selectCellAtRow:4 column:0];
- mouseBtnSelect.selectedSegment = [(NJOutputMouseButton *)output humanIndexedButton];
+ [mouseBtnSelect selectSegmentWithTag:[(NJOutputMouseButton *)output button]];
}
else if ([output isKindOfClass:NJOutputMouseScroll.class]) {
[radioButtons selectCellAtRow:5 column:0];
int direction = [(NJOutputMouseScroll *)output direction];
float speed = [(NJOutputMouseScroll *)output speed];
- scrollDirSelect.selectedSegment = (direction > 0) + !speed * 2;
+ BOOL smooth = [(NJOutputMouseScroll *)output smooth];
+ [scrollDirSelect selectSegmentWithTag:direction];
scrollSpeedSlider.floatValue = speed;
+ smoothCheck.state = smooth ? NSOnState : NSOffState;
+ scrollSpeedSlider.enabled = smooth;
} else {
[radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0];
}
}
- (void)mappingListDidChange:(NSNotification *)note {
- NSArray *mappings = note.object;
+ NSArray *mappings = note.userInfo[NJMappingListKey];
NJMapping *current = mappingPopup.selectedItem.representedObject;
[mappingPopup.menu removeAllItems];
for (NJMapping *mapping in mappings) {
[mappingPopup selectItemWithRepresentedObject:current];
}
+- (void)mappingDidChange:(NSNotification *)note {
+ [self loadCurrent];
+}
+
@end