bitwarden-estensione-browser/src/main/menu.main.ts

186 lines
5.5 KiB
TypeScript
Raw Normal View History

2018-02-08 21:58:47 +01:00
import {
app,
BrowserWindow,
Menu,
MenuItemConstructorOptions,
ipcMain,
} from 'electron';
import { WindowMain } from './window.main';
2018-02-08 19:10:13 +01:00
export class MenuMain {
2018-02-08 21:58:47 +01:00
constructor(private windowMain: WindowMain) { }
2018-02-08 19:10:13 +01:00
init() {
2018-02-08 21:58:47 +01:00
const self = this;
2018-02-08 19:10:13 +01:00
const template: MenuItemConstructorOptions[] = [
2018-02-08 21:58:47 +01:00
{
label: 'bitwarden'
},
{
label: 'File',
submenu: [
{
label: 'New Item',
submenu: [
{
label: 'New Login',
click() {
self.send('newLogin');
}
},
{
label: 'New Card',
click() {
self.send('newCard');
}
},
{
label: 'New Identity',
click() {
self.send('newIdentity');
}
},
{
label: 'New Secure Note',
click() {
self.send('newSecureNote');
}
}
]
},
{
label: 'New Login',
click() {
self.send('newLogin');
}
},
{
label: 'New Folder',
click() {
self.send('newFolder');
}
}
]
},
2018-02-08 19:10:13 +01:00
{
label: 'Edit',
submenu: [
{ role: 'undo' },
{ role: 'redo' },
{ type: 'separator' },
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
{ role: 'pasteandmatchstyle' },
{ role: 'delete' },
{ role: 'selectall' }
]
},
{
label: 'View',
submenu: [
{ role: 'reload' },
{ role: 'forcereload' },
{ role: 'toggledevtools' },
{ type: 'separator' },
{ role: 'resetzoom' },
{ role: 'zoomin' },
{ role: 'zoomout' },
{ type: 'separator' },
{ role: 'togglefullscreen' }
]
},
2018-02-08 21:58:47 +01:00
{
label: 'Account',
submenu: [
{
label: 'Log Out',
click() {
self.send('confirmLogout');
}
},
]
},
2018-02-08 19:10:13 +01:00
{
role: 'window',
submenu: [
{ role: 'minimize' },
{ role: 'close' }
]
},
{
role: 'help',
submenu: [
{
label: 'Learn More',
click() { require('electron').shell.openExternal('https://electronjs.org') }
}
]
}
];
if (process.platform === 'darwin') {
2018-02-08 21:58:47 +01:00
template[0].submenu = [
{
label: 'Settings',
click() {
self.send('openSettings');
}
},
{
label: 'Lock',
click() {
self.send('lockApp');
}
},
{ type: 'separator' },
{ role: 'about' },
{ type: 'separator' },
{ role: 'services', submenu: [] },
{ type: 'separator' },
{ role: 'hide' },
{ role: 'hideothers' },
{ role: 'unhide' },
{ type: 'separator' },
{ role: 'quit' }
];
2018-02-08 19:10:13 +01:00
// Window menu
2018-02-08 21:58:47 +01:00
template[4].submenu = [
2018-02-08 19:10:13 +01:00
{ role: 'close' },
{ role: 'minimize' },
{ role: 'zoom' },
{ type: 'separator' },
{ role: 'front' }
]
2018-02-08 21:58:47 +01:00
} else {
template[0].submenu = [
{
label: 'Settings',
click() {
self.send('openSettings');
}
},
{
label: 'Lock',
click() {
self.send('lockApp');
}
},
];
}
2018-02-08 19:10:13 +01:00
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
}
2018-02-08 21:58:47 +01:00
send(command: string, message?: any) {
this.windowMain.win.webContents.send('messagingService', {
command: command,
message: message,
});
}
2018-02-08 19:10:13 +01:00
}