diff options
author | Teddy Wing | 2023-08-14 00:44:08 +0200 |
---|---|---|
committer | Teddy Wing | 2023-08-14 00:53:08 +0200 |
commit | 70b8d569190c7a54f0dc0e2cd11ead6577caa840 (patch) | |
tree | 061a06dadab6513d3a6e32cbca017653b4683ae6 | |
download | Base-Windowed-Application-70b8d569190c7a54f0dc0e2cd11ead6577caa840.tar.bz2 |
Simple windowed application
Create a simple windowed Cocoa application with an application menu and
a "Quit" menu item.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 25 | ||||
-rw-r--r-- | src/main.m | 45 |
3 files changed, 71 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5761abc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.o diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9101cc4 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +SOURCES := $(shell find src -name '*.m') +OBJECTS := $(SOURCES:%.m=%.o) + +PRODUCT := Application + + +.PHONY: all +all: $(PRODUCT) + +%.o: %.m + $(CC) \ + -x objective-c \ + -c \ + $< \ + -o $@ + +$(PRODUCT): $(OBJECTS) + $(CC) \ + -framework Cocoa \ + -o $@ \ + $^ + +.PHONY: clean +clean: + rm $(OBJECTS) diff --git a/src/main.m b/src/main.m new file mode 100644 index 0000000..bc5e385 --- /dev/null +++ b/src/main.m @@ -0,0 +1,45 @@ +#include <stdlib.h> + +#import <Cocoa/Cocoa.h> + +int main() { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + NSApplication *application = [NSApplication sharedApplication]; + [application setActivationPolicy:NSApplicationActivationPolicyRegular]; + + NSMenu *menubar = [[NSMenu alloc] init]; + NSMenuItem *application_menu_item = [[NSMenuItem alloc] init]; + [menubar addItem:application_menu_item]; + + NSMenu *application_menu = [[NSMenu alloc] init]; + NSMenuItem *quit_menu_item = [[NSMenuItem alloc] + initWithTitle:@"Quit" + action:@selector(terminate:) + keyEquivalent:@"q"]; + [application_menu addItem:quit_menu_item]; + [application_menu_item setSubmenu:application_menu]; + + [application setMainMenu:menubar]; + + NSWindow *window = [[NSWindow alloc] + initWithContentRect:NSMakeRect(0, 0, 400, 400) + styleMask:NSWindowStyleMaskTitled + backing:NSBackingStoreBuffered + defer:NO]; + + [window setTitle:@"Application"]; + [window cascadeTopLeftFromPoint:NSMakePoint(100, 100)]; + [window makeKeyAndOrderFront:nil]; + + [application run]; + + [window release]; + [quit_menu_item release]; + [application_menu release]; + [application_menu_item release]; + [menubar release]; + [pool drain]; + + return EXIT_SUCCESS; +} |