Customise window decorations, add openfolder action to menu, fix toolbar colours

This commit is contained in:
Michael Pivato
2024-06-08 16:30:05 +09:30
parent 8808b00f4d
commit ecdd4f7080
11 changed files with 253 additions and 167 deletions

View File

@@ -17,7 +17,7 @@ tauri-build = { version = "1.5.2", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.6.5", features = [ "dialog-all", "fs-all"] }
tauri = { version = "1.6.5", features = [ "window-start-dragging", "dialog-all", "fs-all"] }
[features]
# this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled.

View File

@@ -1,8 +1,101 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use std::any::Any;
use tauri::{AboutMetadata, CustomMenuItem, Menu, MenuEntry, 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 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
}

View File

@@ -7,7 +7,7 @@
"distDir": "../dist"
},
"package": {
"productName": "Piv's Buf",
"productName": "BufPiv",
"version": "0.0.0"
},
"tauri": {
@@ -18,16 +18,48 @@
},
"dialog": {
"all": true
},
"window": {
"all": false,
"center": false,
"close": false,
"create": false,
"hide": false,
"maximize": false,
"minimize": false,
"print": false,
"requestUserAttention": false,
"setAlwaysOnTop": false,
"setClosable": false,
"setContentProtected": false,
"setCursorGrab": false,
"setCursorIcon": false,
"setCursorPosition": false,
"setCursorVisible": false,
"setDecorations": false,
"setFocus": false,
"setFullscreen": false,
"setIcon": false,
"setIgnoreCursorEvents": false,
"setMaxSize": false,
"setMaximizable": false,
"setMinSize": false,
"setMinimizable": false,
"setPosition": false,
"setResizable": false,
"setSize": false,
"setSkipTaskbar": false,
"setTitle": false,
"show": false,
"startDragging": true,
"unmaximize": false,
"unminimize": false
}
},
"bundle": {
"active": true,
"category": "DeveloperTool",
"copyright": "",
"deb": {
"depends": []
},
"externalBin": [],
"copyright": "Michael Pivato 2024",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
@@ -36,7 +68,7 @@
"icons/icon.ico"
],
"identifier": "dev.michaelpivato",
"longDescription": "",
"longDescription": "Create and edit protobuf and json files based on protobuf definitions.",
"macOS": {
"entitlements": null,
"exceptionDomain": "",
@@ -64,8 +96,10 @@
"fullscreen": false,
"height": 600,
"resizable": true,
"title": "Piv's Buf",
"width": 800
"title": "BufPiv",
"hiddenTitle": true,
"width": 800,
"titleBarStyle": "Overlay"
}
]
}