snes9x/macosx/mac-appleevent.mm

170 lines
4.2 KiB
Plaintext
Executable File

/*****************************************************************************\
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
This file is licensed under the Snes9x License.
For further information, consult the LICENSE file in the root directory.
\*****************************************************************************/
/***********************************************************************************
SNES9X for Mac OS (c) Copyright John Stiles
Snes9x for Mac OS X
(c) Copyright 2001 - 2011 zones
(c) Copyright 2002 - 2005 107
(c) Copyright 2002 PB1400c
(c) Copyright 2004 Alexander and Sander
(c) Copyright 2004 - 2005 Steven Seeger
(c) Copyright 2005 Ryan Vogt
(c) Copyright 2019 Michael Donald Buckley
***********************************************************************************/
#include "port.h"
#include "mac-prefix.h"
#include "mac-os.h"
#include "mac-snes9x.h"
#include "mac-appleevent.h"
static AEEventHandlerUPP oappUPP, rappUPP, pdocUPP, quitUPP, odocUPP;
static OSErr AEoapp (const AppleEvent *, AppleEvent *, long);
static OSErr AErapp (const AppleEvent *, AppleEvent *, long);
static OSErr AEpdoc (const AppleEvent *, AppleEvent *, long);
static OSErr AEquit (const AppleEvent *, AppleEvent *, long);
static OSErr AEodoc (const AppleEvent *, AppleEvent *, long);
static OSErr AEoapp (const AppleEvent *theEvent, AppleEvent *theReply, long refCon)
{
if (running)
return (noErr);
if (startopendlog)
{
if (SNES9X_OpenCart(NULL))
{
SNES9X_Go();
//QuitApplicationEventLoop();
}
else
AdjustMenus();
}
return (noErr);
}
static OSErr AErapp (const AppleEvent *theEvent, AppleEvent *theReply, long refCon)
{
if (running)
return (noErr);
if (!cartOpen)
{
if (startopendlog)
{
if (SNES9X_OpenCart(NULL))
{
SNES9X_Go();
//QuitApplicationEventLoop();
}
else
AdjustMenus();
}
}
else
{
SNES9X_Go();
//QuitApplicationEventLoop();
}
return (noErr);
}
static OSErr AEpdoc (const AppleEvent *theEvent, AppleEvent *theReply, long refCon)
{
return (errAEEventNotHandled);
}
static OSErr AEquit (const AppleEvent *theEvent, AppleEvent *theReply, long refCon)
{
if (running)
return (noErr);
SNES9X_Quit();
//QuitApplicationEventLoop();
return (noErr);
}
static OSErr AEodoc (const AppleEvent *theEvent, AppleEvent *theReply, long refCon)
{
// OSErr err;
// FSRef ref;
// AEDescList docList;
// AEKeyword keywd;
// DescType rtype;
// Size acsize;
// long count;
//
// if (running)
// return (noErr);
//
// err = AEGetParamDesc(theEvent, keyDirectObject, typeAEList, &docList);
// if (err)
// return (noErr);
//
// err = AECountItems(&docList, &count);
// if (err || (count != 1))
// {
// err = AEDisposeDesc(&docList);
// return (noErr);
// }
//
// err = AEGetNthPtr(&docList, 1, typeFSRef, &keywd, &rtype, &ref, sizeof(FSRef), &acsize);
// if (err == noErr)
// {
// if (SNES9X_OpenCart(&ref))
// {
// SNES9X_Go();
// //QuitApplicationEventLoop();
// }
// else
// AdjustMenus();
// }
//
// err = AEDisposeDesc(&docList);
//
// return (noErr);
return 0;
}
void InitAppleEvents (void)
{
// OSErr err;
//
// oappUPP = NewAEEventHandlerUPP(AEoapp);
// err = AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, oappUPP, 0L, false);
//
// odocUPP = NewAEEventHandlerUPP(AEodoc);
// err = AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments, odocUPP, 0L, false);
//
// pdocUPP = NewAEEventHandlerUPP(AEpdoc);
// err = AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments, pdocUPP, 0L, false);
//
// quitUPP = NewAEEventHandlerUPP(AEquit);
// err = AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, quitUPP, 0L, false);
//
// rappUPP = NewAEEventHandlerUPP(AErapp);
// err = AEInstallEventHandler(kCoreEventClass, kAEReopenApplication, rappUPP, 0L, false);
}
void DeinitAppleEvents (void)
{
DisposeAEEventHandlerUPP(oappUPP);
DisposeAEEventHandlerUPP(odocUPP);
DisposeAEEventHandlerUPP(pdocUPP);
DisposeAEEventHandlerUPP(quitUPP);
DisposeAEEventHandlerUPP(rappUPP);
}