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/PadController.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/PadController.m')
| -rw-r--r-- | macosx/plugins/DFInput/macsrc/PadController.m | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/macosx/plugins/DFInput/macsrc/PadController.m b/macosx/plugins/DFInput/macsrc/PadController.m new file mode 100644 index 00000000..06bce2eb --- /dev/null +++ b/macosx/plugins/DFInput/macsrc/PadController.m @@ -0,0 +1,138 @@ +/* + * 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 <Cocoa/Cocoa.h> +#import "PadController.h" +#include "pad.h" + +static NSWindow *padWindow; +static PadController *padController; + +#define APP_ID @"net.pcsx.DFInputPlugin" + +void DoAbout() { + // Get parent application instance + NSApplication *app = [NSApplication sharedApplication]; + NSBundle *bundle = [NSBundle bundleWithIdentifier:APP_ID]; + + // Get Credits.rtf + NSString *path = [bundle pathForResource:@"Credits" ofType:@"rtf"]; + NSAttributedString *credits; + if (path) { + credits = [[[NSAttributedString alloc] initWithPath: path + documentAttributes:NULL] autorelease]; + } else { + credits = [[[NSAttributedString alloc] initWithString:@""] autorelease]; + } + + // Get Application Icon + NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:[bundle bundlePath]]; + NSSize size = NSMakeSize(64, 64); + [icon setSize:size]; + + [app orderFrontStandardAboutPanelWithOptions:[NSDictionary dictionaryWithObjectsAndKeys: + [bundle objectForInfoDictionaryKey:@"CFBundleName"], @"ApplicationName", + icon, @"ApplicationIcon", + [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"], @"ApplicationVersion", + [bundle objectForInfoDictionaryKey:@"CFBundleVersion"], @"Version", + [bundle objectForInfoDictionaryKey:@"NSHumanReadableCopyright"], @"Copyright", + credits, @"Credits", nil]]; +} + +long DoConfiguration() { + SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE); + LoadPADConfig(); + + if (padWindow == nil) { + if (padController == nil) { + padController = [[PadController alloc] initWithWindowNibName:@"NetPcsxHIDInputPluginMain"]; + } + padWindow = [padController window]; + } + + [padWindow center]; + [padWindow makeKeyAndOrderFront:nil]; + + return 0; +} + +@implementation PadController + +- (IBAction)cancel:(id)sender +{ + SDL_Quit(); + [self close]; +} + +- (IBAction)ok:(id)sender +{ + SavePADConfig(); + SDL_Quit(); + [self close]; +} + +- (void)awakeFromNib +{ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowWillClose:) + name:NSWindowWillCloseNotification object:[self window]]; + + [controllerView1 addSubview: controllerView]; + [controllerView setController:0]; +} + +- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem +{ + PadView *newView = nil; + if ([[tabViewItem identifier] isEqualToString:@"pad1"]) + newView = controllerView1; + else if ([[tabViewItem identifier] isEqualToString:@"pad2"]) + newView = controllerView2; + + if (nil != newView) { + [controllerView removeFromSuperviewWithoutNeedingDisplay]; + [newView addSubview: controllerView]; + [controllerView setFrame:[newView frame]]; + [controllerView setController:[newView isEqual:controllerView1] ? 0 : 1]; + } +} + +- (void)windowBecameKey:(NSNotification *)notification +{ + if ([[controllerView1 subviews] count] > 0) + [controllerView setController:0]; + else if ([[controllerView2 subviews] count] > 0) + [controllerView setController:1]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:NSWindowDidBecomeKeyNotification object:[self window]]; +} + +- (void)windowWillClose:(NSNotification *)aNotification +{ + if ([aNotification object] == [self window]) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowBecameKey:) + name:NSWindowDidBecomeKeyNotification object:[self window]]; + } +} + +@end
\ No newline at end of file |
