import { MenuItemOptions, SubmenuOptions, IconMenuItemOptions, PredefinedMenuItemOptions, CheckMenuItemOptions } from '../menu'; import { MenuItem } from './menuItem'; import { CheckMenuItem } from './checkMenuItem'; import { IconMenuItem } from './iconMenuItem'; import { PredefinedMenuItem } from './predefinedMenuItem'; import { Submenu } from './submenu'; import { type LogicalPosition, PhysicalPosition, Position } from '../dpi'; import { type Window } from '../window'; import { MenuItemBase } from './base'; /** Options for creating a new menu. */ export interface MenuOptions { /** Specify an id to use for the new menu. */ id?: string; /** List of items to add to the new menu. */ items?: Array; } /** A type that is either a menu bar on the window * on Windows and Linux or as a global menu in the menubar on macOS. * * #### Platform-specific: * * - **macOS**: if using {@linkcode Menu} for the global menubar, it can only contain {@linkcode Submenu}s. */ export declare class Menu extends MenuItemBase { /** @ignore */ protected constructor(rid: number, id: string); /** Create a new menu. */ static new(opts?: MenuOptions): Promise; /** Create a default menu. */ static default(): Promise; /** * Add a menu item to the end of this menu. * * #### Platform-specific: * * - **macOS:** Only {@linkcode Submenu}s can be added to a {@linkcode Menu}. */ append(items: T | T[]): Promise; /** * Add a menu item to the beginning of this menu. * * #### Platform-specific: * * - **macOS:** Only {@linkcode Submenu}s can be added to a {@linkcode Menu}. */ prepend(items: T | T[]): Promise; /** * Add a menu item to the specified position in this menu. * * #### Platform-specific: * * - **macOS:** Only {@linkcode Submenu}s can be added to a {@linkcode Menu}. */ insert(items: T | T[], position: number): Promise; /** Remove a menu item from this menu. */ remove(item: Submenu | MenuItem | PredefinedMenuItem | CheckMenuItem | IconMenuItem): Promise; /** Remove a menu item from this menu at the specified position. */ removeAt(position: number): Promise; /** Returns a list of menu items that has been added to this menu. */ items(): Promise>; /** Retrieves the menu item matching the given identifier. */ get(id: string): Promise; /** * Popup this menu as a context menu on the specified window. * * If the position, is provided, it is relative to the window's top-left corner. */ popup(at?: PhysicalPosition | LogicalPosition | Position, window?: Window): Promise; /** * Sets the app-wide menu and returns the previous one. * * If a window was not created with an explicit menu or had one set explicitly, * this menu will be assigned to it. */ setAsAppMenu(): Promise; /** * Sets the window menu and returns the previous one. * * #### Platform-specific: * * - **macOS:** Unsupported. The menu on macOS is app-wide and not specific to one * window, if you need to set it, use {@linkcode Menu.setAsAppMenu} instead. */ setAsWindowMenu(window?: Window): Promise; }