menus.rs

 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}