From b38bb12ab34685ac9841977f62f3735f5f72f5f8 Mon Sep 17 00:00:00 2001 From: asvitkine <> Date: Sun, 2 Aug 2009 20:24:38 +0000 Subject: [PATCH] New Virtual Machine button working --- .../src/MacOSX/Launcher/VMListController.mm | 18 ++++++++++++++---- .../src/MacOSX/Launcher/VMSettingsController.h | 3 +++ .../MacOSX/Launcher/VMSettingsController.mm | 13 ++++++++++++- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMListController.mm b/SheepShaver/src/MacOSX/Launcher/VMListController.mm index 8d036fc2..cf895561 100644 --- a/SheepShaver/src/MacOSX/Launcher/VMListController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMListController.mm @@ -84,10 +84,20 @@ - (IBAction) _newVirtualMachineDone: (NSSavePanel *) save returnCode: (int) returnCode contextInfo: (void *) contextInfo { if (returnCode == NSOKButton) { - // make dir. - // create prefs file in there - // edit said prefs file - // advanced: show sub-panel in save dialog that says "Create Disk:" + NSFileManager *manager = [NSFileManager defaultManager]; + [manager createDirectoryAtPath:[save filename] attributes:nil]; + [manager createFileAtPath:[[save filename] stringByAppendingPathComponent:@"prefs"] contents:nil attributes:nil]; + [vmArray addObject:[save filename]]; + [vmList reloadData]; + [[NSUserDefaults standardUserDefaults] setObject:vmArray forKey:@"vm_list"]; + [vmList selectRow:([vmArray count] - 1) byExtendingSelection:NO]; + [self editVirtualMachineSettings:self]; + if ([[VMSettingsController sharedInstance] cancelWasClicked]) { + [manager removeFileAtPath:[save filename] handler:nil]; + [vmArray removeObjectAtIndex:([vmArray count] - 1)]; + [vmList reloadData]; + } + // TODO advanced: show sub-panel in save dialog that says "Create Disk:" } } diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h index 1402aea6..81332833 100644 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h @@ -22,6 +22,8 @@ @interface VMSettingsController : NSWindowController { + BOOL cancelWasClicked; + IBOutlet NSView *diskSaveSize; IBOutlet NSTextField *diskSaveSizeField; NSMutableArray *diskArray; @@ -71,6 +73,7 @@ - (IBAction) browseForUnixRootClicked: (id) sender; - (void) cancelEdit: (id) sender; - (void) saveChanges: (id) sender; +- (BOOL) cancelWasClicked; - (void) dealloc; @end diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index 2b8e3086..f9ccb9cf 100644 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -46,7 +46,11 @@ void prefs_exit() - (id) init { - return [super initWithWindowNibName:@"VMSettingsWindow"]; + self = [super initWithWindowNibName:@"VMSettingsWindow"]; + + cancelWasClicked = NO; + + return self; } - (int) numberOfRowsInTableView: (NSTableView *) table @@ -289,6 +293,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) PrefsExit(); [[self window] close]; [NSApp stopModal]; + cancelWasClicked = YES; } - (void) saveChanges: (id) sender @@ -346,6 +351,12 @@ static NSString *makeRelativeIfNecessary(NSString *path) [[self window] close]; [NSApp stopModal]; + cancelWasClicked = NO; +} + +- (BOOL) cancelWasClicked +{ + return cancelWasClicked; } - (void) dealloc