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
|
|
|
}
|