119 lines
3.1 KiB
Mathematica
119 lines
3.1 KiB
Mathematica
|
/* class AppController
|
||
|
|
||
|
A dispatcher for many high-level application events. Only one instance
|
||
|
exists at runtime.
|
||
|
*/
|
||
|
#import "Catakig-Cocoa.h"
|
||
|
#import "AppController.h"
|
||
|
#import "ScreenView.h"
|
||
|
|
||
|
@implementation AppController
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
+ (void)initialize
|
||
|
{
|
||
|
OSStatus sts;
|
||
|
|
||
|
// Need these retains??
|
||
|
G.bundle = [[NSBundle mainBundle] retain];
|
||
|
G.docMgr = [[NSDocumentController sharedDocumentController] retain];
|
||
|
G.fileMgr = [[NSFileManager defaultManager] retain];
|
||
|
G.helpMgr = [[NSHelpManager sharedHelpManager] retain];
|
||
|
// G.null = [[NSNull null] retain];
|
||
|
G.pboard = [[NSPasteboard generalPasteboard] retain];
|
||
|
G.workspace = [[NSWorkspace sharedWorkspace] retain];
|
||
|
|
||
|
SetMouseRange();
|
||
|
|
||
|
if (noErr != (sts = AU_Open(&G.audioUnit)))
|
||
|
{
|
||
|
FatalErrorAlert(@"Cannot initialize audio",
|
||
|
@"Error from AU_Open.");
|
||
|
}
|
||
|
|
||
|
if (NO) //!!
|
||
|
{
|
||
|
NSArray* arr;
|
||
|
|
||
|
arr = [G.fileMgr directoryContentsAtPath:@"/System/Library/Sounds"];
|
||
|
NSLog(@"Found sounds: %@", arr);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
#if 0
|
||
|
- (void)applicationDidFinishLaunching:(NSNotification*)note
|
||
|
{/*
|
||
|
"Sent by the default notification center after the application has been
|
||
|
launched and initialized but before it has received its first event."
|
||
|
*/
|
||
|
}
|
||
|
#endif
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
- (NSApplicationTerminateReply)
|
||
|
applicationShouldTerminate:(NSApplication*)app
|
||
|
{
|
||
|
AU_Close(&G.audioUnit);
|
||
|
[ScreenView FullScreenOff];
|
||
|
|
||
|
return NSTerminateNow;
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
- (BOOL)applicationShouldOpenUntitledFile:(NSApplication*)sender
|
||
|
{/*
|
||
|
Returns whether the application should automatically create a new
|
||
|
document after launching. (Default behavior is YES.)
|
||
|
*/
|
||
|
return NO;
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
- (void)applicationDidChangeScreenParameters:(NSNotification*)note
|
||
|
{/*
|
||
|
Responds to changes in screen configuration: either resolutions, or
|
||
|
relative positions of multiple screens.
|
||
|
*/
|
||
|
SetMouseRange();
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
- (IBAction)newDocument:(id)sender
|
||
|
{/*
|
||
|
Called when the user invokes the "New" menu command. (Normally the
|
||
|
global DocumentController gets this message first.)
|
||
|
*/
|
||
|
NSEnumerator* e = [[mNewA2Model cells] objectEnumerator];
|
||
|
NSColor* warnColor = [NSColor colorWithDeviceHue:0.
|
||
|
saturation:0.4 brightness:1. alpha:1.];
|
||
|
|
||
|
// Scan for Apple II ROMs.
|
||
|
|
||
|
[A2Computer ScanDirectoryForROM:nil];
|
||
|
|
||
|
for (NSButtonCell* cell; (cell = [e nextObject]);)
|
||
|
{
|
||
|
BOOL hasROM = [A2Computer ModelHasROM:[cell tag]];
|
||
|
|
||
|
[cell setBackgroundColor:(hasROM? nil : warnColor)];
|
||
|
}
|
||
|
|
||
|
// Run the "New Apple II" dialog.
|
||
|
|
||
|
if ([mNewA2Panel RunModal])
|
||
|
{
|
||
|
A2G.defaultModel = [mNewA2Model selectedTag];
|
||
|
A2G.defaultExtraRAM = [mNewA2ExtraRAM selectedTag];
|
||
|
|
||
|
[G.docMgr newDocument:sender];
|
||
|
// [G.docMgr openUntitledDocumentOfType ... ];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
@end
|