Vuo 2.4.4
Loading...
Searching...
No Matches
VuoAppMenu.m
Go to the documentation of this file.
1
10#import "VuoAppAboutBox.h"
11
15@interface VuoAppMenu : NSMenu
16@end
17
18@implementation VuoAppMenu
19
23- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
24{
25 [super performKeyEquivalent:theEvent];
26
27 // https://b33p.net/kosada/node/11966
28 // Always return YES, even if the event wasn't handled, to prevent the `NSBeep()`
29 // (which happens by default if no window or menu handles the event).
30 return YES;
31}
32
33@end
34
43void *VuoApp_setMenuItems(void *items)
44{
45 NSMenu *oldMenu = [NSApp mainMenu];
46
47 NSMenu *menubar = [[VuoAppMenu new] autorelease];
48
49 // Application menu
50 {
51 NSMenu *appMenu = [[NSMenu new] autorelease];
52 NSString *appName = [[NSProcessInfo processInfo] processName];
53
54 NSString *aboutTitle = [@"About " stringByAppendingString:appName];
55 NSMenuItem *aboutMenuItem = [[[NSMenuItem alloc] initWithTitle:aboutTitle action:@selector(displayAboutPanel:) keyEquivalent:@""] autorelease];
56
57 static VuoAppAboutBox *aboutDialog;
58 static dispatch_once_t aboutDialogInitialized = 0;
59 dispatch_once(&aboutDialogInitialized, ^{
60 aboutDialog = [[VuoAppAboutBox alloc] init];
61 });
62 [aboutMenuItem setTarget:aboutDialog];
63
64 [appMenu addItem:aboutMenuItem];
65
66 [appMenu addItem:[NSMenuItem separatorItem]];
67
68 NSString *quitTitle = [@"Quit " stringByAppendingString:appName];
69 NSMenuItem *quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle action:@selector(terminate:) keyEquivalent:@"q"] autorelease];
70 [appMenu addItem:quitMenuItem];
71
72 NSMenuItem *appMenuItem = [[NSMenuItem new] autorelease];
73 [appMenuItem setSubmenu:appMenu];
74
75 [menubar addItem:appMenuItem];
76 }
77
78 // Custom menus
79 if (items)
80 {
81 NSArray *itemsArray = (NSArray *)items;
82 for (NSMenuItem *item in itemsArray)
83 [menubar addItem:item];
84 }
85
86 [NSApp setMainMenu:menubar];
87
88 return oldMenu;
89}
90
96void VuoApp_setMenu(void *menu)
97{
98 [NSApp setMainMenu:menu];
99}