aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTeddy Wing2023-08-14 02:19:59 +0200
committerTeddy Wing2023-08-14 02:19:59 +0200
commitb513ebb9b83efda7e59ac0d1257f0ac23f4fe314 (patch)
tree73956d4690cbf59feba162fc55607dca862e16a8 /src
parent5d242798e7a343b2012dca16e8d22af957205f93 (diff)
downloadBase-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.
Diffstat (limited to 'src')
-rw-r--r--src/AppDelegate.m5
-rw-r--r--src/main.m18
-rw-r--r--src/main_menu.h8
-rw-r--r--src/main_menu.m22
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
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<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;
+}