diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-07-29 00:34:36 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-07-29 00:34:36 +0000 |
| commit | 8d4373b70d74ff5903c13780f397bdbaa5ad4991 (patch) | |
| tree | a329eae7b9c41010d23dd41300a3b1317ccbca9f /macosx/plugins/DFInput/macsrc/PadView.m | |
| parent | df065b4bf4205db561a5fe7d5652352f6046e40f (diff) | |
| download | pcsxr-8d4373b70d74ff5903c13780f397bdbaa5ad4991.tar.gz | |
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
Diffstat (limited to 'macosx/plugins/DFInput/macsrc/PadView.m')
| -rw-r--r-- | macosx/plugins/DFInput/macsrc/PadView.m | 110 |
1 files changed, 110 insertions, 0 deletions
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 <whistler@openoffice.org>. + * 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 <http://www.gnu.org/licenses>. + */ + +#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 |
