Files
tauri/packages/api/src/menu/predefinedMenuItem.ts
Amr Bashir 36eee37220 Restructure the repository (#10796)
* Restructure the repository

* lock file

* fmt

* fix bench

* fix cli template test

* remove accidental file

* fix mv command

* clippy

* upgrade paths-filter github action

* fix cli migration tests

* lockfile

* license headers

* clippy

* scope test-core to tauri crate

* license header

* correct --manifest-path usage

* lockfile

* fix tauri-driver on macOS [skip ci]

* build target ios

* try downgrade env_logger

* downgrade 0.1.7

* try to fix bench

* bench overflow

* revert overflow fix, fix tauri_root_path

* revert env_logger downgrade

* fmt

* raise msrv to 1.71

* fmt

* delete .cargo/config.toml [skip ci]

---------

Co-authored-by: Lucas Nogueira <lucas@tauri.app>
2024-08-27 18:42:30 -03:00

140 lines
3.0 KiB
TypeScript

// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import { MenuItemBase, newMenu } from './base'
import { invoke } from '../core'
import { Image } from '../image'
/** A metadata for the about predefined menu item. */
export interface AboutMetadata {
/** Sets the application name. */
name?: string
/** The application version. */
version?: string
/**
* The short version, e.g. "1.0".
*
* #### Platform-specific
*
* - **Windows / Linux:** Appended to the end of `version` in parentheses.
*/
shortVersion?: string
/**
* The authors of the application.
*
* #### Platform-specific
*
* - **macOS:** Unsupported.
*/
authors?: string[]
/**
* Application comments.
*
* #### Platform-specific
*
* - **macOS:** Unsupported.
*/
comments?: string
/** The copyright of the application. */
copyright?: string
/**
* The license of the application.
*
* #### Platform-specific
*
* - **macOS:** Unsupported.
*/
license?: string
/**
* The application website.
*
* #### Platform-specific
*
* - **macOS:** Unsupported.
*/
website?: string
/**
* The website label.
*
* #### Platform-specific
*
* - **macOS:** Unsupported.
*/
websiteLabel?: string
/**
* The credits.
*
* #### Platform-specific
*
* - **Windows / Linux:** Unsupported.
*/
credits?: string
/**
* The application icon.
*
* #### Platform-specific
*
* - **Windows:** Unsupported.
*/
icon?: string | Uint8Array | ArrayBuffer | number[] | Image
}
/** Options for creating a new predefined menu item. */
export interface PredefinedMenuItemOptions {
/** The text of the new predefined menu item. */
text?: string
/** The predefined item type */
item:
| 'Separator'
| 'Copy'
| 'Cut'
| 'Paste'
| 'SelectAll'
| 'Undo'
| 'Redo'
| 'Minimize'
| 'Maximize'
| 'Fullscreen'
| 'Hide'
| 'HideOthers'
| 'ShowAll'
| 'CloseWindow'
| 'Quit'
| 'Services'
| {
About: AboutMetadata | null
}
}
/** A predefined (native) menu item which has a predefined behavior by the OS or by tauri. */
export class PredefinedMenuItem extends MenuItemBase {
/** @ignore */
protected constructor(rid: number, id: string) {
super(rid, id, 'Predefined')
}
/** Create a new predefined menu item. */
static async new(
opts?: PredefinedMenuItemOptions
): Promise<PredefinedMenuItem> {
return newMenu('Predefined', opts).then(
([rid, id]) => new PredefinedMenuItem(rid, id)
)
}
/** Returns the text of this predefined menu item. */
async text(): Promise<string> {
return invoke('plugin:menu|text', { rid: this.rid, kind: this.kind })
}
/** Sets the text for this predefined menu item. */
async setText(text: string): Promise<void> {
return invoke('plugin:menu|set_text', {
rid: this.rid,
kind: this.kind,
text
})
}
}