95 lines
2.0 KiB
Objective-C
95 lines
2.0 KiB
Objective-C
/*******************************
|
|
Mac support for HID Test GUI
|
|
|
|
Alan Ott
|
|
Signal 11 Software
|
|
*******************************/
|
|
|
|
#include <fx.h>
|
|
#import <Cocoa/Cocoa.h>
|
|
|
|
extern FXMainWindow *g_main_window;
|
|
|
|
|
|
@interface MyAppDelegate : NSObject
|
|
{
|
|
}
|
|
@end
|
|
|
|
@implementation MyAppDelegate
|
|
- (void) applicationWillBecomeActive:(NSNotification*)notif
|
|
{
|
|
printf("WillBecomeActive\n");
|
|
g_main_window->show();
|
|
|
|
}
|
|
|
|
- (void) applicationWillTerminate:(NSNotification*)notif
|
|
{
|
|
/* Doesn't get called. Not sure why */
|
|
printf("WillTerminate\n");
|
|
FXApp::instance()->exit();
|
|
}
|
|
|
|
- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication*)sender
|
|
{
|
|
/* Doesn't get called. Not sure why */
|
|
printf("ShouldTerminate\n");
|
|
return YES;
|
|
}
|
|
|
|
- (void) applicationWillHide:(NSNotification*)notif
|
|
{
|
|
printf("WillHide\n");
|
|
g_main_window->hide();
|
|
}
|
|
|
|
- (void) handleQuitEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent
|
|
{
|
|
printf("QuitEvent\n");
|
|
FXApp::instance()->exit();
|
|
}
|
|
|
|
@end
|
|
|
|
extern "C" {
|
|
|
|
void
|
|
init_apple_message_system()
|
|
{
|
|
static MyAppDelegate *d = [MyAppDelegate new];
|
|
|
|
[[NSApplication sharedApplication] setDelegate:d];
|
|
|
|
/* Register for Apple Events. */
|
|
/* This is from
|
|
http://stackoverflow.com/questions/1768497/application-exit-event */
|
|
NSAppleEventManager *aem = [NSAppleEventManager sharedAppleEventManager];
|
|
[aem setEventHandler:d
|
|
andSelector:@selector(handleQuitEvent:withReplyEvent:)
|
|
forEventClass:kCoreEventClass andEventID:kAEQuitApplication];
|
|
}
|
|
|
|
void
|
|
check_apple_events()
|
|
{
|
|
NSApplication *app = [NSApplication sharedApplication];
|
|
|
|
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
|
while (1) {
|
|
NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask
|
|
untilDate:nil
|
|
inMode:NSDefaultRunLoopMode
|
|
dequeue:YES];
|
|
if (event == NULL)
|
|
break;
|
|
else {
|
|
//printf("Event happened: Type: %d\n", event->_type);
|
|
[app sendEvent: event];
|
|
}
|
|
}
|
|
[pool release];
|
|
}
|
|
|
|
} /* extern "C" */
|