static const char *rcsid = "$Id$ cc: "__DATE__" "__TIME__;

// Suppress compiler warning about rcsid being unused, yet prevent assembler
// code for this function from being produced.
inline extern const char *suppressCompilerWarning(void)
{
    return rcsid;
}

//
// ------------------------ App Class Implementation --------------------------
//
// NSApplication subclass that catches exceptions.
//
// AUTHOR: Art Isbell
// ----------------------------------------------------------------------------
//

// ----------------------------- Header Files ---------------------------------

#import <AppKit/AppKit.h>

#import "App.h"
#import "OEObject.h"

// ---------------- Typedef, Struct, and Union Declarations -------------------

// --------------------- Constant and Enum Definitions ------------------------

// ------------------------- Function Declarations ----------------------------

/*
@interface App(Private)
// ---------------------- Private Method Declarations -------------------------

@end
*/
@implementation App
// ----------------------- Class Method Definitions ---------------------------

// ---------------- Overridden Instance Method Definitions --------------------

// -------------------- New Instance Method Definitions -----------------------

// Overriding reportException: seems like what must be done under OS to replace
// the functionality of the NS NXSetTopLevelErrorHandler().
- (void)reportException:(NSException *)theException
{
    [super reportException:theException];

    if ([[theException name] isEqualToString:[OEObject crashException]] &&
        (NSRunCriticalAlertPanel(nil, NSLocalizedString(@"An internal error has occurred.  Try to save any unsaved changes.  Continuing may result in repeated errors.  If so, quit and restart %@.", Alert panel text displayed when a normally-fatal error has occurred.  %@ is the application name.),
                                 @"Continue", @"Quit", nil, [[NSProcessInfo
                                     processInfo] processName]) !=
         NSAlertDefaultReturn))
    {
        [self terminate:nil];
    }
}

// ----------------- Delegate Instance Method Definitions ---------------------

@end
/*
@implementation App(Private)
// ---------------------- Private Method Definitions --------------------------

@end
*/
// ------------------------- Function Definitions -----------------------------
