gpui: add set menus example (#9131)
Add an example showing how to add a menu item, register an action with the `AppContext`, and successfully call the action. Release Notes: - N/A
This commit is contained in:
parent
e1f8a1e8b2
commit
39bd12a557
2 changed files with 48 additions and 1 deletions
|
@ -132,4 +132,8 @@ path = "examples/hello_world.rs"
|
|||
|
||||
[[example]]
|
||||
name = "image"
|
||||
path = "examples/image/image.rs"
|
||||
path = "examples/image/image.rs"
|
||||
|
||||
[[example]]
|
||||
name = "set_menus"
|
||||
path = "examples/set_menus.rs"
|
||||
|
|
43
crates/gpui/examples/set_menus.rs
Normal file
43
crates/gpui/examples/set_menus.rs
Normal file
|
@ -0,0 +1,43 @@
|
|||
use gpui::*;
|
||||
|
||||
struct SetMenus;
|
||||
|
||||
impl Render for SetMenus {
|
||||
fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
|
||||
div()
|
||||
.flex()
|
||||
.bg(rgb(0x2e7d32))
|
||||
.size_full()
|
||||
.justify_center()
|
||||
.items_center()
|
||||
.text_xl()
|
||||
.text_color(rgb(0xffffff))
|
||||
.child("Set Menus Example")
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
App::new().run(|cx: &mut AppContext| {
|
||||
// Bring the menu bar to the foreground (so you can see the menu bar)
|
||||
cx.activate(true);
|
||||
// Register the `quit` function so it can be referenced by the `MenuItem::action` in the menu bar
|
||||
cx.on_action(quit);
|
||||
// Add menu items
|
||||
cx.set_menus(vec![Menu {
|
||||
name: "set_menus",
|
||||
items: vec![MenuItem::action("Quit", Quit)],
|
||||
}]);
|
||||
cx.open_window(WindowOptions::default(), |cx| {
|
||||
cx.new_view(|_cx| SetMenus {})
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Associate actions using the `actions!` macro (or `impl_actions!` macro)
|
||||
actions!(set_menus, [Quit]);
|
||||
|
||||
// Define the quit function that is registered with the AppContext
|
||||
fn quit(_: &Quit, cx: &mut AppContext) {
|
||||
println!("Gracefully quitting the application . . .");
|
||||
cx.quit();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue