Vuo  2.3.2
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 
43 void *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 
96 void VuoApp_setMenu(void *menu)
97 {
98  [NSApp setMainMenu:menu];
99 }