mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-28 17:58:42 +00:00
gpui: Update Menu name to use SharedString
type to support more types (#14791)
Release Notes: - N/A
This commit is contained in:
parent
836f623800
commit
fb541accb2
7 changed files with 40 additions and 38 deletions
|
@ -68,7 +68,7 @@ fn main() {
|
|||
cx.on_action(|_: &Quit, cx| cx.quit());
|
||||
cx.bind_keys([KeyBinding::new("cmd-q", Quit, None)]);
|
||||
cx.set_menus(vec![Menu {
|
||||
name: "Image",
|
||||
name: "Image".into(),
|
||||
items: vec![MenuItem::action("Quit", Quit)],
|
||||
}]);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ fn main() {
|
|||
cx.on_action(quit);
|
||||
// Add menu items
|
||||
cx.set_menus(vec![Menu {
|
||||
name: "set_menus",
|
||||
name: "set_menus".into(),
|
||||
items: vec![MenuItem::action("Quit", Quit)],
|
||||
}]);
|
||||
cx.open_window(WindowOptions::default(), |cx| {
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
use std::borrow::Cow;
|
||||
|
||||
use crate::{Action, AppContext, Platform};
|
||||
use crate::{Action, AppContext, Platform, SharedString};
|
||||
use util::ResultExt;
|
||||
|
||||
/// A menu of the application, either a main menu or a submenu
|
||||
pub struct Menu<'a> {
|
||||
pub struct Menu {
|
||||
/// The name of the menu
|
||||
pub name: &'a str,
|
||||
pub name: SharedString,
|
||||
|
||||
/// The items in the menu
|
||||
pub items: Vec<MenuItem<'a>>,
|
||||
pub items: Vec<MenuItem>,
|
||||
}
|
||||
|
||||
impl<'a> Menu<'a> {
|
||||
impl Menu {
|
||||
/// Create an OwnedMenu from this Menu
|
||||
pub fn owned(self) -> OwnedMenu {
|
||||
OwnedMenu {
|
||||
|
@ -23,17 +21,17 @@ impl<'a> Menu<'a> {
|
|||
}
|
||||
|
||||
/// The different kinds of items that can be in a menu
|
||||
pub enum MenuItem<'a> {
|
||||
pub enum MenuItem {
|
||||
/// A separator between items
|
||||
Separator,
|
||||
|
||||
/// A submenu
|
||||
Submenu(Menu<'a>),
|
||||
Submenu(Menu),
|
||||
|
||||
/// An action that can be performed
|
||||
Action {
|
||||
/// The name of this menu item
|
||||
name: &'a str,
|
||||
name: SharedString,
|
||||
|
||||
/// the action to perform when this menu item is selected
|
||||
action: Box<dyn Action>,
|
||||
|
@ -44,30 +42,34 @@ pub enum MenuItem<'a> {
|
|||
},
|
||||
}
|
||||
|
||||
impl<'a> MenuItem<'a> {
|
||||
impl MenuItem {
|
||||
/// Creates a new menu item that is a separator
|
||||
pub fn separator() -> Self {
|
||||
Self::Separator
|
||||
}
|
||||
|
||||
/// Creates a new menu item that is a submenu
|
||||
pub fn submenu(menu: Menu<'a>) -> Self {
|
||||
pub fn submenu(menu: Menu) -> Self {
|
||||
Self::Submenu(menu)
|
||||
}
|
||||
|
||||
/// Creates a new menu item that invokes an action
|
||||
pub fn action(name: &'a str, action: impl Action) -> Self {
|
||||
pub fn action(name: impl Into<SharedString>, action: impl Action) -> Self {
|
||||
Self::Action {
|
||||
name,
|
||||
name: name.into(),
|
||||
action: Box::new(action),
|
||||
os_action: None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates a new menu item that invokes an action and has an OS action
|
||||
pub fn os_action(name: &'a str, action: impl Action, os_action: OsAction) -> Self {
|
||||
pub fn os_action(
|
||||
name: impl Into<SharedString>,
|
||||
action: impl Action,
|
||||
os_action: OsAction,
|
||||
) -> Self {
|
||||
Self::Action {
|
||||
name,
|
||||
name: name.into(),
|
||||
action: Box::new(action),
|
||||
os_action: Some(os_action),
|
||||
}
|
||||
|
@ -95,7 +97,7 @@ impl<'a> MenuItem<'a> {
|
|||
#[derive(Clone)]
|
||||
pub struct OwnedMenu {
|
||||
/// The name of the menu
|
||||
pub name: Cow<'static, str>,
|
||||
pub name: SharedString,
|
||||
|
||||
/// The items in the menu
|
||||
pub items: Vec<OwnedMenuItem>,
|
||||
|
|
|
@ -206,7 +206,7 @@ impl MacPlatform {
|
|||
|
||||
for menu_config in menus {
|
||||
let menu = NSMenu::new(nil).autorelease();
|
||||
menu.setTitle_(ns_string(menu_config.name));
|
||||
menu.setTitle_(ns_string(&menu_config.name));
|
||||
menu.setDelegate_(delegate);
|
||||
|
||||
for item_config in menu_config.items {
|
||||
|
@ -310,7 +310,7 @@ impl MacPlatform {
|
|||
|
||||
item = NSMenuItem::alloc(nil)
|
||||
.initWithTitle_action_keyEquivalent_(
|
||||
ns_string(name),
|
||||
ns_string(&name),
|
||||
selector,
|
||||
ns_string(key_to_native(&keystroke.key).as_ref()),
|
||||
)
|
||||
|
@ -341,7 +341,7 @@ impl MacPlatform {
|
|||
} else {
|
||||
item = NSMenuItem::alloc(nil)
|
||||
.initWithTitle_action_keyEquivalent_(
|
||||
ns_string(name),
|
||||
ns_string(&name),
|
||||
selector,
|
||||
ns_string(""),
|
||||
)
|
||||
|
@ -361,7 +361,7 @@ impl MacPlatform {
|
|||
submenu.addItem_(Self::create_menu_item(item, delegate, actions, keymap));
|
||||
}
|
||||
item.setSubmenu_(submenu);
|
||||
item.setTitle_(ns_string(name));
|
||||
item.setTitle_(ns_string(&name));
|
||||
item
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,9 +25,9 @@ fn main() {
|
|||
cx.bind_keys([KeyBinding::new("cmd-q", Quit, None)]);
|
||||
|
||||
cx.set_menus(vec![Menu {
|
||||
name: "Zed",
|
||||
name: "Zed".into(),
|
||||
items: vec![MenuItem::Action {
|
||||
name: "Quit",
|
||||
name: "Quit".into(),
|
||||
action: Box::new(Quit),
|
||||
os_action: None,
|
||||
}],
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
use gpui::{Menu, MenuItem};
|
||||
|
||||
pub fn app_menus() -> Vec<Menu<'static>> {
|
||||
pub fn app_menus() -> Vec<Menu> {
|
||||
use crate::actions::Quit;
|
||||
|
||||
vec![Menu {
|
||||
name: "Storybook",
|
||||
name: "Storybook".into(),
|
||||
items: vec![MenuItem::action("Quit", Quit)],
|
||||
}]
|
||||
}
|
||||
|
|
|
@ -2,18 +2,18 @@ use collab_ui::collab_panel;
|
|||
use gpui::{Menu, MenuItem, OsAction};
|
||||
use terminal_view::terminal_panel;
|
||||
|
||||
pub fn app_menus() -> Vec<Menu<'static>> {
|
||||
pub fn app_menus() -> Vec<Menu> {
|
||||
use zed_actions::Quit;
|
||||
|
||||
vec![
|
||||
Menu {
|
||||
name: "Zed",
|
||||
name: "Zed".into(),
|
||||
items: vec![
|
||||
MenuItem::action("About Zed…", zed_actions::About),
|
||||
MenuItem::action("Check for Updates", auto_update::Check),
|
||||
MenuItem::separator(),
|
||||
MenuItem::submenu(Menu {
|
||||
name: "Preferences",
|
||||
name: "Preferences".into(),
|
||||
items: vec![
|
||||
MenuItem::action("Open Settings", super::OpenSettings),
|
||||
MenuItem::action("Open Key Bindings", zed_actions::OpenKeymap),
|
||||
|
@ -33,7 +33,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "File",
|
||||
name: "File".into(),
|
||||
items: vec![
|
||||
MenuItem::action("New", workspace::NewFile),
|
||||
MenuItem::action("New Window", workspace::NewWindow),
|
||||
|
@ -58,7 +58,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "Edit",
|
||||
name: "Edit".into(),
|
||||
items: vec![
|
||||
MenuItem::os_action("Undo", editor::actions::Undo, OsAction::Undo),
|
||||
MenuItem::os_action("Redo", editor::actions::Redo, OsAction::Redo),
|
||||
|
@ -77,7 +77,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "Selection",
|
||||
name: "Selection".into(),
|
||||
items: vec![
|
||||
MenuItem::os_action(
|
||||
"Select All",
|
||||
|
@ -102,7 +102,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "View",
|
||||
name: "View".into(),
|
||||
items: vec![
|
||||
MenuItem::action("Zoom In", zed_actions::IncreaseBufferFontSize),
|
||||
MenuItem::action("Zoom Out", zed_actions::DecreaseBufferFontSize),
|
||||
|
@ -113,7 +113,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
MenuItem::action("Toggle Bottom Dock", workspace::ToggleBottomDock),
|
||||
MenuItem::action("Close All Docks", workspace::CloseAllDocks),
|
||||
MenuItem::submenu(Menu {
|
||||
name: "Editor Layout",
|
||||
name: "Editor Layout".into(),
|
||||
items: vec![
|
||||
MenuItem::action("Split Up", workspace::SplitUp),
|
||||
MenuItem::action("Split Down", workspace::SplitDown),
|
||||
|
@ -132,7 +132,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "Go",
|
||||
name: "Go".into(),
|
||||
items: vec![
|
||||
MenuItem::action("Back", workspace::GoBack),
|
||||
MenuItem::action("Forward", workspace::GoForward),
|
||||
|
@ -153,7 +153,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "Window",
|
||||
name: "Window".into(),
|
||||
items: vec![
|
||||
MenuItem::action("Minimize", super::Minimize),
|
||||
MenuItem::action("Zoom", super::Zoom),
|
||||
|
@ -161,7 +161,7 @@ pub fn app_menus() -> Vec<Menu<'static>> {
|
|||
],
|
||||
},
|
||||
Menu {
|
||||
name: "Help",
|
||||
name: "Help".into(),
|
||||
items: vec![
|
||||
MenuItem::action("View Telemetry", zed_actions::OpenTelemetryLog),
|
||||
MenuItem::action("View Dependency Licenses", zed_actions::OpenLicenses),
|
||||
|
|
Loading…
Reference in a new issue