snes9x/macosx/Snes9x/S9xOpenMultipleViewControll...

114 lines
1.9 KiB
Objective-C

//
// S9xOpenMultipleViewController.m
// Snes9x
//
// Created by Buckley on 3/25/23.
//
#import "S9xOpenMultipleViewController.h"
@interface S9xOpenMultipleViewController ()
@property (nonatomic, weak) IBOutlet NSTextField *label1;
@property (nonatomic, weak) IBOutlet NSTextField *label2;
@property (nonatomic, weak) IBOutlet NSButton *okButton;
@end
@implementation S9xOpenMultipleViewController
- (void)open:(void (^)(NSURL *))completionBlock
{
NSOpenPanel *openPanel = [NSOpenPanel new];
openPanel.allowsMultipleSelection = NO;
openPanel.canChooseDirectories = NO;
[openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse response)
{
if (response == NSModalResponseOK)
{
completionBlock(openPanel.URL);
}
}];
}
- (void)updateOKButton
{
self.okButton.enabled = (self.fileURL1 != nil);
}
- (IBAction)choose1:(id)sender
{
[self open:^(NSURL *fileURL)
{
self.fileURL1 = fileURL;
}];
}
- (IBAction)choose2:(id)sender
{
[self open:^(NSURL *fileURL)
{
self.fileURL2 = fileURL;
}];
}
- (IBAction)go:(id)sender
{
if (self.completionBlock != nil)
{
[self.view.window close];
[NSApp stopModal];
if (self.fileURL1 != nil)
{
if (self.fileURL2 != nil)
{
self.completionBlock(@[self.fileURL1, self.fileURL2]);
}
else
{
self.completionBlock(@[self.fileURL1]);
}
}
}
}
- (IBAction)cancel:(id)sender
{
[self.view.window close];
[NSApp stopModal];
}
- (void)setFileURL1:(NSURL *)fileURL1
{
_fileURL1 = fileURL1;
if (fileURL1 != nil)
{
self.label1.stringValue = fileURL1.lastPathComponent;
}
else
{
self.label1.stringValue = @"";
}
[self updateOKButton];
}
- (void)setFileURL2:(NSURL *)fileURL2
{
_fileURL2 = fileURL2;
if (fileURL2 != nil)
{
self.label2.stringValue = fileURL2.lastPathComponent;
}
else
{
self.label2.stringValue = @"";
}
[self updateOKButton];
}
@end