From 7eb4a92d2abefc17b38b80e56a8132e0adcb803c Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Wed, 10 Jun 2020 23:28:33 +0300 Subject: [PATCH] Improve print window, add a button for actual physical printing --- Cocoa/Document.h | 1 - Cocoa/Document.m | 23 ++++++++++++-------- Cocoa/Document.xib | 52 ++++++++++++++++++++++++++-------------------- 3 files changed, 44 insertions(+), 32 deletions(-) diff --git a/Cocoa/Document.h b/Cocoa/Document.h index 9353788..660d7bc 100644 --- a/Cocoa/Document.h +++ b/Cocoa/Document.h @@ -30,7 +30,6 @@ @property (strong) IBOutlet NSTableView *spritesTableView; @property (strong) IBOutlet NSPanel *printerFeedWindow; @property (strong) IBOutlet NSImageView *feedImageView; -@property (strong) IBOutlet NSButton *feedSaveButton; @property (strong) IBOutlet NSTextView *debuggerSideViewInput; @property (strong) IBOutlet NSTextView *debuggerSideView; @property (strong) IBOutlet GBSplitView *debuggerSplitView; diff --git a/Cocoa/Document.m b/Cocoa/Document.m index fdb7d97..ece8092 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -565,16 +565,10 @@ static void rumbleCallback(GB_gameboy_t *gb, double amp) self.vramStatusLabel.cell.backgroundStyle = NSBackgroundStyleRaised; - [self.feedSaveButton removeFromSuperview]; self.consoleWindow.title = [NSString stringWithFormat:@"Debug Console – %@", [[self.fileURL path] lastPathComponent]]; self.debuggerSplitView.dividerColor = [NSColor clearColor]; - - /* contentView.superview.subviews.lastObject is the titlebar view */ - NSView *titleView = self.printerFeedWindow.contentView.superview.subviews.lastObject; - [titleView addSubview: self.feedSaveButton]; - self.feedSaveButton.frame = (NSRect){{268, 2}, {48, 17}}; - + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateHighpassFilter) name:@"GBHighpassFilterChanged" @@ -1636,13 +1630,24 @@ static void rumbleCallback(GB_gameboy_t *gb, double amp) scale:2.0]; NSRect frame = self.printerFeedWindow.frame; frame.size = self.feedImageView.image.size; + [self.printerFeedWindow setContentMaxSize:frame.size]; frame.size.height += self.printerFeedWindow.frame.size.height - self.printerFeedWindow.contentView.frame.size.height; - [self.printerFeedWindow setMaxSize:frame.size]; [self.printerFeedWindow setFrame:frame display:NO animate: self.printerFeedWindow.isVisible]; [self.printerFeedWindow orderFront:NULL]; }); } + +- (void)printDocument:(id)sender +{ + if (self.feedImageView.image.size.height == 0) { + NSBeep(); return; + } + NSImageView *view = [[NSImageView alloc] initWithFrame:(NSRect){{0,0}, self.feedImageView.image.size}]; + view.image = self.feedImageView.image; + [[NSPrintOperation printOperationWithView:view] runOperationModalForWindow:self.printerFeedWindow delegate:nil didRunSelector:NULL contextInfo:NULL]; +} + - (IBAction)savePrinterFeed:(id)sender { bool shouldResume = running; @@ -1678,7 +1683,7 @@ static void rumbleCallback(GB_gameboy_t *gb, double amp) - (IBAction)connectPrinter:(id)sender { [self performAtomicBlock:^{ - accessory = GBAccessoryPrinter; + accessory = GBAccessoryPrinter; GB_connect_printer(&gb, printImage); }]; } diff --git a/Cocoa/Document.xib b/Cocoa/Document.xib index e2b0ca6..c13c9dd 100644 --- a/Cocoa/Document.xib +++ b/Cocoa/Document.xib @@ -19,7 +19,6 @@ - @@ -116,7 +115,7 @@ - + @@ -153,7 +152,7 @@ - + @@ -187,7 +186,7 @@ - + @@ -339,7 +338,7 @@ - + @@ -505,7 +504,7 @@ - + @@ -640,7 +639,7 @@ - + @@ -649,7 +648,7 @@ - + @@ -786,9 +785,10 @@ + - + @@ -797,20 +797,27 @@ + + + + + + + + + + + + + + + + + + + - @@ -970,7 +977,7 @@ - + @@ -1069,6 +1076,7 @@ +