load bookmark...

This commit is contained in:
Kelvin Sherlock 2021-06-04 00:21:08 -04:00
parent 0b248e6aad
commit f628d99e4a
5 changed files with 76 additions and 25 deletions

View File

@ -44,6 +44,9 @@ extern NSString *kDefaultDownloadExtension;
@protocol Bookmark <NSObject> @protocol Bookmark <NSObject>
-(BOOL)loadBookmark: (NSDictionary *)bookmark; -(BOOL)loadBookmark: (NSDictionary *)bookmark;
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark; -(BOOL)saveBookmark: (NSMutableDictionary *)bookmark;
-(void)willLoadBookmark: (NSDictionary *)bookmark;
-(void)didLoadBookmark: (NSDictionary *)bookmark;
@end @end
#endif /* Ample_h */ #endif /* Ample_h */

View File

@ -24,7 +24,9 @@ static NSString *kMyContext = @"kMyContext";
static NSString *kContextMachine = @"kContextMachine"; static NSString *kContextMachine = @"kContextMachine";
@interface LaunchWindowController () @interface LaunchWindowController () {
BOOL _loadingBookmark;
}
@property (strong) IBOutlet MediaViewController *mediaController; @property (strong) IBOutlet MediaViewController *mediaController;
@property (strong) IBOutlet SlotViewController *slotController; @property (strong) IBOutlet SlotViewController *slotController;
@property (strong) IBOutlet MachineViewController *machineViewController; @property (strong) IBOutlet MachineViewController *machineViewController;
@ -128,7 +130,8 @@ static NSString *EffectsStrings[] = {
NSArray *keys = @[ NSArray *keys = @[
@"mameMachine", @"mameSquarePixels", @"mameWindowMode", //@"mameMachine", // - handled
@"mameSquarePixels", @"mameWindowMode",
@"mameMouse", @"mameSamples", @"mameMouse", @"mameSamples",
@"mameDebug", @"mameDebug",
@"mameSpeed", @"mameSpeed",
@ -163,8 +166,11 @@ static NSString *EffectsStrings[] = {
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context { -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (context == (__bridge void *)kMyContext) { if (context == (__bridge void *)kMyContext) {
if (_loadingBookmark) return;
[self buildCommandLine]; [self buildCommandLine];
} else if (context == (__bridge void *)kContextMachine) { } else if (context == (__bridge void *)kContextMachine) {
if (_loadingBookmark) return;
NSString *machine = [_machineViewController machine]; NSString *machine = [_machineViewController machine];
[self setMameMachine: machine]; [self setMameMachine: machine];
[_slotController setMachine: machine]; [_slotController setMachine: machine];
@ -619,25 +625,26 @@ static NSString *ShellQuote(NSString *s) {
NSString *machine = [d objectForKey: @"machine"]; NSString *machine = [d objectForKey: @"machine"];
if (!machine) return; if (!machine) return;
#if 0 _loadingBookmark = YES;
_bookmark = YES; [_machineViewController willLoadBookmark: d];
[_machineViewController willLoadBookmark]; [_slotController willLoadBookmark: d];
[_slotController willLoadBookmark]; [_mediaController willLoadBookmark: d];
[_mediaController willLoadBookmark];
[self setMameMachine: machine]; [self setMameMachine: machine];
[self updateSoftwareList];
[_softwareListControl setStringValue: [d objectForKey: @"software"]];
[_machineViewController loadBookmark: d]; [_machineViewController loadBookmark: d];
[_slotController loadBookmark: d]; [_slotController loadBookmark: d];
[_mediaController loadBookmark: d]; [_mediaController loadBookmark: d];
_bookmark = NO; [_machineViewController didLoadBookmark: d];
[_machineViewController didLoadBookmark]; [_slotController didLoadBookmark: d];
[_slotController didLoadBookmark]; [_mediaController didLoadBookmark: d];
[_mediaController didLoadBookmark];
_loadingBookmark = NO;
#endif
[self buildCommandLine]; [self buildCommandLine];
} }

View File

@ -123,25 +123,38 @@
NSUInteger ix[2] = {0, 0 }; NSUInteger ix[2] = {0, 0 };
for (NSDictionary *d in _data) { for (NSDictionary *d in _data) {
NSString *value = [d objectForKey: @"value"];
NSArray *children = [d objectForKey: @"children"]; NSArray *children = [d objectForKey: @"children"];
if ([machine isEqualToString: value]) {
path = [NSIndexPath indexPathWithIndexes: ix length: 1];
[browser setSelectionIndexPath: path];
return YES;
}
for (NSDictionary *dd in children) { for (NSDictionary *dd in children) {
NSString *value = [dd objectForKey: @"value"]; NSString *value = [dd objectForKey: @"value"];
if ([machine isEqualToString: value]) { if ([machine isEqualToString: value]) {
path = [NSIndexPath indexPathWithIndexes: ix length: 2]; path = [NSIndexPath indexPathWithIndexes: ix length: 2];
[browser setSelectionIndexPath: path]; [browser selectRow: ix[0] inColumn: 0];
[browser selectRow: ix[1] inColumn: 1];
//[browser setSelectionIndexPath: path];
return YES; return YES;
} }
++ix[1]; ++ix[1];
} }
ix[1] = 0; ix[1] = 0;
// check parent after.
NSString *value = [d objectForKey: @"value"];
if ([machine isEqualToString: value]) {
path = [NSIndexPath indexPathWithIndexes: ix length: 1];
[browser selectRow: ix[0] inColumn: 0];
// "setSelectionIndexPath: is not supported for browsers with matrix delegates."
//[browser setSelectionIndexPath: path];
return YES;
}
++ix[0]; ++ix[0];
} }
@ -154,4 +167,10 @@
return YES; return YES;
} }
-(void)willLoadBookmark:(NSDictionary *)bookmark {
}
-(void)didLoadBookmark:(NSDictionary *)bookmark {
}
@end @end

View File

@ -262,6 +262,8 @@
MediaCategory *_data[CATEGORY_COUNT]; MediaCategory *_data[CATEGORY_COUNT];
NSArray *_root; NSArray *_root;
Media _media; Media _media;
BOOL _loadingBookmark;
} }
@end @end
@ -744,4 +746,11 @@ static NSString *kDragType = @"private.ample.media";
return YES; return YES;
} }
-(void)willLoadBookmark:(NSDictionary *)bookmark {
_loadingBookmark = YES;
}
-(void)didLoadBookmark:(NSDictionary *)bookmark {
_loadingBookmark = NO;
}
@end @end

