diff options
author | Teddy Wing | 2023-08-14 02:19:59 +0200 |
---|---|---|
committer | Teddy Wing | 2023-08-14 02:19:59 +0200 |
commit | b513ebb9b83efda7e59ac0d1257f0ac23f4fe314 (patch) | |
tree | 73956d4690cbf59feba162fc55607dca862e16a8 | |
parent | 5d242798e7a343b2012dca16e8d22af957205f93 (diff) | |
download | Base-Windowed-Application-b513ebb9b83efda7e59ac0d1257f0ac23f4fe314.tar.bz2 |
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.
-rw-r--r-- | src/AppDelegate.m | 5 | ||||
-rw-r--r-- | src/main.m | 18 | ||||
-rw-r--r-- | src/main_menu.h | 8 | ||||
-rw-r--r-- | src/main_menu.m | 22 |
4 files changed, 35 insertions, 18 deletions
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 @@ -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<NSApplicationDelegate> *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 <Cocoa/Cocoa.h> + +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; +} |