From 4366e924e44d4294b9791533486f3ab81317ec71 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Mon, 13 Jan 2025 20:39:23 +0100 Subject: initial commit --- src/CMakeLists.txt | 5 +++++ src/main.mm | 40 ++++++++++++++++++++++++++++++++++++++++ src/view-controller.hh | 6 ++++++ src/view-controller.mm | 15 +++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 src/CMakeLists.txt create mode 100644 src/main.mm create mode 100644 src/view-controller.hh create mode 100644 src/view-controller.mm (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..34c0ed3 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,5 @@ +target_sources( + nes + PRIVATE + main.mm + view-controller.mm) \ No newline at end of file diff --git a/src/main.mm b/src/main.mm new file mode 100644 index 0000000..a526e66 --- /dev/null +++ b/src/main.mm @@ -0,0 +1,40 @@ +#import +#import "view-controller.hh" + +int main(int argc, char** argv) +{ + NSApplication* app = [NSApplication sharedApplication]; + [app setActivationPolicy:NSApplicationActivationPolicyRegular]; + + NSMenuItem *quitItem = [[NSMenuItem alloc] init]; + [quitItem setTitle:@"Quit NES"]; + [quitItem setKeyEquivalent:@"q"]; + [quitItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand]; + [quitItem setTarget:app]; + [quitItem setAction:@selector(terminate:)]; + + NSMenu *menu = [[NSMenu alloc] init]; + [menu addItem:quitItem]; + + NSMenuItem *item = [[NSMenuItem alloc] init]; + [item setSubmenu:menu]; + + NSMenu *mainMenu = [[NSMenu alloc] init]; + [mainMenu addItem:item]; + [app setMainMenu:mainMenu]; + + NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0., 0., 640., 480.) + styleMask:(NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | + NSWindowMiniaturizeButton | NSWindowStyleMaskResizable) + backing:NSBackingStoreBuffered + defer:false]; + [window setTitle:@"NES"]; + [window setContentViewController:[[ViewController alloc] init]]; + [window setContentSize:NSMakeSize(640., 480.)]; + [window makeKeyAndOrderFront:nil]; + + [app activateIgnoringOtherApps:YES]; + [app run]; + + return 0; +} \ No newline at end of file diff --git a/src/view-controller.hh b/src/view-controller.hh new file mode 100644 index 0000000..a89a0c4 --- /dev/null +++ b/src/view-controller.hh @@ -0,0 +1,6 @@ +#pragma once + +#import + +@interface ViewController : NSViewController +@end \ No newline at end of file diff --git a/src/view-controller.mm b/src/view-controller.mm new file mode 100644 index 0000000..5f24326 --- /dev/null +++ b/src/view-controller.mm @@ -0,0 +1,15 @@ +#import "view-controller.hh" + +@implementation ViewController + +- (void)loadView +{ + [self setView:[[NSView alloc] init]]; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; +} + +@end \ No newline at end of file -- cgit v1.3.1