diff --git a/Ample/Base.lproj/LaunchWindow.xib b/Ample/Base.lproj/LaunchWindow.xib
index 2f134bb..81cb9e6 100644
--- a/Ample/Base.lproj/LaunchWindow.xib
+++ b/Ample/Base.lproj/LaunchWindow.xib
@@ -30,44 +30,6 @@
-
-
@@ -231,11 +193,11 @@ DQ
-
+
-
+
@@ -255,7 +217,7 @@ DQ
-
+
@@ -280,11 +242,11 @@ DQ
-
+
-
+
@@ -323,7 +285,7 @@ DQ
-
+
@@ -348,7 +310,7 @@ DQ
-
+
@@ -365,7 +327,7 @@ DQ
-
+
-
+
@@ -401,7 +363,7 @@ DQ
-
+
@@ -418,7 +380,7 @@ DQ
-
+
@@ -530,7 +512,10 @@ DQ
-
+
+
+
+
@@ -607,8 +592,45 @@ Gw
+
+
diff --git a/Ample/LaunchWindowController.m b/Ample/LaunchWindowController.m
index f9e1d94..2c39eff 100644
--- a/Ample/LaunchWindowController.m
+++ b/Ample/LaunchWindowController.m
@@ -137,7 +137,8 @@ static int EffectsIndex(NSString *str) {
}
-(void)reset {
- [self setMachine: nil];
+ // handled elsewhere.
+ //[self setMachine: nil];
[self setMameSpeed: 1];
[self setMameBGFX: YES];
@@ -145,6 +146,7 @@ static int EffectsIndex(NSString *str) {
[self setMameSamples: NO];
[self setMameSquarePixels: NO];
[self setMameDebug: NO];
+ [self setMameWindowMode: 0];
[self setMameBackend: 0];
[self setMameEffects: 0];
@@ -161,8 +163,16 @@ static int EffectsIndex(NSString *str) {
[self setMameBitBanger: NO];
[self setMameShareDirectory: NO];
+#if 0
[self setSoftware: nil];
- _softwareSet = nil;
+ //_softwareSet = nil;
+ [_softwareListControl setObjectValue: nil];
+#endif
+}
+
+-(void)resetSoftware {
+ [self setSoftware: nil];
+ //_softwareSet = nil;
[_softwareListControl setObjectValue: nil];
}
@@ -243,7 +253,6 @@ static void AddSubview(NSView *parent, NSView *child) {
NSString *machine = [_machineViewController machine];
[self setMachine: machine];
[_slotController setMachine: machine];
- [self updateSoftwareList];
[self buildCommandLine];
} else {
[super observeValueForKeyPath: keyPath ofObject: object change: change context: context];
@@ -270,6 +279,16 @@ static void AddSubview(NSView *parent, NSView *child) {
[[self window] setTitle: title];
#endif
+
+ // enable/disable the right-click menu
+ NSWindow *window = [self window];
+ NSView *view = [window contentView];
+ if (_machine) [view setMenu: [window menu]];
+ else [view setMenu: nil];
+
+
+ // software list.
+ [self updateSoftwareList];
}
static NSString * JoinArguments(NSArray *argv, NSString *argv0) {
@@ -627,13 +646,25 @@ static NSString *ShellQuote(NSString *s) {
}
--(IBAction)reset:(id)sender {
-
+-(IBAction)resetMachine:(id)sender {
[self reset];
- [_slotController resetSlots: sender];
- [_mediaController reset: sender];
}
+-(IBAction)resetAll:(id)sender {
+
+ [self reset];
+ [self resetSoftware];
+ [_slotController resetSlots: sender];
+ [_mediaController resetMedia: sender];
+}
+
+-(IBAction)resetMedia:(id)sender {
+ [_mediaController resetMedia: sender];
+ [_softwareListControl setObjectValue: nil];
+ [self setSoftware: nil];
+}
+
+
@end
@@ -682,7 +713,8 @@ static NSString *ShellQuote(NSString *s) {
NSDictionary *d = [bm loadDefault];
if (!d) {
- [self reset: sender];
+ [self resetAll: sender];
+ [self setMachine: nil];
[_slotController setMachine: nil];
return;
}
diff --git a/Ample/MediaViewController.h b/Ample/MediaViewController.h
index d7571dc..04174b0 100644
--- a/Ample/MediaViewController.h
+++ b/Ample/MediaViewController.h
@@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
- (IBAction)ejectAction:(id)sender;
- (IBAction)pathAction:(id)sender;
--(IBAction)reset:(id)sender;
+-(IBAction)resetMedia:(id)sender;
@end
diff --git a/Ample/MediaViewController.m b/Ample/MediaViewController.m
index 73f8cb3..0e436e6 100644
--- a/Ample/MediaViewController.m
+++ b/Ample/MediaViewController.m
@@ -395,6 +395,7 @@ x = media.name; cat = _data[index]; delta |= [cat setItemCount: x]
[item setUrl: nil];
delta = YES;
}
+ if ([cat pruneChildrenWithOutlineView: _outlineView]) delta = YES;
}
if (delta) {
[self rebuildRoot];
@@ -668,7 +669,7 @@ static NSString *kDragType = @"private.ample.media";
[self rebuildArgs];
}
--(IBAction)reset:(id)sender {
+-(IBAction)resetMedia:(id)sender {
[self resetDiskImages];
}