From 3b2a9ededc593a3aea54dc28115bc1d509c10577 Mon Sep 17 00:00:00 2001 From: rogerman Date: Sun, 12 Nov 2017 20:24:26 -0800 Subject: [PATCH] Cocoa Port: The "File > Import ROM Save File" menu option now pauses the emulation when the NSOpenPanel is up. - Also disable the "File > Export ROM Save File" menu option when there is no actual file to export. --- desmume/src/frontend/cocoa/cocoa_file.mm | 8 +++++++ .../userinterface/EmuControllerDelegate.mm | 23 +++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/desmume/src/frontend/cocoa/cocoa_file.mm b/desmume/src/frontend/cocoa/cocoa_file.mm index 69f5541e4..8991cbc87 100644 --- a/desmume/src/frontend/cocoa/cocoa_file.mm +++ b/desmume/src/frontend/cocoa/cocoa_file.mm @@ -723,6 +723,14 @@ static NSMutableDictionary *_gURLDictionary = nil; portStr = @"Cocoa"; } + versionURL = [CocoaDSFile userAppSupportURL:nil version:@"0.9.12"]; + versionPath = [versionURL path]; + if (versionPath != nil && [[[filePath stringByDeletingLastPathComponent] stringByDeletingLastPathComponent] isEqualToString:versionPath]) + { + versionStr = @"0.9.12"; + portStr = @"Cocoa"; + } + fileVersion = [[versionStr stringByAppendingString:@" "] stringByAppendingString:portStr]; return fileVersion; diff --git a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm index b0eb63f4a..bf6870369 100644 --- a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm +++ b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm @@ -665,6 +665,8 @@ @FILE_EXT_ACTION_REPLAY_MAX_SAVE, nil]; + [self pauseCore]; + // The NSOpenPanel method -(NSInt)runModalForDirectory:file:types: // is deprecated in Mac OS X v10.6. #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5 @@ -685,17 +687,19 @@ const BOOL isRomSaveImported = [CocoaDSFile importRomSave:selectedFile]; [self setStatusText:(isRomSaveImported) ? NSSTRING_STATUS_ROM_SAVE_IMPORTED : NSSTRING_STATUS_ROM_SAVE_IMPORT_FAILED]; } + + [self restoreCoreState]; } - (IBAction) exportRomSave:(id)sender { - [self pauseCore]; - NSSavePanel *panel = [NSSavePanel savePanel]; [panel setTitle:NSSTRING_TITLE_EXPORT_ROM_SAVE_PANEL]; [panel setCanCreateDirectories:YES]; [panel setAccessoryView:exportRomSavePanelAccessoryView]; + [self pauseCore]; + const NSInteger buttonClicked = [panel runModal]; if(buttonClicked == NSOKButton) { @@ -2483,14 +2487,25 @@ const SEL theAction = [theItem action]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; - if (theAction == @selector(importRomSave:) || - theAction == @selector(exportRomSave:)) + if (theAction == @selector(importRomSave:)) { if ([self currentRom] == nil) { enable = NO; } } + else if (theAction == @selector(exportRomSave:)) + { + NSFileManager *fileManager = [[NSFileManager alloc] init]; + + if ( ([self currentRom] == nil) || + ![fileManager isReadableFileAtPath:[[CocoaDSFile fileURLFromRomURL:[[self currentRom] fileURL] toKind:@"ROM Save"] path]] ) + { + enable = NO; + } + + [fileManager release]; + } else if (theAction == @selector(toggleExecutePause:)) { if (![cdsCore masterExecute] ||