diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 1558191c..c0632da2 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -2,6 +2,7 @@ pub mod ai_chat; pub mod frontmatter; pub mod git; pub mod github; +pub mod menu; pub mod settings; pub mod vault; @@ -123,6 +124,7 @@ pub fn run() { { app.handle().plugin(tauri_plugin_updater::Builder::new().build())?; app.handle().plugin(tauri_plugin_process::init())?; + menu::setup_menu(app)?; } // Purge trashed files older than 30 days on startup diff --git a/src-tauri/src/menu.rs b/src-tauri/src/menu.rs new file mode 100644 index 00000000..415e59b4 --- /dev/null +++ b/src-tauri/src/menu.rs @@ -0,0 +1,30 @@ +use tauri::{menu::SubmenuBuilder, App, Emitter}; + +const VIEW_ITEMS: [(&str, &str, &str); 3] = [ + ("view-editor-only", "Editor Only", "Alt+1"), + ("view-editor-list", "Editor + Notes", "Alt+2"), + ("view-all", "All Panels", "Alt+3"), +]; + +pub fn setup_menu(app: &App) -> Result<(), Box> { + let mut view_menu = SubmenuBuilder::new(app, "View"); + for (id, label, accel) in &VIEW_ITEMS { + view_menu = view_menu.text(*id, format!("{label} {accel}")); + } + let view_submenu = view_menu.build()?; + + let menu = tauri::menu::MenuBuilder::new(app) + .item(&view_submenu) + .build()?; + + app.set_menu(menu)?; + + app.on_menu_event(|app_handle, event| { + let id = event.id().0.as_str(); + if id.starts_with("view-") { + let _ = app_handle.emit("menu-event", id); + } + }); + + Ok(()) +}