| import { MenuItem } from './menuItem.js'; |
| import { CheckMenuItem } from './checkMenuItem.js'; |
| import { IconMenuItem } from './iconMenuItem.js'; |
| import { PredefinedMenuItem } from './predefinedMenuItem.js'; |
| import { invoke } from '../core.js'; |
| import { MenuItemBase, newMenu } from './base.js'; |
| import { Position } from '../dpi.js'; |
| import { transformImage } from '../image.js'; |
|
|
| |
| |
| |
| |
| function itemFromKind([rid, id, kind]) { |
| |
| switch (kind) { |
| case 'Submenu': |
| |
| return new Submenu(rid, id); |
| case 'Predefined': |
| |
| return new PredefinedMenuItem(rid, id); |
| case 'Check': |
| |
| return new CheckMenuItem(rid, id); |
| case 'Icon': |
| |
| return new IconMenuItem(rid, id); |
| case 'MenuItem': |
| default: |
| |
| return new MenuItem(rid, id); |
| } |
| |
| } |
| |
| class Submenu extends MenuItemBase { |
| |
| constructor(rid, id) { |
| super(rid, id, 'Submenu'); |
| } |
| |
| static async new(opts) { |
| return newMenu('Submenu', opts).then(([rid, id]) => new Submenu(rid, id)); |
| } |
| |
| async text() { |
| return invoke('plugin:menu|text', { rid: this.rid, kind: this.kind }); |
| } |
| |
| async setText(text) { |
| return invoke('plugin:menu|set_text', { |
| rid: this.rid, |
| kind: this.kind, |
| text |
| }); |
| } |
| |
| async isEnabled() { |
| return invoke('plugin:menu|is_enabled', { rid: this.rid, kind: this.kind }); |
| } |
| |
| async setEnabled(enabled) { |
| return invoke('plugin:menu|set_enabled', { |
| rid: this.rid, |
| kind: this.kind, |
| enabled |
| }); |
| } |
| |
| |
| |
| |
| |
| |
| |
| async append(items) { |
| return invoke('plugin:menu|append', { |
| rid: this.rid, |
| kind: this.kind, |
| items: (Array.isArray(items) ? items : [items]).map((i) => 'rid' in i ? [i.rid, i.kind] : i) |
| }); |
| } |
| |
| |
| |
| |
| |
| |
| |
| async prepend(items) { |
| return invoke('plugin:menu|prepend', { |
| rid: this.rid, |
| kind: this.kind, |
| items: (Array.isArray(items) ? items : [items]).map((i) => 'rid' in i ? [i.rid, i.kind] : i) |
| }); |
| } |
| |
| |
| |
| |
| |
| |
| |
| async insert(items, position) { |
| return invoke('plugin:menu|insert', { |
| rid: this.rid, |
| kind: this.kind, |
| items: (Array.isArray(items) ? items : [items]).map((i) => 'rid' in i ? [i.rid, i.kind] : i), |
| position |
| }); |
| } |
| |
| async remove(item) { |
| return invoke('plugin:menu|remove', { |
| rid: this.rid, |
| kind: this.kind, |
| item: [item.rid, item.kind] |
| }); |
| } |
| |
| async removeAt(position) { |
| return invoke('plugin:menu|remove_at', { |
| rid: this.rid, |
| kind: this.kind, |
| position |
| }).then(itemFromKind); |
| } |
| |
| async items() { |
| return invoke('plugin:menu|items', { |
| rid: this.rid, |
| kind: this.kind |
| }).then((i) => i.map(itemFromKind)); |
| } |
| |
| async get(id) { |
| return invoke('plugin:menu|get', { |
| rid: this.rid, |
| kind: this.kind, |
| id |
| }).then((r) => (r ? itemFromKind(r) : null)); |
| } |
| |
| |
| |
| |
| |
| async popup(at, window) { |
| var _a; |
| return invoke('plugin:menu|popup', { |
| rid: this.rid, |
| kind: this.kind, |
| window: (_a = window === null || window === void 0 ? void 0 : window.label) !== null && _a !== void 0 ? _a : null, |
| at: at instanceof Position ? at : at ? new Position(at) : null |
| }); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| async setAsWindowsMenuForNSApp() { |
| return invoke('plugin:menu|set_as_windows_menu_for_nsapp', { |
| rid: this.rid |
| }); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| async setAsHelpMenuForNSApp() { |
| return invoke('plugin:menu|set_as_help_menu_for_nsapp', { |
| rid: this.rid |
| }); |
| } |
| |
| async setIcon(icon) { |
| return invoke('plugin:menu|set_icon', { |
| rid: this.rid, |
| kind: this.kind, |
| icon: transformImage(icon) |
| }); |
| } |
| } |
|
|
| export { Submenu, itemFromKind }; |
|
|