diff --git a/Ample/Base.lproj/DiskImages.xib b/Ample/Base.lproj/DiskImages.xib index b499c46..7956ea5 100644 --- a/Ample/Base.lproj/DiskImages.xib +++ b/Ample/Base.lproj/DiskImages.xib @@ -24,14 +24,14 @@ - + - + @@ -64,19 +64,19 @@ - FilePathTransformer + - + @@ -103,6 +103,7 @@ + @@ -129,5 +130,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/Ample/DiskImagesWindowController.h b/Ample/DiskImagesWindowController.h index 8d8bb76..b792240 100644 --- a/Ample/DiskImagesWindowController.h +++ b/Ample/DiskImagesWindowController.h @@ -18,5 +18,9 @@ NS_ASSUME_NONNULL_BEGIN @end +@interface DiskImagesWindowController (Menu) + +@end + NS_ASSUME_NONNULL_END diff --git a/Ample/DiskImagesWindowController.m b/Ample/DiskImagesWindowController.m index 80492ea..b9a44c1 100644 --- a/Ample/DiskImagesWindowController.m +++ b/Ample/DiskImagesWindowController.m @@ -156,6 +156,47 @@ return YES; } + +-(NSMutableDictionary *)clickedItem { + + NSInteger row = [_tableView clickedRow]; + if (row < 0) return nil; + + NSTableCellView *v = [_tableView viewAtColumn: 0 row: row makeIfNecessary: NO]; + return [v objectValue]; +} +#pragma mark - IBActions + +- (IBAction)showInFinder:(id)sender { + + NSMutableDictionary *item = [self clickedItem]; + if (!item) return; + NSString *path = [item objectForKey: @"path"]; + + NSURL *url = [NSURL fileURLWithPath: path]; + if (!url) return; + + NSWorkspace *ws = [NSWorkspace sharedWorkspace]; + [ws activateFileViewerSelectingURLs: @[url]]; +} + +- (IBAction)eject:(id)sender { + + NSMutableDictionary *item = [self clickedItem]; + if (!item) return; + + @synchronized (self) { + + if (_arrayController) { + [_arrayController removeObject: item]; + } else { + [_content removeObject: item]; + } + _dirty = YES; + } + +} + @end @implementation DiskImagesWindowController (TableView)