X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=JoystickController.m;h=2efd68f34586384d64133025c9bd923ef5af3c1d;hp=cd513de0dde7024c2cc5c9144db16ef1f99818b6;hb=f563321aec9e13b8479ab3b890a9179f095a8b17;hpb=03b4a589de71a49ad00450701630673631e88647 diff --git a/JoystickController.m b/JoystickController.m index cd513de..2efd68f 100644 --- a/JoystickController.m +++ b/JoystickController.m @@ -13,6 +13,7 @@ #import "JSAction.h" #import "Target.h" #import "TargetController.h" +#import "NJEvents.h" @implementation JoystickController { IOHIDManagerRef hidManager; @@ -35,10 +36,11 @@ CFRelease(hidManager); } -- (void)expandRecursive:(id)handler { - if ([handler base]) - [self expandRecursive:[handler base]]; - [outlineView expandItem:handler]; +- (void)expandRecursive:(id )pathElement { + if (pathElement) { + [self expandRecursive:pathElement.base]; + [outlineView expandItem:pathElement]; + } } - (void)addRunningTarget:(Target *)target { @@ -84,7 +86,7 @@ static void input_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDVa 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]; @@ -177,7 +179,10 @@ static void remove_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDD informativeTextWithFormat:@"Error 0x%08x occured trying to access your devices. " @"Input may not be correctly detected or mapped.", ret] - runModal]; + beginSheetModalForWindow:outlineView.window + modalDelegate:nil + didEndSelector:nil + contextInfo:nil]; } IOHIDManagerRegisterDeviceMatchingCallback(hidManager, add_callback, (__bridge void *)self); @@ -185,30 +190,46 @@ static void remove_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDD } - (JSAction *)selectedAction { - id item = [outlineView itemAtRow:outlineView.selectedRow]; - return [item children] ? nil : item; + id item = [outlineView itemAtRow:outlineView.selectedRow]; + return (!item.children && item.base) ? item : nil; } -- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { - return item ? [[item children] count] : _joysticks.count; +- (NSInteger)outlineView:(NSOutlineView *)outlineView + numberOfChildrenOfItem:(id )item { + return item ? item.children.count : _joysticks.count; } -- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { +- (BOOL)outlineView:(NSOutlineView *)outlineView + isItemExpandable:(id )item { return item ? [[item children] count] > 0: YES; } -- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item { - return item ? [item children][index] : _joysticks[index]; +- (id)outlineView:(NSOutlineView *)outlineView + child:(NSInteger)index + ofItem:(id )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 )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