diff --git a/MA2ME/AppDelegate.m b/MA2ME/AppDelegate.m
index 378f6d3..d632eb2 100644
--- a/MA2ME/AppDelegate.m
+++ b/MA2ME/AppDelegate.m
@@ -91,7 +91,8 @@ static NSString *kMyContext = @"kMyContext";
[self addObserver: self forKeyPath: @"mameNoThrottle" options:0 context: (__bridge void * _Nullable)(kMyContext)];
[_slotController addObserver: self forKeyPath: @"args" options: 0 context: (__bridge void * _Nullable)(kMyContext)];
-
+ [_mediaController addObserver: self forKeyPath: @"args" options: 0 context: (__bridge void * _Nullable)(kMyContext)];
+
[_mediaController bind: @"media" toObject: _slotController withKeyPath: @"media" options: 0];
[self buildCommandLine];
@@ -225,11 +226,17 @@ static NSString * JoinArguments(NSArray *argv) {
}
- NSArray *args = [_slotController args];
+ NSArray *args;
+ args = [_slotController args];
if ([args count]) {
[argv addObjectsFromArray: args];
}
+ args = [_mediaController args];
+ if ([args count]) {
+ [argv addObjectsFromArray: args];
+ }
+
if (_mameNoThrottle) [argv addObject: @"-nothrottle"];
diff --git a/MA2ME/MA2ME/Base.lproj/MediaView.xib b/MA2ME/MA2ME/Base.lproj/MediaView.xib
index 59d3a0a..96c43aa 100644
--- a/MA2ME/MA2ME/Base.lproj/MediaView.xib
+++ b/MA2ME/MA2ME/Base.lproj/MediaView.xib
@@ -63,10 +63,10 @@
-
+
-
+
@@ -87,6 +87,9 @@
+
+
+
diff --git a/MA2ME/MediaViewController.h b/MA2ME/MediaViewController.h
index f13f462..456fd8d 100644
--- a/MA2ME/MediaViewController.h
+++ b/MA2ME/MediaViewController.h
@@ -14,7 +14,10 @@ NS_ASSUME_NONNULL_BEGIN
@property (weak) IBOutlet NSOutlineView *outlineView;
@property (nonatomic) NSDictionary *media;
-- (IBAction)buttonDelete:(id)sender;
+@property NSArray *args;
+
+- (IBAction)deleteAction:(id)sender;
+- (IBAction)pathAction:(id)sender;
//-(void)setMedia: (NSDictionary *)media;
diff --git a/MA2ME/MediaViewController.m b/MA2ME/MediaViewController.m
index e71d54d..568a8df 100644
--- a/MA2ME/MediaViewController.m
+++ b/MA2ME/MediaViewController.m
@@ -233,6 +233,36 @@ enum {
kIndexCassette
};
+-(void)rebuildArgs {
+
+ static char* prefix[] = {
+ "flop", "flop", "hard", "cdrm", "cass"
+ };
+ NSMutableArray *args = [NSMutableArray new];
+
+ unsigned counts[5] = { 0, 0, 0, 0, 0 };
+
+ for (unsigned j = 0; j < 5; ++j) {
+
+ MediaCategory *cat = _data[j];
+ NSInteger valid = [cat validCount];
+ for (NSInteger i = 0; i < valid; ++i) {
+ counts[j]++;
+
+ MediaItem *item = [cat objectAtIndex: i];
+ NSURL *url = [item url];
+ if (!url) continue;
+ [args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], counts[j]]];
+ NSString *s = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
+
+ [args addObject: s];
+ }
+ if (j == 0) counts[1] = counts[0]; // 3.5/5.25
+ }
+
+ [self setArgs: args];
+}
+
-(void)rebuildRoot {
NSMutableArray *tmp = [NSMutableArray new];
for (unsigned j = 0 ; j < 5; ++j) {
@@ -274,7 +304,10 @@ enum {
}
- if (delta) [self rebuildRoot];
+ if (delta) {
+ [self rebuildRoot];
+ [self rebuildArgs];
+ }
}
- (void)viewDidLoad {
@@ -371,7 +404,7 @@ enum {
#pragma mark - IBActions
-- (IBAction)buttonDelete:(id)sender {
+- (IBAction)deleteAction:(id)sender {
NSInteger row = [_outlineView rowForView: sender];
if (row < 0) return;
@@ -386,5 +419,10 @@ enum {
MediaCategory *cat = [_outlineView parentForItem: item];
if ([cat pruneChildren]) [self rebuildRoot];
}
+ [self rebuildArgs];
+}
+
+- (IBAction)pathAction:(id)sender {
+ [self rebuildArgs];
}
@end