1use crate::AppState;
2use gpui::{Menu, MenuItem};
3use std::sync::Arc;
4
5#[cfg(target_os = "macos")]
6pub fn menus(state: &Arc<AppState>) -> Vec<Menu<'static>> {
7 vec![
8 Menu {
9 name: "Zed",
10 items: vec![
11 MenuItem::Action {
12 name: "About Zed…",
13 keystroke: None,
14 action: Box::new(super::About),
15 },
16 MenuItem::Action {
17 name: "Check for Updates",
18 keystroke: None,
19 action: Box::new(auto_update::Check),
20 },
21 MenuItem::Separator,
22 MenuItem::Action {
23 name: "Install CLI",
24 keystroke: None,
25 action: Box::new(super::InstallCommandLineInterface),
26 },
27 MenuItem::Separator,
28 MenuItem::Action {
29 name: "Quit",
30 keystroke: Some("cmd-q"),
31 action: Box::new(super::Quit),
32 },
33 ],
34 },
35 Menu {
36 name: "File",
37 items: vec![
38 MenuItem::Action {
39 name: "New",
40 keystroke: Some("cmd-n"),
41 action: Box::new(workspace::OpenNew(state.clone())),
42 },
43 MenuItem::Separator,
44 MenuItem::Action {
45 name: "Open…",
46 keystroke: Some("cmd-o"),
47 action: Box::new(workspace::Open(state.clone())),
48 },
49 ],
50 },
51 Menu {
52 name: "Edit",
53 items: vec![
54 MenuItem::Action {
55 name: "Undo",
56 keystroke: Some("cmd-z"),
57 action: Box::new(editor::Undo),
58 },
59 MenuItem::Action {
60 name: "Redo",
61 keystroke: Some("cmd-Z"),
62 action: Box::new(editor::Redo),
63 },
64 MenuItem::Separator,
65 MenuItem::Action {
66 name: "Cut",
67 keystroke: Some("cmd-x"),
68 action: Box::new(editor::Cut),
69 },
70 MenuItem::Action {
71 name: "Copy",
72 keystroke: Some("cmd-c"),
73 action: Box::new(editor::Copy),
74 },
75 MenuItem::Action {
76 name: "Paste",
77 keystroke: Some("cmd-v"),
78 action: Box::new(editor::Paste),
79 },
80 ],
81 },
82 ]
83}