100 lines
3.3 KiB
Rust
100 lines
3.3 KiB
Rust
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
|
|
use tauri::{AboutMetadata, CustomMenuItem, Menu, MenuItem, Submenu};
|
|
|
|
#[derive(Clone, serde::Serialize)]
|
|
struct OpenFolderMessage {}
|
|
|
|
fn main() {
|
|
let menu = build_menu("BufPiv");
|
|
tauri::Builder::default()
|
|
.menu(menu)
|
|
.on_menu_event(|event| match event.menu_item_id() {
|
|
"openfolder" => {
|
|
event
|
|
.window()
|
|
.emit("openfolder", OpenFolderMessage {})
|
|
.expect("Failed to emit openfolder event");
|
|
}
|
|
_ => {}
|
|
})
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running tauri application");
|
|
}
|
|
|
|
fn build_menu(app_name: &str) -> Menu {
|
|
let mut menu = Menu::new();
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
menu = menu.add_submenu(Submenu::new(
|
|
app_name,
|
|
Menu::new()
|
|
.add_native_item(MenuItem::About(
|
|
app_name.to_string(),
|
|
AboutMetadata::default(),
|
|
))
|
|
.add_native_item(MenuItem::Separator)
|
|
.add_native_item(MenuItem::Services)
|
|
.add_native_item(MenuItem::Separator)
|
|
.add_native_item(MenuItem::Hide)
|
|
.add_native_item(MenuItem::HideOthers)
|
|
.add_native_item(MenuItem::ShowAll)
|
|
.add_native_item(MenuItem::Separator)
|
|
.add_native_item(MenuItem::Quit),
|
|
));
|
|
}
|
|
let open_folder =
|
|
CustomMenuItem::new("openfolder".to_string(), "Open Folder").accelerator("cmd+shift+O");
|
|
let mut file_submenu = Menu::new()
|
|
.add_item(open_folder)
|
|
.add_native_item(MenuItem::CloseWindow);
|
|
#[cfg(not(target_os = "macos"))]
|
|
{
|
|
file_submenu = file_submenu.add_native_item(MenuItem::Quit);
|
|
}
|
|
menu = menu.add_submenu(Submenu::new("File", file_submenu));
|
|
|
|
#[cfg(not(target_os = "linux"))]
|
|
let mut edit_menu = Menu::new();
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
edit_menu = edit_menu.add_native_item(MenuItem::Undo);
|
|
edit_menu = edit_menu.add_native_item(MenuItem::Redo);
|
|
edit_menu = edit_menu.add_native_item(MenuItem::Separator);
|
|
}
|
|
#[cfg(not(target_os = "linux"))]
|
|
{
|
|
edit_menu = edit_menu.add_native_item(MenuItem::Cut);
|
|
edit_menu = edit_menu.add_native_item(MenuItem::Copy);
|
|
edit_menu = edit_menu.add_native_item(MenuItem::Paste);
|
|
}
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
edit_menu = edit_menu.add_native_item(MenuItem::SelectAll);
|
|
}
|
|
#[cfg(not(target_os = "linux"))]
|
|
{
|
|
menu = menu.add_submenu(Submenu::new("Edit", edit_menu));
|
|
}
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
menu = menu.add_submenu(Submenu::new(
|
|
"View",
|
|
Menu::new().add_native_item(MenuItem::EnterFullScreen),
|
|
));
|
|
}
|
|
|
|
let mut window_menu = Menu::new();
|
|
window_menu = window_menu.add_native_item(MenuItem::Minimize);
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
window_menu = window_menu.add_native_item(MenuItem::Zoom);
|
|
window_menu = window_menu.add_native_item(MenuItem::Separator);
|
|
}
|
|
window_menu = window_menu.add_native_item(MenuItem::CloseWindow);
|
|
menu = menu.add_submenu(Submenu::new("Window", window_menu));
|
|
|
|
menu
|
|
}
|