From b513ebb9b83efda7e59ac0d1257f0ac23f4fe314 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Mon, 14 Aug 2023 02:19:59 +0200 Subject: Move application menu bar code to a new file Put the menu code in its own file to keep it more organised. We're also going to be adding a lot more code here for the base main menu. Wasn't sure if I should be releasing these menu objects, but it looks like the application works when I do release them, so maybe `setMainMenu` does a retain or copy. I can't decide if I should use C-style identifiers or Foundation-style in the menu file. --- src/AppDelegate.m | 5 +++++ src/main.m | 18 ------------------ src/main_menu.h | 8 ++++++++ src/main_menu.m | 22 ++++++++++++++++++++++ 4 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 src/main_menu.h create mode 100644 src/main_menu.m (limited to 'src') diff --git a/src/AppDelegate.m b/src/AppDelegate.m index 270be25..86ba5f6 100644 --- a/src/AppDelegate.m +++ b/src/AppDelegate.m @@ -1,4 +1,5 @@ #import "AppDelegate.h" +#import "main_menu.h" @implementation AppDelegate @@ -10,6 +11,10 @@ - (void)applicationWillFinishLaunching:(NSNotification *)notification { + NSMenu *menubar = main_menu_create(); + [NSApp setMainMenu:menubar]; + [menubar release]; + _window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 400) styleMask:NSWindowStyleMaskTitled diff --git a/src/main.m b/src/main.m index c7dac1b..5316dc2 100644 --- a/src/main.m +++ b/src/main.m @@ -10,29 +10,11 @@ int main() { 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]; - NSObject *app_delegate = [[AppDelegate alloc] init]; [application setDelegate:app_delegate]; [application run]; - [quit_menu_item release]; - [application_menu release]; - [application_menu_item release]; - [menubar release]; [pool drain]; return EXIT_SUCCESS; diff --git a/src/main_menu.h b/src/main_menu.h new file mode 100644 index 0000000..2ed9ed6 --- /dev/null +++ b/src/main_menu.h @@ -0,0 +1,8 @@ +#ifndef MAIN_MENU_H +#define MAIN_MENU_H + +#import + +NSMenu *main_menu_create(); + +#endif /* MAIN_MENU_H */ diff --git a/src/main_menu.m b/src/main_menu.m new file mode 100644 index 0000000..6cf11af --- /dev/null +++ b/src/main_menu.m @@ -0,0 +1,22 @@ +#import "main_menu.h" + +NSMenu *main_menu_create() +{ + 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]; + + [quit_menu_item release]; + [application_menu release]; + [application_menu_item release]; + + return menubar; +} -- cgit v1.2.3