12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- //! This example shows how to use a custom menu bar with Dioxus desktop.
- //! This example is not supported on the mobile or web renderers.
- use dioxus::desktop::{muda::*, use_muda_event_handler};
- use dioxus::prelude::*;
- fn main() {
- // Create a menu bar that only contains the edit menu
- let menu = Menu::new();
- let edit_menu = Submenu::new("Edit", true);
- edit_menu
- .append_items(&[
- &PredefinedMenuItem::undo(None),
- &PredefinedMenuItem::redo(None),
- &PredefinedMenuItem::separator(),
- &PredefinedMenuItem::cut(None),
- &PredefinedMenuItem::copy(None),
- &PredefinedMenuItem::paste(None),
- &PredefinedMenuItem::select_all(None),
- &MenuItem::with_id("switch-text", "Switch text", true, None),
- ])
- .unwrap();
- menu.append(&edit_menu).unwrap();
- // Create a desktop config that overrides the default menu with the custom menu
- let config = dioxus::desktop::Config::new().with_menu(menu);
- // Launch the app with the custom menu
- dioxus::LaunchBuilder::new().with_cfg(config).launch(app)
- }
- fn app() -> Element {
- let mut text = use_signal(String::new);
- // You can use the `use_muda_event_handler` hook to run code when a menu event is triggered.
- use_muda_event_handler(move |muda_event| {
- if muda_event.id() == "switch-text" {
- text.set("Switched to text".to_string());
- }
- });
- rsx! {
- div {
- h1 { "Custom Menu" }
- p { "Text: {text}" }
- }
- }
- }
|