GliderPRO/Sources/AppleEvents.c

1 line
5.7 KiB
C
Raw Normal View History

//============================================================================ //---------------------------------------------------------------------------- // 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) {