home *** CD-ROM | disk | FTP | other *** search
- #include "error.h"
- #include "main.h"
- #include "dialogs.h"
- #include "environment.h"
- #include "window layer.h"
-
- ErrorStateRec gPendingErrorRec;
-
- void FailNilUPP(UniversalProcPtr theUPP)
- {
- if (theUPP == nil)
- HandleError(kNoMemory, FALSE, FALSE);
- }
-
- void HandleError(enum ErrorTypes resultCode, Boolean isFatal, Boolean isSmall)
- /* if we're in the foreground, just get the error string (from the .rsrc file) and
- display the error alert; otherwise, we have to queue it, put up a notification
- (if possible), and wait patiently to come back in the foreground. (see main.c,
- DispatchEvents(), case osEvt. */
- /* All error codes are listed in program globals.h */
- {
- Str255 tempStr;
- Handle myResHand;
-
- /* if there is no error, or the error is that the user cancelled an operation
- in progress, don't display anything; it would only confuse them. */
- if ((resultCode==userCancelErr) || (resultCode==allsWell)) return;
-
- if (gIsInBackground) /* if program is in background, can't display alert immed. */
- {
- if (gHasNotificationManager) /* if they don't have notification, f*ck 'em */
- {
- myResHand=GetResource('SICN', 1234); /* small icon for menu bar flashing */
- gPendingErrorRec.notificationRec.qType=nmType; /* for more detail on these params, */
- gPendingErrorRec.notificationRec.nmMark=1; /* see IM Processes, 5-8 */
- gPendingErrorRec.notificationRec.nmIcon=myResHand;
- gPendingErrorRec.notificationRec.nmSound=(Handle)-1L;
- gPendingErrorRec.notificationRec.nmStr=0L;
- gPendingErrorRec.notificationRec.nmResp=0L;
- gPendingErrorRec.notificationRec.nmRefCon=0L;
- NMInstall(&gPendingErrorRec.notificationRec);
- }
- gPendingErrorRec.resultCode=resultCode; /* remember error code for later */
- }
- else
- {
- RemoveHilitePatch();
- GetIndString(tempStr, 129, resultCode); /* get error string from .rsrc */
- ParamText(tempStr, "\p", "\p", "\p");
- PositionDialog('ALRT', isSmall ? smallAlert : largeAlert);
- StopAlert(isSmall ? smallAlert : largeAlert, 0L);
- InstallHilitePatch();
- }
-
- if (isFatal) /* for fatal errors */
- {
- ShutDownEnvironment(FALSE);
- ExitToShell();
- }
- }
-