#import "NJMappingsController.h"
#import "NJMapping.h"
#import "NJInput.h"
+#import "NJEvents.h"
#import "NJDeviceController.h"
#import "NJKeyInputField.h"
#import "NJOutputMapping.h"
@implementation NJOutputController
+- (id)init {
+ if ((self = [super init])) {
+ [NSNotificationCenter.defaultCenter
+ addObserver:self
+ selector:@selector(mappingListDidChange:)
+ name:NJEventMappingListChanged
+ object:nil];
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [NSNotificationCenter.defaultCenter removeObserver:self];
+}
+
- (void)cleanUpInterface {
NSInteger row = radioButtons.selectedRow;
keyInput.keyCode = [(NJOutputKeyPress*)output vk];
} else if ([output isKindOfClass:NJOutputMapping.class]) {
[radioButtons selectCellAtRow:2 column:0];
- NSUInteger idx = [mappingPopup indexOfItemWithRepresentedObject:[(NJOutputMapping *)output mapping]];
- if (idx == NSNotFound) {
+ NSMenuItem *item = [mappingPopup itemWithRepresentedObject:[(NJOutputMapping *)output mapping]];
+ [mappingPopup selectItem:item];
+ if (!item)
[radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0];
- [mappingPopup selectItemAtIndex:-1];
- } else
- [mappingPopup selectItemAtIndex:idx];
}
else if ([output isKindOfClass:NJOutputMouseMove.class]) {
[radioButtons selectCellAtRow:3 column:0];
[keyInput resignIfFirstResponder];
}
-- (void)refreshMappings {
+- (void)mappingListDidChange:(NSNotification *)note {
+ NSArray *mappings = note.object;
NJMapping *current = mappingPopup.selectedItem.representedObject;
[mappingPopup.menu removeAllItems];
- for (NJMapping *mapping in mappingsController) {
+ for (NJMapping *mapping in mappings) {
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:mapping.name
action:@selector(mappingChosen:)
keyEquivalent:@""];
item.representedObject = mapping;
[mappingPopup.menu addItem:item];
}
- [mappingPopup selectItemAtIndex:[mappingPopup indexOfItemWithRepresentedObject:current]];
+ [mappingPopup selectItemWithRepresentedObject:current];
}
@end