From 51b7780d834e6781e32a6b61696f3aade9bdb1fe Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 1 Dec 2018 16:08:59 +0200 Subject: [PATCH] Redesign the preferences window --- Cocoa/AppDelegate.h | 5 + Cocoa/AppDelegate.m | 22 +- Cocoa/CPU.png | Bin 0 -> 18330 bytes Cocoa/CPU@2x.png | Bin 0 -> 19184 bytes Cocoa/Display.png | Bin 0 -> 19795 bytes Cocoa/Display@2x.png | Bin 0 -> 20722 bytes Cocoa/Joypad.png | Bin 0 -> 19966 bytes Cocoa/Joypad@2x.png | Bin 0 -> 20863 bytes Cocoa/Preferences.xib | 622 +++++++++++++++++++++++------------------- Cocoa/Speaker.png | Bin 0 -> 18543 bytes Cocoa/Speaker@2x.png | Bin 0 -> 19746 bytes Makefile | 4 +- 12 files changed, 372 insertions(+), 281 deletions(-) create mode 100644 Cocoa/CPU.png create mode 100644 Cocoa/CPU@2x.png create mode 100644 Cocoa/Display.png create mode 100644 Cocoa/Display@2x.png create mode 100644 Cocoa/Joypad.png create mode 100644 Cocoa/Joypad@2x.png create mode 100644 Cocoa/Speaker.png create mode 100644 Cocoa/Speaker@2x.png diff --git a/Cocoa/AppDelegate.h b/Cocoa/AppDelegate.h index d4ffe7c..608a50c 100644 --- a/Cocoa/AppDelegate.h +++ b/Cocoa/AppDelegate.h @@ -3,8 +3,13 @@ @interface AppDelegate : NSObject @property IBOutlet NSWindow *preferencesWindow; +@property (strong) IBOutlet NSView *graphicsTab; +@property (strong) IBOutlet NSView *emulationTab; +@property (strong) IBOutlet NSView *audioTab; +@property (strong) IBOutlet NSView *controlsTab; - (IBAction)showPreferences: (id) sender; - (IBAction)toggleDeveloperMode:(id)sender; +- (IBAction)switchPreferencesTab:(id)sender; @end diff --git a/Cocoa/AppDelegate.m b/Cocoa/AppDelegate.m index 44f5683..a9c5a9e 100644 --- a/Cocoa/AppDelegate.m +++ b/Cocoa/AppDelegate.m @@ -6,6 +6,7 @@ @implementation AppDelegate { NSWindow *preferences_window; + NSArray *preferences_tabs; } - (void) applicationDidFinishLaunching:(NSNotification *)notification @@ -44,10 +45,24 @@ [defaults setBool:![defaults boolForKey:@"DeveloperMode"] forKey:@"DeveloperMode"]; } +- (IBAction)switchPreferencesTab:(id)sender +{ + for (NSView *view in preferences_tabs) { + [view removeFromSuperview]; + } + NSView *tab = preferences_tabs[[sender tag]]; + NSRect old = [_preferencesWindow frame]; + NSRect new = [_preferencesWindow frameRectForContentRect:tab.frame]; + new.origin.x = old.origin.x; + new.origin.y = old.origin.y + (old.size.height - new.size.height); + [_preferencesWindow setFrame:new display:YES animate:_preferencesWindow.visible]; + [_preferencesWindow.contentView addSubview:tab]; +} + - (BOOL)validateMenuItem:(NSMenuItem *)anItem { if ([anItem action] == @selector(toggleDeveloperMode:)) { - [(NSMenuItem*)anItem setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"DeveloperMode"]]; + [(NSMenuItem *)anItem setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"DeveloperMode"]]; } return true; @@ -58,6 +73,11 @@ NSArray *objects; if (!_preferencesWindow) { [[NSBundle mainBundle] loadNibNamed:@"Preferences" owner:self topLevelObjects:&objects]; + NSToolbarItem *first_toolbar_item = [_preferencesWindow.toolbar.items firstObject]; + _preferencesWindow.toolbar.selectedItemIdentifier = [first_toolbar_item itemIdentifier]; + preferences_tabs = @[self.emulationTab, self.graphicsTab, self.audioTab, self.controlsTab]; + [self switchPreferencesTab:first_toolbar_item]; + [_preferencesWindow center]; } [_preferencesWindow makeKeyAndOrderFront:self]; } diff --git a/Cocoa/CPU.png b/Cocoa/CPU.png new file mode 100644 index 0000000000000000000000000000000000000000..7f13621351f0de516706036db2704d63de8e7abd GIT binary patch literal 18330 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 literal 0 HcmV?d00001 diff --git a/Cocoa/Joypad.png b/Cocoa/Joypad.png new file mode 100644 index 0000000000000000000000000000000000000000..f30d8f99f08ffdf38d4b1b0c31b327f0edff93fd GIT binary patch literal 19966 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 literal 0 HcmV?d00001 diff --git a/Cocoa/Joypad@2x.png b/Cocoa/Joypad@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d91ee30b9ddefe4c041bbb3ecd95059c298bf9bf GIT binary patch literal 20863 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 literal 0 HcmV?d00001 diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index f712a24..ff0df58 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -8,297 +8,59 @@ + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -308,7 +70,311 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cocoa/Speaker.png b/Cocoa/Speaker.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6b556a5a085459bff39898b411e4a5e177c89d GIT binary patch literal 18543 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 P0xk9n6dm$iz2ScV#@DwE literal 0 HcmV?d00001 diff --git a/Cocoa/Speaker@2x.png b/Cocoa/Speaker@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..41c46ffdb97577786ed67a1e0972b698af41a54c GIT binary patch literal 19746 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 $(BIN)/SameBoy.app/Contents/Info.plist cp Cocoa/License.html $(BIN)/SameBoy.app/Contents/Resources/Credits.html $(MKDIR) -p $(BIN)/SameBoy.app/Contents/Resources/Shaders