summaryrefslogtreecommitdiff
path: root/macosx/plugins/DFInput/macsrc/PadView.m
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-07-29 00:34:36 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-07-29 00:34:36 +0000
commit8d4373b70d74ff5903c13780f397bdbaa5ad4991 (patch)
treea329eae7b9c41010d23dd41300a3b1317ccbca9f /macosx/plugins/DFInput/macsrc/PadView.m
parentdf065b4bf4205db561a5fe7d5652352f6046e40f (diff)
downloadpcsxr-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.m110
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