mirror of
https://github.com/softdorothy/GliderPRO.git
synced 2024-11-26 02:49:20 +00:00
1 line
5.7 KiB
C
1 line
5.7 KiB
C
|
//============================================================================
//----------------------------------------------------------------------------
// AppleEvents.c
//----------------------------------------------------------------------------
//============================================================================
#include "Externs.h"
#include <AppleEvents.h>
#include "House.h"
#define kNoPrintingAlert 1031
pascal OSErr DoOpenAppAE (const AppleEvent *, AppleEvent *, UInt32);
pascal OSErr DoOpenDocAE (const AppleEvent *, AppleEvent *, UInt32);
pascal OSErr DoPrintDocAE (const AppleEvent *, AppleEvent *, UInt32);
pascal OSErr DoQuitAE (const AppleEvent *, AppleEvent *, UInt32);
pascal OSErr MyGotRequiredParams (const AppleEvent *);
AEEventHandlerUPP openAppAEUPP, openDocAEUPP, printDocAEUPP, quitAEUPP;
extern FSSpecPtr theHousesSpecs;
extern long incrementModeTime;
extern short thisHouseIndex, splashOriginH, splashOriginV;
extern Boolean quitting;
//============================================================== Functions
//-------------------------------------------------------------- DoOpenAppAE
// Handles an "Open Application" Apple Event.
pascal OSErr DoOpenAppAE (const AppleEvent *theAE, AppleEvent *reply, UInt32 ref)
{
#pragma unused (reply, ref)
OSErr theErr;
theErr = MyGotRequiredParams(theAE);
return (theErr);
}
//-------------------------------------------------------------- DoOpenDocAE
// Handles an "Open Document" Apple Event.
pascal OSErr DoOpenDocAE (const AppleEvent *theAE, AppleEvent *reply, UInt32 ref)
{
#pragma unused (reply, ref)
FSSpec oneFSS;
FInfo finderInfo;
AEDescList docList;
long itemsInList;
Size actualSize;
AEKeyword keywd;
DescType returnedType;
OSErr theErr, whoCares;
short i;
theErr = AEGetParamDesc(theAE, keyDirectObject, typeAEList, &docList);
if (theErr != noErr)
{
YellowAlert(kYellowAppleEventErr, theErr);
return (theErr);
}
theErr = MyGotRequiredParams(theAE);
if (theErr != noErr)
{
whoCares = AEDisposeDesc(&docList);
return (theErr);
}
theErr = AECountItems(&docList, &itemsInList);
if (theErr != noErr)
{
whoCares = AEDisposeDesc(&docList);
return (theErr);
}
#ifndef COMPILEDEMO
for (i = 1; i <= itemsInList; i++)
{
theErr = AEGetNthPtr(&docList, i, typeFSS, &keywd, &returnedType,
&oneFSS, sizeof(oneFSS), &actualSize);
if (theErr == noErr)
{
theErr = FSpGetFInfo(&oneFSS, &finderInfo);
if ((theErr == noErr) && (finderInfo.fdType == 'gliH'))
AddExtraHouse(&oneFSS);
}
}
if (itemsInList > 0)
{
theErr = AEGetNthPtr(&docList, 1, typeFSS, &keywd, &returnedType,
&oneFSS, sizeof(oneFSS), &actualSize);
if (theErr == noErr)
{
theErr = FSpGetFInfo(&oneFSS, &finderInfo);
if ((theErr == noErr) && (finderInfo.fdType == 'gliH'))
{
whoCares = CloseHouse();
PasStringCopy(oneFSS.name, thisHouseName);
BuildHouseList();
if (OpenHouse())
whoCares = ReadHouse();
PasStringCopy(theHousesSpecs[thisHouseIndex].name, thisHouseName);
OpenCloseEditWindows();
incrementModeTime = TickCount() + kIdleSplashTicks;
if ((theMode == kSplashMode) || (theMode == kPlayMode))
{
Rect updateRect;
SetRect(&updateRect, splashOriginH + 474, splashOriginV + 304, splashOriginH + 474 + 166, splashOriginV + 304 + 12);
InvalWindowRect(mainWindow, &updateRect);
}
}
}
InitCursor();
}
#endif
whoCares = AEDisposeDesc(&docList);
return theErr;
}
//-------------------------------------------------------------- DoPrintDocAE
// Handles a "Print Document" Apple Event.
pascal OSErr DoPrintDocAE (const AppleEvent *theAE, AppleEvent *reply, UInt32 ref)
{
#pragma unused (theAE, reply, ref)
short hitWhat;
// CenterAlert(kNoPrintingAlert);
hitWhat = Alert(kNoPrintingAlert, nil);
return errAEEventNotHandled;
}
//-------------------------------------------------------------- DoQuitAE
// Handles a "Quit Application" Apple Event.
pascal OSErr DoQuitAE (const AppleEvent *theAE, AppleEvent *reply, UInt32 ref)
{
|