/*****************************************************************************\ Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. This file is licensed under the Snes9x License. For further information, consult the LICENSE file in the root directory. \*****************************************************************************/ /*********************************************************************************** SNES9X for Mac OS (c) Copyright John Stiles Snes9x for Mac OS X (c) Copyright 2001 - 2011 zones (c) Copyright 2002 - 2005 107 (c) Copyright 2002 PB1400c (c) Copyright 2004 Alexander and Sander (c) Copyright 2004 - 2005 Steven Seeger (c) Copyright 2005 Ryan Vogt (c) Copyright 2019 Michael Donald Buckley ***********************************************************************************/ #import "snes9x.h" #import "memmap.h" #import "snapshot.h" #import "movie.h" #import #import #import #import "mac-cocoatools.h" #import "mac-prefix.h" #import "mac-dialog.h" #import "mac-os.h" #import "mac-screenshot.h" #import "mac-snes9x.h" #import "mac-stringtools.h" #import "mac-cart.h" typedef struct { NSURL *ref; Boolean reply; char name[PATH_MAX + 1]; #ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT IBNibRef customNib; WindowRef customWindow; HIViewRef customPane; short customWidth, customHeight; #endif } NavState; extern wchar_t macRecordWChar[MOVIE_MAX_METADATA]; static NSPopUpButton *gPopM, *gPopI, *gPopV, *gPopH; @interface NavController : NSObject - (id) init; - (IBAction) handleCompressButton: (id) sender; @end @implementation NavController - (id) init { self = [super init]; return (self); } - (IBAction) handleCompressButton: (id) sender { //MacQTVideoConfig(); } @end NSURL *NavOpenROMImage () { NSOpenPanel *openPanel = [NSOpenPanel openPanel]; openPanel.title = NSLocalizedString(@"OpenROMMes", @"Open"); openPanel.allowsMultipleSelection = NO; NSView *view; NSTextField *txtM, *txtI, *txtV, *txtH; NSPopUpButton *popM, *popI, *popV, *popH; NSArray *aryM, *aryI, *aryV, *aryH; view = [[NSView alloc] initWithFrame: NSMakeRect(0, 0, 433, 52)]; aryM = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROM6", @""), NSLocalizedString(@"OpenROM7", @""), nil]; aryI = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROMa", @""), NSLocalizedString(@"OpenROMb", @""), NSLocalizedString(@"OpenROMc", @""), NSLocalizedString(@"OpenROMd", @""), nil]; aryV = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROM8", @""), NSLocalizedString(@"OpenROM9", @""), nil]; aryH = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROMe", @""), NSLocalizedString(@"OpenROMf", @""), nil]; CocoaAddStatTextToView(view, @"OpenROM1", 5, 32, 84, 14, &txtM); CocoaAddStatTextToView(view, @"OpenROM3", 214, 32, 96, 14, &txtI); CocoaAddStatTextToView(view, @"OpenROM2", 5, 7, 84, 14, &txtV); CocoaAddStatTextToView(view, @"OpenROM4", 214, 7, 96, 14, &txtH); CocoaAddPopUpBtnToView(view, aryM, 91, 27, 116, 22, &popM); CocoaAddPopUpBtnToView(view, aryI, 312, 27, 116, 22, &popI); CocoaAddPopUpBtnToView(view, aryV, 91, 2, 116, 22, &popV); CocoaAddPopUpBtnToView(view, aryH, 312, 2, 116, 22, &popH); [txtM setAlignment: NSTextAlignmentRight]; [txtI setAlignment: NSTextAlignmentRight]; [txtV setAlignment: NSTextAlignmentRight]; [txtH setAlignment: NSTextAlignmentRight]; [popM selectItemAtIndex: romDetect ]; [popI selectItemAtIndex: interleaveDetect]; [popV selectItemAtIndex: videoDetect ]; [popH selectItemAtIndex: headerDetect ]; NSModalResponse response = [openPanel runModal]; if ( response == NSModalResponseOK ) { romDetect = [popM indexOfSelectedItem]; interleaveDetect = [popI indexOfSelectedItem]; videoDetect = [popV indexOfSelectedItem]; headerDetect = [popH indexOfSelectedItem]; return openPanel.URL; } return nil; } NSURL *NavOpenROMImageSheet (NSWindow *parent, NSString *mes) { NSOpenPanel *openPanel = [NSOpenPanel openPanel]; openPanel.title = NSLocalizedString(@"OpenROMMes", @"Open"); openPanel.allowsMultipleSelection = NO; NSView *view; NSTextField *txtM, *txtI, *txtV, *txtH; NSPopUpButton *popM, *popI, *popV, *popH; NSArray *aryM, *aryI, *aryV, *aryH; view = [[NSView alloc] initWithFrame: NSMakeRect(0, 0, 433, 52)]; aryM = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROM6", @""), NSLocalizedString(@"OpenROM7", @""), nil]; aryI = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROMa", @""), NSLocalizedString(@"OpenROMb", @""), NSLocalizedString(@"OpenROMc", @""), NSLocalizedString(@"OpenROMd", @""), nil]; aryV = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROM8", @""), NSLocalizedString(@"OpenROM9", @""), nil]; aryH = [NSArray arrayWithObjects: NSLocalizedString(@"OpenROM5", @""), @"---", NSLocalizedString(@"OpenROMe", @""), NSLocalizedString(@"OpenROMf", @""), nil]; CocoaAddStatTextToView(view, @"OpenROM1", 5, 32, 84, 14, &txtM); CocoaAddStatTextToView(view, @"OpenROM3", 214, 32, 96, 14, &txtI); CocoaAddStatTextToView(view, @"OpenROM2", 5, 7, 84, 14, &txtV); CocoaAddStatTextToView(view, @"OpenROM4", 214, 7, 96, 14, &txtH); CocoaAddPopUpBtnToView(view, aryM, 91, 27, 116, 22, &popM); CocoaAddPopUpBtnToView(view, aryI, 312, 27, 116, 22, &popI); CocoaAddPopUpBtnToView(view, aryV, 91, 2, 116, 22, &popV); CocoaAddPopUpBtnToView(view, aryH, 312, 2, 116, 22, &popH); [txtM setAlignment: NSTextAlignmentRight]; [txtI setAlignment: NSTextAlignmentRight]; [txtV setAlignment: NSTextAlignmentRight]; [txtH setAlignment: NSTextAlignmentRight]; [popM selectItemAtIndex: romDetect ]; [popI selectItemAtIndex: interleaveDetect]; [popV selectItemAtIndex: videoDetect ]; [popH selectItemAtIndex: headerDetect ]; NSModalResponse response = [openPanel runModal]; if ( response == NSModalResponseOK ) { romDetect = [popM indexOfSelectedItem]; interleaveDetect = [popI indexOfSelectedItem]; videoDetect = [popV indexOfSelectedItem]; headerDetect = [popH indexOfSelectedItem]; return openPanel.URL; } return nil; } NSURL *NavFreezeTo () { // OSStatus err; // NavState nav; // CFStringRef numRef, romRef, baseRef; // CFMutableStringRef mesRef, saveRef; // SInt32 replaceAt; // char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1]; // // _splitpath(Memory.ROMFilename, drive, dir, fname, ext); // romRef = CFStringCreateWithCString(kCFAllocatorDefault, fname, kCFStringEncodingUTF8); // numRef = CFCopyLocalizedString(CFSTR("FreezeToPos"), "1"); // baseRef = CFCopyLocalizedString(CFSTR("FreezeToMes"), "Freeze"); // mesRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, baseRef); // saveRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, romRef); // replaceAt = CFStringGetIntValue(numRef); // CFStringReplace(mesRef, CFRangeMake(replaceAt - 1, 1), romRef); // CFStringAppendCString(saveRef, ".frz", CFStringGetSystemEncoding()); // // err = NavGetDefaultDialogCreationOptions(&dialogOptions); // dialogOptions.preferenceKey = 4; // dialogOptions.clientName = kMacS9XCFString; // dialogOptions.windowTitle = mesRef; // dialogOptions.saveFileName = saveRef; // dialogOptions.modality = kWindowModalityAppModal; // dialogOptions.parentWindow = NULL; // nav.parent = NULL; // // eventUPP = NewNavEventUPP(NavGenericSaveEventHandler); // // err = NavCreatePutFileDialog(&dialogOptions, 'SAVE', '~9X~', eventUPP, &nav, &(nav.nref)); // if (err == noErr) // { // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // } // // DisposeNavEventUPP(eventUPP); // // CFRelease(saveRef); // CFRelease(mesRef); // CFRelease(baseRef); // CFRelease(numRef); // CFRelease(romRef); // // if (err) // return (false); // else // { // if (nav.reply) // { // char s[PATH_MAX + 1]; // // err = FSRefMakePath(&(nav.ref), (unsigned char *) s, PATH_MAX); // snprintf(path, PATH_MAX + 1, "%s%s%s", s, MAC_PATH_SEPARATOR, nav.name); // // return (true); // } // else // return (false); // } return nil; } NSURL *NavDefrostFrom () { // OSStatus err; // NavDialogCreationOptions dialogOptions; // NavEventUPP eventUPP; // NavObjectFilterUPP filterUPP; // NavState nav; // CFStringRef numRef, romRef, baseRef; // CFMutableStringRef mesRef; // SInt32 replaceAt; // char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1]; //#ifdef MAC_TIGER_PANTHER_SUPPORT // NavPreviewUPP previewUPP; //#endif // // _splitpath(Memory.ROMFilename, drive, dir, fname, ext); // romRef = CFStringCreateWithCString(kCFAllocatorDefault, fname, kCFStringEncodingUTF8); // numRef = CFCopyLocalizedString(CFSTR("DefrostFromPos"), "1"); // baseRef = CFCopyLocalizedString(CFSTR("DefrostFromMes"), "Defrost"); // mesRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, baseRef); // replaceAt = CFStringGetIntValue(numRef); // CFStringReplace(mesRef, CFRangeMake(replaceAt - 1, 1), romRef); // // err = NavGetDefaultDialogCreationOptions(&dialogOptions); // dialogOptions.optionFlags &= ~kNavAllowMultipleFiles; // dialogOptions.preferenceKey = 5; // dialogOptions.clientName = kMacS9XCFString; // dialogOptions.windowTitle = mesRef; // dialogOptions.modality = kWindowModalityAppModal; // dialogOptions.parentWindow = NULL; // nav.parent = NULL; // // eventUPP = NewNavEventUPP(NavGenericOpenEventHandler); // filterUPP = NewNavObjectFilterUPP(NavDefrostFromFilter); //#ifdef MAC_TIGER_PANTHER_SUPPORT // previewUPP = NewNavPreviewUPP(NavDefrostFromPreview); //#endif // //#ifdef MAC_TIGER_PANTHER_SUPPORT // err = NavCreateChooseFileDialog(&dialogOptions, NULL, eventUPP, previewUPP, filterUPP, &nav, &(nav.nref)); //#else // err = NavCreateChooseFileDialog(&dialogOptions, NULL, eventUPP, NULL, filterUPP, &nav, &(nav.nref)); //#endif // if (err == noErr) // { // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // } // //#ifdef MAC_TIGER_PANTHER_SUPPORT // DisposeNavPreviewUPP(previewUPP); //#endif // DisposeNavObjectFilterUPP(filterUPP); // DisposeNavEventUPP(eventUPP); // // CFRelease(mesRef); // CFRelease(baseRef); // CFRelease(numRef); // CFRelease(romRef); // // if (err) // return (false); // else // { // if (nav.reply) // { // err = FSRefMakePath(&(nav.ref), (unsigned char *) path, PATH_MAX); // return (true); // } // else // return (false); // } return nil; } NSURL *NavRecordMovieTo () { // OSStatus err; // NavDialogCreationOptions dialogOptions; // NavEventUPP eventUPP; // NavState nav; // CFStringRef numRef, romRef, baseRef; // CFMutableStringRef mesRef, saveRef; // SInt32 replaceAt; // char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1]; // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // if (systemVersion < 0x1060) // { // HIViewID cid = { 'PANE', 1000 }; // Rect rct; // // err = CreateNibReference(kMacS9XCFString, &(nav.customNib)); // if (err) // return (false); // // err = CreateWindowFromNib(nav.customNib, CFSTR("RecordSMV"), &(nav.customWindow)); // if (err) // { // DisposeNibReference(nav.customNib); // return (false); // } // // GetWindowBounds(nav.customWindow, kWindowContentRgn, &rct); // nav.customWidth = rct.right - rct.left; // nav.customHeight = rct.bottom - rct.top; // // HIViewFindByID(HIViewGetRoot(nav.customWindow), cid, &(nav.customPane)); // } //#endif // // _splitpath(Memory.ROMFilename, drive, dir, fname, ext); // romRef = CFStringCreateWithCString(kCFAllocatorDefault, fname, kCFStringEncodingUTF8); // numRef = CFCopyLocalizedString(CFSTR("RecordToPos"), "1"); // baseRef = CFCopyLocalizedString(CFSTR("RecordToMes"), "Record"); // mesRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, baseRef); // saveRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, romRef); // replaceAt = CFStringGetIntValue(numRef); // CFStringReplace(mesRef, CFRangeMake(replaceAt - 1, 1), romRef); // CFStringAppendCString(saveRef, ".smv", CFStringGetSystemEncoding()); // // err = NavGetDefaultDialogCreationOptions(&dialogOptions); // dialogOptions.preferenceKey = 6; // dialogOptions.clientName = kMacS9XCFString; // dialogOptions.windowTitle = mesRef; // dialogOptions.saveFileName = saveRef; // dialogOptions.modality = kWindowModalityAppModal; // dialogOptions.parentWindow = NULL; // nav.parent = NULL; // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // eventUPP = NewNavEventUPP((systemVersion < 0x1060) ? NavRecordMovieToEventHandler : NavGenericSaveEventHandler); //#else // eventUPP = NewNavEventUPP(NavGenericSaveEventHandler); //#endif // // err = NavCreatePutFileDialog(&dialogOptions, 'SMOV', '~9X~', eventUPP, &nav, &(nav.nref)); // if (err == noErr) // { // if (systemVersion >= 0x1060) // { // NSAutoreleasePool *pool; // NSView *view; // NSTextField *text; // NSButton *cb1p, *cb2p, *cb3p, *cb4p, *cb5p, *cbre; // NSString *comment; // // pool = [[NSAutoreleasePool alloc] init]; // // view = [[[NSView alloc] initWithFrame: NSMakeRect(0, 0, 433, 54)] autorelease]; // // CocoaAddStatTextToView(view, @"RecordSMV6", 5, 33, 104, 14, NULL); // CocoaAddStatTextToView(view, @"RecordSMV7", 5, 8, 63, 14, NULL); // CocoaAddEditTextToView(view, @"", 74, 6, 351, 19, &text); // CocoaAddCheckBoxToView(view, @"RecordSMV1", 112, 31, 29, 18, &cb1p); // CocoaAddCheckBoxToView(view, @"RecordSMV2", 150, 31, 29, 18, &cb2p); // CocoaAddCheckBoxToView(view, @"RecordSMV3", 188, 31, 29, 18, &cb3p); // CocoaAddCheckBoxToView(view, @"RecordSMV4", 226, 31, 29, 18, &cb4p); // CocoaAddCheckBoxToView(view, @"RecordSMV5", 264, 31, 29, 18, &cb5p); // CocoaAddCheckBoxToView(view, @"RecordSMV8", 356, 31, 51, 18, &cbre); // // [cb1p setState: (macRecordFlag & (1 << 0) ? NSOnState : NSOffState)]; // [cb2p setState: (macRecordFlag & (1 << 1) ? NSOnState : NSOffState)]; // [cb3p setState: (macRecordFlag & (1 << 2) ? NSOnState : NSOffState)]; // [cb4p setState: (macRecordFlag & (1 << 3) ? NSOnState : NSOffState)]; // [cb5p setState: (macRecordFlag & (1 << 4) ? NSOnState : NSOffState)]; // [cbre setState: (macRecordFlag & (1 << 5) ? NSOnState : NSOffState)]; // // [(NSOpenPanel *) nav.nref setAccessoryView: view]; // // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // // macRecordFlag = 0; // macRecordFlag |= ((([cb1p state] == NSOnState) ? 1 : 0) << 0); // macRecordFlag |= ((([cb2p state] == NSOnState) ? 1 : 0) << 1); // macRecordFlag |= ((([cb3p state] == NSOnState) ? 1 : 0) << 2); // macRecordFlag |= ((([cb4p state] == NSOnState) ? 1 : 0) << 3); // macRecordFlag |= ((([cb5p state] == NSOnState) ? 1 : 0) << 4); // macRecordFlag |= ((([cbre state] == NSOnState) ? 1 : 0) << 5); // // comment = [text stringValue]; // if (comment) // { // NSUInteger cflen; // unichar unistr[MOVIE_MAX_METADATA]; // // cflen = [comment length]; // if (cflen > MOVIE_MAX_METADATA - 1) // cflen = MOVIE_MAX_METADATA - 1; // // [comment getCharacters: unistr range: NSMakeRange(0, cflen)]; // // for (unsigned i = 0; i < cflen; i++) // macRecordWChar[i] = (wchar_t) unistr[i]; // macRecordWChar[cflen] = 0; // } // else // macRecordWChar[0] = 0; // // [pool release]; // } // #ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // else // { // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // } // #endif // } // // DisposeNavEventUPP(eventUPP); // // CFRelease(saveRef); // CFRelease(mesRef); // CFRelease(baseRef); // CFRelease(numRef); // CFRelease(romRef); // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // if (systemVersion < 0x1060) // { // CFRelease(nav.customWindow); // DisposeNibReference(nav.customNib); // } //#endif // // if (err) // return (false); // else // { // if (nav.reply) // { // char s[PATH_MAX + 1]; // // err = FSRefMakePath(&(nav.ref), (unsigned char *) s, PATH_MAX); // snprintf(path, PATH_MAX + 1, "%s%s%s", s, MAC_PATH_SEPARATOR, nav.name); // // return (true); // } // else // return (false); // } return nil; } NSURL *NavPlayMovieFrom () { // OSStatus err; // NavDialogCreationOptions dialogOptions; // NavEventUPP eventUPP; // NavObjectFilterUPP filterUPP; // NavState nav; // CFStringRef numRef, romRef, baseRef; // CFMutableStringRef mesRef; // SInt32 replaceAt; // char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1]; //#ifdef MAC_TIGER_PANTHER_SUPPORT // NavPreviewUPP previewUPP; //#endif // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // if (systemVersion < 0x1060) // { // HIViewID cid = { 'PANE', 1000 }; // Rect rct; // // err = CreateNibReference(kMacS9XCFString, &(nav.customNib)); // if (err) // return (false); // // err = CreateWindowFromNib(nav.customNib, CFSTR("PlaySMV"), &(nav.customWindow)); // if (err) // { // DisposeNibReference(nav.customNib); // return (false); // } // // GetWindowBounds(nav.customWindow, kWindowContentRgn, &rct); // nav.customWidth = rct.right - rct.left; // nav.customHeight = rct.bottom - rct.top; // // HIViewFindByID(HIViewGetRoot(nav.customWindow), cid, &(nav.customPane)); // } //#endif // // _splitpath(Memory.ROMFilename, drive, dir, fname, ext); // romRef = CFStringCreateWithCString(kCFAllocatorDefault, fname, kCFStringEncodingUTF8); // numRef = CFCopyLocalizedString(CFSTR("PlayFromPos"), "1"); // baseRef = CFCopyLocalizedString(CFSTR("PlayFromMes"), "Play"); // mesRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, baseRef); // replaceAt = CFStringGetIntValue(numRef); // CFStringReplace(mesRef, CFRangeMake(replaceAt - 1, 1), romRef); // // err = NavGetDefaultDialogCreationOptions(&dialogOptions); // dialogOptions.optionFlags &= ~kNavAllowMultipleFiles; // dialogOptions.preferenceKey = 6; // dialogOptions.clientName = kMacS9XCFString; // dialogOptions.windowTitle = mesRef; // dialogOptions.modality = kWindowModalityAppModal; // dialogOptions.parentWindow = NULL; // nav.parent = NULL; // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // eventUPP = NewNavEventUPP((systemVersion < 0x1060) ? NavPlayMovieFromEventHandler : NavGenericOpenEventHandler); //#else // eventUPP = NewNavEventUPP(NavGenericOpenEventHandler); //#endif // filterUPP = NewNavObjectFilterUPP(NavPlayMovieFromFilter); //#ifdef MAC_TIGER_PANTHER_SUPPORT // previewUPP = NewNavPreviewUPP(NavPlayMovieFromPreview); //#endif // //#ifdef MAC_TIGER_PANTHER_SUPPORT // err = NavCreateChooseFileDialog(&dialogOptions, NULL, eventUPP, previewUPP, filterUPP, &nav, &(nav.nref)); //#else // err = NavCreateChooseFileDialog(&dialogOptions, NULL, eventUPP, NULL, filterUPP, &nav, &(nav.nref)); //#endif // if (err == noErr) // { // if (systemVersion >= 0x1060) // { // NSAutoreleasePool *pool; // NSView *view; // NSButton *cbro, *cbqt; // // pool = [[NSAutoreleasePool alloc] init]; // // view = [[[NSView alloc] initWithFrame: NSMakeRect(0, 0, 326, 29)] autorelease]; // // CocoaAddCheckBoxToView(view, @"PlaySMV1", 5, 6, 76, 18, &cbro); // CocoaAddCheckBoxToView(view, @"PlaySMV2", 100, 6, 220, 18, &cbqt); // // [cbro setState: (macPlayFlag & (1 << 0) ? NSOnState : NSOffState)]; // [cbqt setState: (macPlayFlag & (1 << 1) ? NSOnState : NSOffState)]; // // [(NSOpenPanel *) nav.nref setAccessoryView: view]; // // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // // macPlayFlag = 0; // macPlayFlag |= ((([cbro state] == NSOnState) ? 1 : 0) << 0); // macPlayFlag |= ((([cbqt state] == NSOnState) ? 1 : 0) << 1); // // [pool release]; // } // #ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // else // { // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // } // #endif // } // //#ifdef MAC_TIGER_PANTHER_SUPPORT // DisposeNavPreviewUPP(previewUPP); //#endif // DisposeNavObjectFilterUPP(filterUPP); // DisposeNavEventUPP(eventUPP); // // CFRelease(mesRef); // CFRelease(baseRef); // CFRelease(numRef); // CFRelease(romRef); // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // if (systemVersion < 0x1060) // { // CFRelease(nav.customWindow); // DisposeNibReference(nav.customNib); // } //#endif // // if (err) // return (false); // else // { // if (nav.reply) // { // err = FSRefMakePath(&(nav.ref), (unsigned char *) path, PATH_MAX); // return (true); // } // else // return (false); // } return nil; } NSURL *NavQTMovieRecordTo () { // OSStatus err; // NavDialogCreationOptions dialogOptions; // NavEventUPP eventUPP; // NavState nav; // CFStringRef numRef, romRef, baseRef; // CFMutableStringRef mesRef, saveRef; // SInt32 replaceAt; // char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1]; // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // if (systemVersion < 0x1060) // { // HIViewID cid = { 'PANE', 1000 }; // Rect rct; // // err = CreateNibReference(kMacS9XCFString, &(nav.customNib)); // if (err) // return (false); // // err = CreateWindowFromNib(nav.customNib, CFSTR("QTMovie"), &(nav.customWindow)); // if (err) // { // DisposeNibReference(nav.customNib); // return (false); // } // // GetWindowBounds(nav.customWindow, kWindowContentRgn, &rct); // nav.customWidth = rct.right - rct.left; // nav.customHeight = rct.bottom - rct.top; // // HIViewFindByID(HIViewGetRoot(nav.customWindow), cid, &(nav.customPane)); // } //#endif // // _splitpath(Memory.ROMFilename, drive, dir, fname, ext); // romRef = CFStringCreateWithCString(kCFAllocatorDefault, fname, kCFStringEncodingUTF8); // numRef = CFCopyLocalizedString(CFSTR("QTRecordPos"), "1"); // baseRef = CFCopyLocalizedString(CFSTR("QTRecordMes"), "QT"); // mesRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, baseRef); // saveRef = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, romRef); // replaceAt = CFStringGetIntValue(numRef); // CFStringReplace(mesRef, CFRangeMake(replaceAt - 1, 1), romRef); // CFStringAppendCString(saveRef, ".mov", CFStringGetSystemEncoding()); // // err = NavGetDefaultDialogCreationOptions(&dialogOptions); // dialogOptions.preferenceKey = 7; // dialogOptions.clientName = kMacS9XCFString; // dialogOptions.windowTitle = mesRef; // dialogOptions.saveFileName = saveRef; // dialogOptions.modality = kWindowModalityAppModal; // dialogOptions.parentWindow = NULL; // nav.parent = NULL; // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // eventUPP = NewNavEventUPP((systemVersion < 0x1060) ? NavQTMovieRecordToEventHandler : NavGenericSaveEventHandler); //#else // eventUPP = NewNavEventUPP(NavGenericSaveEventHandler); //#endif // // err = NavCreatePutFileDialog(&dialogOptions, 'MooV', 'TVOD', eventUPP, &nav, &(nav.nref)); // if (err == noErr) // { // if (systemVersion >= 0x1060) // { // NSAutoreleasePool *pool; // NSView *view; // NSPopUpButton *fpop; // NSButton *cbds, *cbov, *comp; // NSArray *array; // NavController *controller; // // pool = [[NSAutoreleasePool alloc] init]; // // controller = [[[NavController alloc] init] autorelease]; // view = [[[NSView alloc] initWithFrame: NSMakeRect(0, 0, 433, 31)] autorelease]; // // array = [NSArray arrayWithObjects: @"0", @"1", @"2", @"3", @"4", @"5", nil]; // CocoaAddStatTextToView(view, @"QTRecord3", 185, 9, 70, 14, NULL); // CocoaAddCheckBoxToView(view, @"QTRecord1", 5, 7, 85, 18, &cbds); // CocoaAddCheckBoxToView(view, @"QTRecord2", 97, 7, 71, 18, &cbov); // CocoaAddMPushBtnToView(view, @"QTRecord4", 313, 1, 117, 28, &comp); // CocoaAddPopUpBtnToView(view, array, 255, 4, 50, 22, &fpop); // // [cbds setState: (macQTMovFlag & (1 << 0) ? NSOnState : NSOffState)]; // [cbov setState: (macQTMovFlag & (1 << 1) ? NSOnState : NSOffState)]; // [fpop selectItemAtIndex: (macQTMovFlag >> 8)]; // // [comp setTarget: controller]; // [comp setAction: @selector(handleCompressButton:)]; // // [(NSOpenPanel *) nav.nref setAccessoryView: view]; // // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // // macQTMovFlag = 0; // macQTMovFlag |= ((([cbds state] == NSOnState) ? 1 : 0) << 0); // macQTMovFlag |= ((([cbov state] == NSOnState) ? 1 : 0) << 1); // macQTMovFlag |= ([fpop indexOfSelectedItem] << 8); // // [pool release]; // } // #ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // else // { // err = NavDialogRun(nav.nref); // if (err) // NavDialogDispose(nav.nref); // } // #endif // } // // DisposeNavEventUPP(eventUPP); // // CFRelease(saveRef); // CFRelease(mesRef); // CFRelease(baseRef); // CFRelease(numRef); // CFRelease(romRef); // //#ifdef MAC_LEOPARD_TIGER_PANTHER_SUPPORT // if (systemVersion < 0x1060) // { // CFRelease(nav.customWindow); // DisposeNibReference(nav.customNib); // } //#endif // // if (err) // return (false); // else // { // if (nav.reply) // { // char s[PATH_MAX + 1]; // // err = FSRefMakePath(&(nav.ref), (unsigned char *) s, PATH_MAX); // snprintf(path, PATH_MAX + 1, "%s%s%s", s, MAC_PATH_SEPARATOR, nav.name); // // return (true); // } // else // return (false); // } return nil; } //bool8 NavChooseFolderSheet (WindowRef parent) //{ // OSStatus err; // NavDialogCreationOptions dialogOptions; // // err = NavGetDefaultDialogCreationOptions(&dialogOptions); // dialogOptions.optionFlags &= ~kNavAllowMultipleFiles; // dialogOptions.preferenceKey = 8; // dialogOptions.clientName = kMacS9XCFString; // dialogOptions.modality = kWindowModalityWindowModal; // dialogOptions.parentWindow = parent; // gSheetNav.parent = parent; // // gSheetEventUPP = NewNavEventUPP(NavGenericOpenEventHandler); // // err = NavCreateChooseFolderDialog(&dialogOptions, gSheetEventUPP, NULL, &gSheetNav, &(gSheetNav.nref)); // if (err == noErr) // { // err = NavDialogRun(gSheetNav.nref); // if (err) // { // NavDialogDispose(gSheetNav.nref); // DisposeNavEventUPP(gSheetEventUPP); // return (false); // } // } // else // { // DisposeNavEventUPP(gSheetEventUPP); // return (false); // } // // return (true); //} // //bool8 NavEndChooseFolderSheet (FSRef *ref) //{ // DisposeNavEventUPP(gSheetEventUPP); // // if (gSheetNav.reply) // { // *ref = gSheetNav.ref; // return (true); // } // else // return (false); //}