From 8d4373b70d74ff5903c13780f397bdbaa5ad4991 Mon Sep 17 00:00:00 2001 From: "SND\\weimingzhi_cp" Date: Thu, 29 Jul 2010 00:34:36 +0000 Subject: implemented config dialog for DFInput on OSX, removed HIDInput. git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@55259 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- macosx/plugins/DFInput/macsrc/PadView.m | 110 ++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 macosx/plugins/DFInput/macsrc/PadView.m (limited to 'macosx/plugins/DFInput/macsrc/PadView.m') diff --git a/macosx/plugins/DFInput/macsrc/PadView.m b/macosx/plugins/DFInput/macsrc/PadView.m new file mode 100644 index 00000000..b0ed273b --- /dev/null +++ b/macosx/plugins/DFInput/macsrc/PadView.m @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2010, Wei Mingzhi . + * All Rights Reserved. + * + * Based on: HIDInput by Gil Pedersen. + * Copyright (c) 2004, Gil Pedersen. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +#import "PadView.h" +#include "pad.h" + +@implementation PadView + +- (id)initWithFrame:(NSRect)frameRect +{ + if ((self = [super initWithFrame:frameRect]) != nil) { + controller = [[ControllerList alloc] initWithConfig]; + [self setController:0]; + } + return self; +} + +- (void)dealloc +{ + [controller release]; + [super dealloc]; +} + +- (void)drawRect:(NSRect)rect +{ +} + +- (IBAction)setType:(id)sender +{ + g.cfg.PadDef[[ControllerList currentController]].Type = + ([sender indexOfSelectedItem] > 0 ? PSE_PAD_TYPE_ANALOGPAD : PSE_PAD_TYPE_STANDARD); + + [tableView reloadData]; +} + +- (IBAction)setDevice:(id)sender +{ + g.cfg.PadDef[[ControllerList currentController]].DevNum = (int)[sender indexOfSelectedItem] - 1; +} + +- (void)setController:(int)which +{ + int i; + + [ControllerList setCurrentController:which]; + [tableView setDataSource:controller]; + + [deviceMenu removeAllItems]; + [deviceMenu addItemWithTitle:@"(Keyboard only)"]; + + for (i = 0; i < SDL_NumJoysticks(); i++) { + [deviceMenu addItemWithTitle:[NSString stringWithUTF8String:SDL_JoystickName(i)]]; + } + + if (g.cfg.PadDef[which].DevNum >= SDL_NumJoysticks()) { + g.cfg.PadDef[which].DevNum = -1; + } + + [deviceMenu selectItemAtIndex:g.cfg.PadDef[which].DevNum + 1]; + [typeMenu selectItemAtIndex:(g.cfg.PadDef[which].Type == PSE_PAD_TYPE_ANALOGPAD ? 1 : 0)]; + + [tableView reloadData]; +} + + +- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor +{ + return false; +} + +/* handles key events on the pad list */ +- (void)keyDown:(NSEvent *)theEvent +{ + int key = [theEvent keyCode]; + + if ([[theEvent window] firstResponder] == tableView) { + if (key == 51 || key == 117) { + // delete keys - remove the mappings for the selected item + [controller deleteRow:[tableView selectedRow]]; + [tableView reloadData]; + return; + } else if (key == 36) { + // return key - configure the selected item + [tableView editColumn:[tableView columnWithIdentifier:@"button"] row:[tableView selectedRow] withEvent:nil select:YES]; + return; + } + } + + [super keyDown:theEvent]; +} + +@end -- cgit v1.2.3