#import "JSAction.h"
#import "Target.h"
#import "TargetController.h"
+#import "NJEvents.h"
@implementation JoystickController {
IOHIDManagerRef hidManager;
CFRelease(hidManager);
}
-- (void)expandRecursive:(id)handler {
- if ([handler base])
- [self expandRecursive:[handler base]];
- [outlineView expandItem:handler];
+- (void)expandRecursive:(id <NJActionPathElement>)pathElement {
+ if (pathElement) {
+ [self expandRecursive:pathElement.base];
+ [outlineView expandItem:pathElement];
+ }
}
- (void)addRunningTarget:(Target *)target {
JoystickController *controller = (__bridge JoystickController *)ctx;
IOHIDDeviceRef device = IOHIDQueueGetDevice(inSender);
- if (controller.sendingRealEvents) {
+ if (controller.translatingEvents) {
[controller runTargetForDevice:device value:value];
} else if ([NSApplication sharedApplication].mainWindow.isVisible) {
[controller showTargetForDevice:device value:value];
}
- (JSAction *)selectedAction {
- id item = [outlineView itemAtRow:outlineView.selectedRow];
- return [item children] ? nil : item;
+ id <NJActionPathElement> item = [outlineView itemAtRow:outlineView.selectedRow];
+ return (!item.children && item.base) ? item : nil;
}
-- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
- return item ? [[item children] count] : _joysticks.count;
+- (NSInteger)outlineView:(NSOutlineView *)outlineView
+ numberOfChildrenOfItem:(id <NJActionPathElement>)item {
+ return item ? item.children.count : _joysticks.count;
}
-- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
+- (BOOL)outlineView:(NSOutlineView *)outlineView
+ isItemExpandable:(id <NJActionPathElement>)item {
return item ? [[item children] count] > 0: YES;
}
-- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
- return item ? [item children][index] : _joysticks[index];
+- (id)outlineView:(NSOutlineView *)outlineView
+ child:(NSInteger)index
+ ofItem:(id <NJActionPathElement>)item {
+ return item ? item.children[index] : _joysticks[index];
}
-- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
- if(item == nil)
- return @"root";
- return [item name];
+- (id)outlineView:(NSOutlineView *)outlineView
+objectValueForTableColumn:(NSTableColumn *)tableColumn
+ byItem:(id <NJActionPathElement>)item {
+ return item ? item.name : @"root";
}
- (void)outlineViewSelectionDidChange:(NSNotification *)notification {
+
[targetController loadCurrent];
}
+- (void)setTranslatingEvents:(BOOL)translatingEvents {
+ if (translatingEvents != _translatingEvents) {
+ _translatingEvents = translatingEvents;
+ NSString *name = translatingEvents
+ ? NJEventTranslationActivated
+ : NJEventTranslationDeactivated;
+ [NSNotificationCenter.defaultCenter postNotificationName:name
+ object:self];
+ }
+}
+
@end