mirror of https://github.com/ksherlock/ample.git
window restoration support.
only applies if you option quit (quit and save windows) or quit unexpectedly.
This commit is contained in:
parent
ecfd5fb7a8
commit
f90f5a6bf3
|
@ -465,18 +465,14 @@
|
||||||
B6BA257D24E99BE9005FB8FF /* Ample */ = {
|
B6BA257D24E99BE9005FB8FF /* Ample */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
B64AF1F4250ED5E400A09B9B /* TableCellView.h */,
|
|
||||||
B64AF1F5250ED5E400A09B9B /* TableCellView.m */,
|
|
||||||
B6E9A17E25088B1B005E7525 /* NewSlotViewController.h */,
|
|
||||||
B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */,
|
|
||||||
B63C1B9125008A2700511A71 /* DownloadWindowController.h */,
|
|
||||||
B63C1B9225008A2700511A71 /* DownloadWindowController.m */,
|
|
||||||
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
|
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
|
||||||
B6BA257F24E99BE9005FB8FF /* AppDelegate.m */,
|
B6BA257F24E99BE9005FB8FF /* AppDelegate.m */,
|
||||||
B63C1B8924FF4B7100511A71 /* Ample.h */,
|
B63C1B8924FF4B7100511A71 /* Ample.h */,
|
||||||
B63C1B8A24FF4BF700511A71 /* Ample.m */,
|
B63C1B8A24FF4BF700511A71 /* Ample.m */,
|
||||||
B6D6DE3F24FADFAC00661A5F /* LaunchWindowController.h */,
|
B64AF1F4250ED5E400A09B9B /* TableCellView.h */,
|
||||||
B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */,
|
B64AF1F5250ED5E400A09B9B /* TableCellView.m */,
|
||||||
|
B6E9A17E25088B1B005E7525 /* NewSlotViewController.h */,
|
||||||
|
B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */,
|
||||||
B65593B024ECB61800722E0C /* SlotViewController.m */,
|
B65593B024ECB61800722E0C /* SlotViewController.m */,
|
||||||
B65593AF24ECB61800722E0C /* SlotViewController.h */,
|
B65593AF24ECB61800722E0C /* SlotViewController.h */,
|
||||||
B64979C024EF6703008ABD20 /* MediaViewController.h */,
|
B64979C024EF6703008ABD20 /* MediaViewController.h */,
|
||||||
|
@ -487,14 +483,9 @@
|
||||||
B60A6E1224EE0AE2004B7EEF /* FlippedView.h */,
|
B60A6E1224EE0AE2004B7EEF /* FlippedView.h */,
|
||||||
B608E17D2502FE0C00D53465 /* TransparentScroller.h */,
|
B608E17D2502FE0C00D53465 /* TransparentScroller.h */,
|
||||||
B608E17E2502FE0C00D53465 /* TransparentScroller.m */,
|
B608E17E2502FE0C00D53465 /* TransparentScroller.m */,
|
||||||
B6004DED24FB05D600D38596 /* LogWindowController.h */,
|
B6BA563A251685DA00B0C47D /* Window Controllers */,
|
||||||
B6004DEE24FB05D600D38596 /* LogWindowController.m */,
|
|
||||||
B66236A724FD9A34006CABD7 /* PreferencesWindowController.h */,
|
|
||||||
B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */,
|
|
||||||
B6B9EA652506A5550080E70D /* EjectButton.h */,
|
B6B9EA652506A5550080E70D /* EjectButton.h */,
|
||||||
B6B9EA642506A5550080E70D /* EjectButton.m */,
|
B6B9EA642506A5550080E70D /* EjectButton.m */,
|
||||||
B64AF1F0250ECB2E00A09B9B /* DiskImagesWindowController.h */,
|
|
||||||
B64AF1F1250ECB2E00A09B9B /* DiskImagesWindowController.m */,
|
|
||||||
B64AF1F8250EF6A500A09B9B /* Transformers.h */,
|
B64AF1F8250EF6A500A09B9B /* Transformers.h */,
|
||||||
B64AF1F9250EF6A500A09B9B /* Transformers.m */,
|
B64AF1F9250EF6A500A09B9B /* Transformers.m */,
|
||||||
B6BA258124E99BEB005FB8FF /* Assets.xcassets */,
|
B6BA258124E99BEB005FB8FF /* Assets.xcassets */,
|
||||||
|
@ -509,6 +500,23 @@
|
||||||
path = Ample;
|
path = Ample;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
B6BA563A251685DA00B0C47D /* Window Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
B64AF1F0250ECB2E00A09B9B /* DiskImagesWindowController.h */,
|
||||||
|
B64AF1F1250ECB2E00A09B9B /* DiskImagesWindowController.m */,
|
||||||
|
B63C1B9125008A2700511A71 /* DownloadWindowController.h */,
|
||||||
|
B63C1B9225008A2700511A71 /* DownloadWindowController.m */,
|
||||||
|
B6D6DE3F24FADFAC00661A5F /* LaunchWindowController.h */,
|
||||||
|
B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */,
|
||||||
|
B6004DED24FB05D600D38596 /* LogWindowController.h */,
|
||||||
|
B6004DEE24FB05D600D38596 /* LogWindowController.m */,
|
||||||
|
B66236A724FD9A34006CABD7 /* PreferencesWindowController.h */,
|
||||||
|
B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */,
|
||||||
|
);
|
||||||
|
name = "Window Controllers";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
B6D6DE4224FAEE8900661A5F /* Nibs */ = {
|
B6D6DE4224FAEE8900661A5F /* Nibs */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
|
|
@ -46,12 +46,13 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_diskImages = [DiskImagesWindowController sharedInstance]; //[DiskImagesWindowController new];
|
||||||
|
|
||||||
if ([self installMameComponents]) {
|
if ([self installMameComponents]) {
|
||||||
|
|
||||||
[self displayLaunchWindow];
|
[self displayLaunchWindow];
|
||||||
}
|
}
|
||||||
|
|
||||||
_diskImages = [DiskImagesWindowController new];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)displayLaunchWindow {
|
-(void)displayLaunchWindow {
|
||||||
|
@ -119,6 +120,7 @@
|
||||||
}
|
}
|
||||||
[win close];
|
[win close];
|
||||||
[self displayLaunchWindow];
|
[self displayLaunchWindow];
|
||||||
|
[self displayROMS: nil];
|
||||||
});
|
});
|
||||||
|
|
||||||
}];
|
}];
|
||||||
|
@ -152,15 +154,16 @@
|
||||||
|
|
||||||
- (IBAction)displayROMS:(id)sender {
|
- (IBAction)displayROMS:(id)sender {
|
||||||
if (!_downloader) {
|
if (!_downloader) {
|
||||||
_downloader = [DownloadWindowController new];
|
_downloader = [DownloadWindowController sharedInstance];
|
||||||
}
|
}
|
||||||
[_downloader showWindow: sender];
|
[_downloader showWindow: sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)displayRecentDiskImages:(id)sender {
|
- (IBAction)displayRecentDiskImages:(id)sender {
|
||||||
if (!_diskImages) {
|
if (!_diskImages) {
|
||||||
_diskImages = [DiskImagesWindowController new];
|
_diskImages = [DiskImagesWindowController sharedInstance];
|
||||||
}
|
}
|
||||||
[_diskImages showWindow: sender];
|
[_diskImages showWindow: sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -10,5 +10,7 @@
|
||||||
<true/>
|
<true/>
|
||||||
<key>MamePath</key>
|
<key>MamePath</key>
|
||||||
<string>/usr/local/bin/mame</string>
|
<string>/usr/local/bin/mame</string>
|
||||||
|
<key>NSQuitAlwaysKeepsWindows</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -10,7 +10,9 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface DiskImagesWindowController : NSWindowController
|
@interface DiskImagesWindowController : NSWindowController <NSWindowRestoration>
|
||||||
|
|
||||||
|
+(instancetype)sharedInstance;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,21 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+(instancetype)sharedInstance {
|
||||||
|
static DiskImagesWindowController *me;
|
||||||
|
if (!me) {
|
||||||
|
me = [self new];
|
||||||
|
}
|
||||||
|
return me;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)restoreWindowWithIdentifier:(NSUserInterfaceItemIdentifier)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandler {
|
||||||
|
NSLog(@"restore disk images window");
|
||||||
|
NSWindowController *controller = [self sharedInstance];
|
||||||
|
NSWindow *w = [controller window];
|
||||||
|
[w restoreStateWithCoder: state];
|
||||||
|
completionHandler(w, nil);
|
||||||
|
}
|
||||||
|
|
||||||
-(instancetype)init {
|
-(instancetype)init {
|
||||||
|
|
||||||
|
@ -48,6 +63,10 @@
|
||||||
[self setContent: [NSMutableArray new]];
|
[self setContent: [NSMutableArray new]];
|
||||||
|
|
||||||
[super windowDidLoad];
|
[super windowDidLoad];
|
||||||
|
NSWindow *window = [self window];
|
||||||
|
[window setRestorable: YES];
|
||||||
|
[window setRestorationClass: [self class]];
|
||||||
|
|
||||||
|
|
||||||
[_tableView registerForDraggedTypes: @[NSPasteboardTypeFileURL]];
|
[_tableView registerForDraggedTypes: @[NSPasteboardTypeFileURL]];
|
||||||
[_tableView setDraggingSourceOperationMask: NSDragOperationCopy forLocal: NO]; // enable drag/drop to othr apps.
|
[_tableView setDraggingSourceOperationMask: NSDragOperationCopy forLocal: NO]; // enable drag/drop to othr apps.
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface DownloadWindowController : NSWindowController
|
@interface DownloadWindowController : NSWindowController <NSWindowRestoration>
|
||||||
|
|
||||||
@property NSString *currentROM;
|
@property NSString *currentROM;
|
||||||
@property NSInteger currentCount;
|
@property NSInteger currentCount;
|
||||||
|
@ -18,6 +18,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
@property NSInteger errorCount;
|
@property NSInteger errorCount;
|
||||||
@property BOOL active;
|
@property BOOL active;
|
||||||
|
|
||||||
|
+(instancetype)sharedInstance;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface DownloadWindowController (URL) <NSURLSessionTaskDelegate, NSURLSessionDownloadDelegate>
|
@interface DownloadWindowController (URL) <NSURLSessionTaskDelegate, NSURLSessionDownloadDelegate>
|
||||||
|
|
|
@ -52,12 +52,38 @@ enum {
|
||||||
NSMutableDictionary *_taskIndex;
|
NSMutableDictionary *_taskIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+(instancetype)sharedInstance {
|
||||||
|
static DownloadWindowController *me = nil;
|
||||||
|
if (!me) {
|
||||||
|
me = [self new];
|
||||||
|
}
|
||||||
|
return me;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)restoreWindowWithIdentifier:(nonnull NSUserInterfaceItemIdentifier)identifier state:(nonnull NSCoder *)state completionHandler:(nonnull void (^)(NSWindow * _Nullable, NSError * _Nullable))completionHandler {
|
||||||
|
NSLog(@"restore rom manager window");
|
||||||
|
|
||||||
|
NSWindowController *controller = [DownloadWindowController sharedInstance];
|
||||||
|
NSWindow *w = [controller window];
|
||||||
|
[w restoreStateWithCoder: state];
|
||||||
|
completionHandler(w, nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
- (void)encodeWithCoder:(nonnull NSCoder *)coder {
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
-(NSString *)windowNibName {
|
-(NSString *)windowNibName {
|
||||||
return @"DownloadWindow";
|
return @"DownloadWindow";
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)windowDidLoad {
|
- (void)windowDidLoad {
|
||||||
[super windowDidLoad];
|
[super windowDidLoad];
|
||||||
|
NSWindow *window = [self window];
|
||||||
|
[window setRestorable: YES];
|
||||||
|
[window setRestorationClass: [self class]];
|
||||||
|
|
||||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||||
|
|
||||||
|
@ -303,6 +329,7 @@ enum {
|
||||||
*/
|
*/
|
||||||
NSLog(@"%@", src);
|
NSLog(@"%@", src);
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation DownloadWindowController (Table)
|
@implementation DownloadWindowController (Table)
|
||||||
|
|
Loading…
Reference in New Issue