View File

@ -49,6 +49,7 @@ static unsigned RootKey = 0;
IBOutlet NSPopover *_popover; IBOutlet NSPopover *_popover;
BOOL _loadingBookmark;
} }
- (void)viewDidLoad { - (void)viewDidLoad {
@ -142,8 +143,10 @@ static unsigned RootKey = 0;
[_outlineView reloadData]; [_outlineView reloadData];
[self rebuildMedia]; if (!_loadingBookmark) {
[self rebuildArgs]; [self rebuildMedia];
[self rebuildArgs];
}
} }
-(void)setMachine: (NSString *)machine { -(void)setMachine: (NSString *)machine {
@ -281,8 +284,10 @@ static unsigned RootKey = 0;
#ifdef SLOT_TREE #ifdef SLOT_TREE
[_outlineView reloadData]; [_outlineView reloadData];
#endif #endif
[self rebuildMedia]; if (!_loadingBookmark) {
[self rebuildArgs]; [self rebuildMedia];
[self rebuildArgs];
}
} }
@end @end
@ -383,4 +388,12 @@ static unsigned RootKey = 0;
return YES; return YES;
} }
-(void)willLoadBookmark:(NSDictionary *)bookmark {
_loadingBookmark = YES;
}
-(void)didLoadBookmark:(NSDictionary *)bookmark {
_loadingBookmark = NO;
}
@end @end