|
1 | 1 | use tauri::{ |
2 | 2 | AppHandle, Emitter, |
3 | | - menu::{Menu, MenuBuilder, MenuItemBuilder, SubmenuBuilder}, |
| 3 | + menu::{Menu, MenuBuilder, MenuItemBuilder, PredefinedMenuItem, SubmenuBuilder}, |
4 | 4 | }; |
5 | 5 |
|
6 | 6 | pub fn create_menu(app: &AppHandle) -> tauri::Result<Menu<tauri::Wry>> { |
7 | 7 | let about_item = MenuItemBuilder::new("关于 CodeForge") |
8 | 8 | .id("about") |
9 | 9 | .build(app)?; |
10 | 10 |
|
| 11 | + // 应用菜单 |
11 | 12 | let app_submenu = SubmenuBuilder::new(app, "CodeForge") |
12 | 13 | .item(&about_item) |
13 | 14 | .build()?; |
14 | 15 |
|
15 | | - let menu = MenuBuilder::new(app).items(&[&app_submenu]).build()?; |
| 16 | + // 编辑菜单 |
| 17 | + let edit_submenu = SubmenuBuilder::new(app, "编辑") |
| 18 | + .item(&PredefinedMenuItem::undo(app, Option::from("撤销"))?) |
| 19 | + .item(&PredefinedMenuItem::redo(app, Option::from("重做"))?) |
| 20 | + .separator() |
| 21 | + .item(&PredefinedMenuItem::cut(app, Option::from("剪切"))?) |
| 22 | + .item(&PredefinedMenuItem::copy(app, Option::from("复制"))?) |
| 23 | + .item(&PredefinedMenuItem::paste(app, Option::from("粘贴"))?) |
| 24 | + .separator() |
| 25 | + .item(&PredefinedMenuItem::select_all(app, Option::from("全选"))?) |
| 26 | + .build()?; |
| 27 | + |
| 28 | + let menu = MenuBuilder::new(app) |
| 29 | + .items(&[&app_submenu, &edit_submenu]) |
| 30 | + .build()?; |
16 | 31 |
|
17 | 32 | Ok(menu) |
18 | 33 | } |
19 | 34 |
|
20 | 35 | pub fn setup_menu_handler(app: &AppHandle) { |
21 | | - app.on_menu_event(move |app, event| { |
22 | | - if event.id().as_ref() == "about" { |
| 36 | + app.on_menu_event(move |app, event| match event.id().as_ref() { |
| 37 | + "about" => { |
23 | 38 | let _event = app.emit("show-about", ()); |
24 | 39 | } |
| 40 | + _ => {} |
25 | 41 | }); |
26 | 42 | } |
0 commit comments