#[cfg(any(target_os = "macos", target_os = "windows", target_os = "linux"))]
fn main() -> wry::Result<()> {
use wry::{
application::{
accelerator::{Accelerator, SysMods},
event::{Event, StartCause, WindowEvent},
event_loop::{ControlFlow, EventLoop},
keyboard::KeyCode,
menu::{MenuBar as Menu, MenuItem, MenuItemAttributes, MenuType},
window::WindowBuilder,
},
webview::WebViewBuilder,
};
let event_loop = EventLoop::new();
let mut menu_bar_menu = Menu::new();
let mut first_menu = Menu::new();
let mut second_menu = Menu::new();
let mut third_menu = Menu::new();
let mut my_sub_menu = Menu::new();
let mut print_item = my_sub_menu.add_item(
MenuItemAttributes::new("Print")
.with_accelerators(&Accelerator::new(SysMods::Cmd, KeyCode::KeyP)),
);
first_menu.add_native_item(MenuItem::About("Todos".to_string()));
first_menu.add_native_item(MenuItem::Services);
first_menu.add_native_item(MenuItem::Separator);
first_menu.add_native_item(MenuItem::Hide);
first_menu.add_native_item(MenuItem::HideOthers);
first_menu.add_native_item(MenuItem::ShowAll);
let quit_item = first_menu.add_item(
MenuItemAttributes::new("Quit")
.with_accelerators(&Accelerator::new(SysMods::Cmd, KeyCode::KeyQ)),
);
third_menu.add_item(
MenuItemAttributes::new("Custom help")
.with_accelerators(&Accelerator::new(SysMods::CmdShift, KeyCode::KeyH)),
);
second_menu.add_submenu("Sub menu", true, my_sub_menu);
second_menu.add_native_item(MenuItem::Copy);
second_menu.add_native_item(MenuItem::Paste);
second_menu.add_native_item(MenuItem::SelectAll);
menu_bar_menu.add_submenu("First menu", true, first_menu);
menu_bar_menu.add_submenu("Second menu", true, second_menu);
menu_bar_menu.add_submenu("Help", true, third_menu);
let window = WindowBuilder::new()
.with_title("Hello World")
.with_menu(menu_bar_menu)
.build(&event_loop)?;
let webview = WebViewBuilder::new(window)?
.with_url("https://tauri.studio")?
.build()?;
event_loop.run(move |event, _, control_flow| {
*control_flow = ControlFlow::Wait;
match event {
Event::NewEvents(StartCause::Init) => println!("Wry has started!"),
Event::WindowEvent {
event: WindowEvent::CloseRequested,
..
} => *control_flow = ControlFlow::Exit,
Event::MenuEvent {
menu_id,
origin: MenuType::MenuBar,
..
} => {
if menu_id == print_item.clone().id() {
webview.print().expect("Unable to print");
print_item.set_enabled(false);
}
if menu_id == quit_item.clone().id() {
*control_flow = ControlFlow::Exit;
}
println!("Clicked on {:?}", menu_id);
}
_ => (),
}
});
}
#[cfg(target_os = "ios")]
fn main() {
println!("This platform doesn't support menu_bar.");
}