-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathMainMenu.m
More file actions
143 lines (120 loc) · 7.71 KB
/
MainMenu.m
File metadata and controls
143 lines (120 loc) · 7.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <Cocoa/Cocoa.h>
@interface Window : NSWindow {
}
- (instancetype)init;
- (void)settings:(id)sender;
- (void)fileNew:(id)sender;
- (void)fileOpen:(id)sender;
- (void)fileClose:(id)sender;
- (void)editUndo:(id)sender;
- (void)editRedo:(id)sender;
- (void)editCut:(id)sender;
- (void)editCopy:(id)sender;
- (void)editPaste:(id)sender;
- (void)editDelete:(id)sender;
- (void)editSelectAll:(id)sender;
- (BOOL)windowShouldClose:(id)sender;
@end
@implementation Window
- (instancetype)init {
// Creates Application and asociate menubar and specific menus.
// Creae main menubar
[NSApp setMainMenu:[[[NSMenu alloc] init] autorelease]];
// Creates Application submenu with process name
[[NSApp mainMenu] addItem:[[[NSMenuItem alloc] init] autorelease]];
[[[NSApp mainMenu] itemArray][0] setSubmenu:[[[NSMenu alloc] initWithTitle:[[NSProcessInfo processInfo] processName]] autorelease]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@"About %@", nil), [[NSProcessInfo processInfo] processName]] action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""] autorelease]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[NSMenuItem separatorItem]];
#ifdef __MAC_13_0
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Settings...", nil) action:@selector(settings:) keyEquivalent:@","] autorelease]];
#else
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Preferences", nil) action:@selector(settings:) keyEquivalent:@","] autorelease]];
#endif
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[NSMenuItem separatorItem]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Services", nil) action:nil keyEquivalent:@""] autorelease]];
[[[[[NSApp mainMenu] itemArray][0] submenu] itemArray][4] setSubmenu:[[[NSMenu alloc] init] autorelease]];
[NSApp setServicesMenu:[[[[[NSApp mainMenu] itemArray][0] submenu] itemArray][4] submenu]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@"Hide %@", nil), [[NSProcessInfo processInfo] processName]] action:@selector(hide:) keyEquivalent:@"h"] autorelease]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Hide Other", nil) action:@selector(hideOtherApplications:) keyEquivalent:@"h"] autorelease]];
[[[[[NSApp mainMenu] itemArray][0] submenu] itemArray][4] setKeyEquivalentModifierMask:NSEventModifierFlagOption|NSEventModifierFlagCommand];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Show All", nil) action:@selector(unhideAllApplications:) keyEquivalent:@""] autorelease]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[NSMenuItem separatorItem]];
[[[[NSApp mainMenu] itemArray][0] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@"Quit %@", nil), [[NSProcessInfo processInfo] processName]] action:@selector(terminate:) keyEquivalent:@"q"] autorelease]];
// Create File submenu
[[NSApp mainMenu] addItem:[[[NSMenuItem alloc] init] autorelease]];
[[[NSApp mainMenu] itemArray][1] setSubmenu:[[[NSMenu alloc] initWithTitle:NSLocalizedString(@"File" , nil)] autorelease]];
[[[[NSApp mainMenu] itemArray][1] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"New", nil) action:@selector(fileNew:) keyEquivalent:@"n"] autorelease]];
[[[[NSApp mainMenu] itemArray][1] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Open", nil) action:@selector(fileOpen:) keyEquivalent:@"o"] autorelease]];
[[[[NSApp mainMenu] itemArray][1] submenu] addItem:[NSMenuItem separatorItem]];
[[[[NSApp mainMenu] itemArray][1] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Close", nil) action:@selector(fileClose:) keyEquivalent:@"w"] autorelease]];
// Create Edit submenu
[[NSApp mainMenu] addItem:[[[NSMenuItem alloc] init] autorelease]];
[[[NSApp mainMenu] itemArray][2] setSubmenu:[[[NSMenu alloc] initWithTitle:NSLocalizedString(@"Edit" , nil)] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Undo", nil) action:@selector(editUndo:) keyEquivalent:@"z"] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Redo" , nil) action:@selector(editRedo:) keyEquivalent:@"Z"] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[NSMenuItem separatorItem]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Cut", nil) action:@selector(editCut:) keyEquivalent:@"x"] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Copy", nil) action:@selector(editCopy:) keyEquivalent:@"c"] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Paste", nil) action:@selector(editPaste:) keyEquivalent:@"v"] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Delete", nil) action:@selector(editDelete:) keyEquivalent:@"\b"] autorelease]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[NSMenuItem separatorItem]];
[[[[NSApp mainMenu] itemArray][2] submenu] addItem:[[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Select all", nil) action:@selector(editSelectAll:) keyEquivalent:@"a"] autorelease]];
// Creates View submenu
[[NSApp mainMenu] addItem:[[[NSMenuItem alloc] init] autorelease]];
[[[NSApp mainMenu] itemArray][3] setSubmenu:[[[NSMenu alloc] initWithTitle:NSLocalizedString(@"View" , nil)] autorelease]];
// Creates Windows submenu
[[NSApp mainMenu] addItem:[[[NSMenuItem alloc] init] autorelease]];
[[[NSApp mainMenu] itemArray][4] setSubmenu:[[[NSMenu alloc] initWithTitle:NSLocalizedString(@"Window" , nil)] autorelease]];
[NSApp setWindowsMenu:[[[NSApp mainMenu] itemArray][4] submenu]];
// Creates Help submenu
[[NSApp mainMenu] addItem:[[[NSMenuItem alloc] init] autorelease]];
[[[NSApp mainMenu] itemArray][5] setSubmenu:[[[NSMenu alloc] initWithTitle:NSLocalizedString(@"Help" , nil)] autorelease]];
[NSApp setHelpMenu:[[[NSApp mainMenu] itemArray][5] submenu]];
[super initWithContentRect:NSMakeRect(100, 100, 300, 300) styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable backing:NSBackingStoreBuffered defer:NO];
[self setTitle:@"MainMenu example"];
[self setIsVisible:YES];
return self;
}
- (void)settings:(id)sender {
NSLog(@"MainMenu/Settings");
}
- (void)fileNew:(id)sender {
NSLog(@"MainMenu/File/New");
}
- (void)fileOpen:(id)sender {
NSLog(@"MainMenu/File/Open");
}
- (void)fileClose:(id)sender {
NSLog(@"MainMenu/File/Close");
}
- (void)editUndo:(id)sender {
NSLog(@"MainMenu/Edit/Undo");
}
- (void)editRedo:(id)sender {
NSLog(@"MainMenu/Edit/Redo");
}
- (void)editCut:(id)sender {
NSLog(@"MainMenu/Edit/Cut");
}
- (void)editCopy:(id)sender {
NSLog(@"MainMenu/Edit/Copy");
}
- (void)editPaste:(id)sender {
NSLog(@"MainMenu/Edit/Paste");
}
- (void)editDelete:(id)sender {
NSLog(@"MainMenu/Edit/Delete");
}
- (void)editSelectAll:(id)sender {
NSLog(@"MainMenu/Edit/SelectAll");
}
- (BOOL)windowShouldClose:(id)sender {
[NSApp terminate:sender];
return YES;
}
@end
int main(int argc, char* argv[]) {
[NSApplication sharedApplication];
[[[[Window alloc] init] autorelease] makeMainWindow];
[NSApp run];
}