dolphin/Source/Core/DolphinWX/Src/cocoaApp.m
2010-05-26 20:54:48 +00:00

110 lines
2.2 KiB
Objective-C

#import "cocoaApp.h"
@implementation NSApplication(i)
- (void)appRunning
{
_running = 1;
}
@end
@interface cocoaAppDelegate : NSObject
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
@end
@implementation cocoaAppDelegate : NSObject
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
return NSTerminateCancel;
}
@end
void cocoaCreateApp()
{
ProcessSerialNumber psn;
NSAutoreleasePool *pool;
if (!GetCurrentProcess(&psn)) {
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
SetFrontProcess(&psn);
}
pool = [[NSAutoreleasePool alloc] init];
if (NSApp == nil) {
[NSApplication sharedApplication];
//TODO : Create menu
[NSApp finishLaunching];
}
if ([NSApp delegate] == nil) {
[NSApp setDelegate:[[cocoaAppDelegate alloc] init]];
}
[NSApp appRunning];
[pool release];
}
bool cocoaKeyCode(NSEvent *event)
{
static bool CMDDown = false, QDown = false;
bool Return = false;
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSConnection *connec = [[NSConnection new] autorelease];
[connec setRootObject: event];
if ([connec registerName: @"DolphinCocoaEvent"] == NO)
{
//printf("error creating nsconnection\n");
}
if( [event type] != NSFlagsChanged )
{
const char *Keys = [[event characters] UTF8String];
if( Keys[0] == 'q' && [event type] == NSKeyDown )
QDown = true;
if( Keys[0] == 'q' && [event type] == NSKeyUp )
QDown = false;
}
else
if( [event modifierFlags] & NSCommandKeyMask )
CMDDown = true;
else
CMDDown = false;
if( QDown && CMDDown )
Return = true;
[pool release];
return Return;
}
bool cocoaSendEvent(NSEvent *event)
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
if ( event != nil ) {
switch ([event type]) {
case NSKeyDown:
case NSKeyUp:
case NSFlagsChanged: // For Command
return cocoaKeyCode(event);
break;
default:
[NSApp sendEvent:event];
break;
}
}
[pool release];
return false;
}