diff --git a/Ample/Base.lproj/MainMenu.xib b/Ample/Base.lproj/MainMenu.xib index 2141885..fb539af 100644 --- a/Ample/Base.lproj/MainMenu.xib +++ b/Ample/Base.lproj/MainMenu.xib @@ -406,7 +406,19 @@ + + + + + + + + + + + + diff --git a/Ample/LaunchWindowController.m b/Ample/LaunchWindowController.m index 8a6a7ea..43dd318 100644 --- a/Ample/LaunchWindowController.m +++ b/Ample/LaunchWindowController.m @@ -42,6 +42,8 @@ static NSString *kContextMachine = @"kContextMachine"; @property NSArray *args; @property NSString *machine; +//@property NSString *machineName; + @property BOOL mameDebug; @property BOOL mameSquarePixels; @property BOOL mameMouse; @@ -90,6 +92,8 @@ static NSString *kContextMachine = @"kContextMachine"; -(IBAction)addBookmark:(id)sender; +-(IBAction)defaultLoad:(id)sender; + @end #define SIZEOF(x) (sizeof(x) / sizeof(x[0])) @@ -162,23 +166,34 @@ static int EffectsIndex(NSString *str) { -(void)windowWillLoad { + // if this calls [self window], it will recurse. that is bad. + //[self defaultLoad: nil]; [self reset]; } + + static void AddSubview(NSView *parent, NSView *child) { [child setFrame: [parent bounds]]; [parent addSubview: child]; } + - (void)windowDidLoad { [super windowDidLoad]; + + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. AddSubview(_slotView, [_slotController view]); AddSubview(_mediaView, [_mediaController view]); AddSubview(_machineView, [_machineViewController view]); + + // can't be done until above views are set up. + [self defaultLoad: nil]; + NSArray *keys = @[ //@"mameMachine", // - handled @@ -244,11 +259,15 @@ static void AddSubview(NSView *parent, NSView *child) { _machine = machine; _machineDescription = MameMachine(machine); +#if 0 + [self setMachineName: [_machineDescription objectForKey: @"description"]]; +#else NSString *title = _machineDescription ? [NSString stringWithFormat: @"Ample – %@", [_machineDescription objectForKey: @"description"]] : @"Ample"; [[self window] setTitle: title]; +#endif } static NSString * JoinArguments(NSArray *argv, NSString *argv0) { @@ -646,6 +665,27 @@ static NSString *ShellQuote(NSString *s) { @implementation LaunchWindowController (Bookmark) +-(IBAction)defaultSave:(id)sender { + + BookmarkManager *bm = [BookmarkManager sharedManager]; + + NSDictionary *d = [self makeBookmark]; + + [bm saveDefault: d]; +} + +-(IBAction)defaultLoad:(id)sender { + + BookmarkManager *bm = [BookmarkManager sharedManager]; + + NSDictionary *d = [bm loadDefault]; + if (!d) { + [self reset: sender]; + return; + } + [self loadBookmark: d]; +} + -(IBAction)addBookmark:(id)sender { if (!_machine) return; @@ -679,10 +719,7 @@ static NSString *ShellQuote(NSString *s) { return; } - - //NSLog(@"%@", _bookmarkName); NSDictionary *d = [self makeBookmark]; - //NSLog(@"%@", d); [bm saveBookmark: d name: _bookmarkName]; @@ -694,15 +731,21 @@ static NSString *ShellQuote(NSString *s) { -(IBAction)bookmarkMenu:(id)sender { - Class StringClass = [NSString class]; - Class NumberClass = [NSNumber class]; - NSURL *url = [sender representedObject]; if (!url) return; NSDictionary *d = [NSDictionary dictionaryWithContentsOfURL: url]; if (!d) return; // oops... + [self loadBookmark: d]; +} + + +-(void)loadBookmark: (NSDictionary *)d { + Class StringClass = [NSString class]; + Class NumberClass = [NSNumber class]; + + NSString *machine = [d objectForKey: @"machine"]; if (!machine) return; @@ -731,6 +774,7 @@ static NSString *ShellQuote(NSString *s) { // Boolean values. NSNumber *n; +#undef _ #define _(a,b) n = [d objectForKey: a]; if ([n isKindOfClass: NumberClass]) [self b : [n boolValue]] _(@"debug", setMameDebug);