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