Signal-Desktop/app/menu.js

215 lines
3.7 KiB
JavaScript
Raw Normal View History

function createTemplate(options, messages) {
const showDebugLog = options.showDebugLog;
const showAbout = options.showAbout;
const openReleaseNotes = options.openReleaseNotes;
const openNewBugForm = options.openNewBugForm;
const openSupportPage = options.openSupportPage;
const openForums = options.openForums;
2017-04-05 18:29:43 +00:00
let template = [{
label: messages.mainMenuFile.message,
submenu: [
{
role: 'quit',
},
]
},
2017-04-05 18:29:43 +00:00
{
label: messages.mainMenuEdit.message,
2017-04-05 18:29:43 +00:00
submenu: [
{
role: 'undo',
2017-04-05 18:29:43 +00:00
},
{
role: 'redo',
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
role: 'cut',
2017-04-05 18:29:43 +00:00
},
{
role: 'copy',
2017-04-05 18:29:43 +00:00
},
{
role: 'paste',
2017-04-05 18:29:43 +00:00
},
{
role: 'pasteandmatchstyle',
2017-04-05 18:29:43 +00:00
},
{
role: 'delete',
2017-04-05 18:29:43 +00:00
},
{
role: 'selectall',
2017-04-05 18:29:43 +00:00
}
]
},
{
label: messages.mainMenuView.message,
2017-04-05 18:29:43 +00:00
submenu: [
{
role: 'resetzoom',
},
{
role: 'zoomin',
},
2017-04-05 18:29:43 +00:00
{
role: 'zoomout',
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
role: 'togglefullscreen',
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
label: messages.debugLog.message,
click: showDebugLog,
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
role: 'toggledevtools',
2017-04-05 18:29:43 +00:00
},
]
},
{
label: messages.mainMenuWindow.message,
role: 'window',
submenu: [
2017-04-05 18:29:43 +00:00
{
role: 'minimize',
2017-04-05 18:29:43 +00:00
},
]
},
{
label: messages.mainMenuHelp.message,
role: 'help',
2017-04-05 18:29:43 +00:00
submenu: [
{
label: messages.goToReleaseNotes.message,
click: openReleaseNotes,
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
},
{
label: messages.goToForums.message,
click: openForums,
},
{
label: messages.goToSupportPage.message,
click: openSupportPage,
},
{
label: messages.fileABug.message,
click: openNewBugForm,
},
{
type: 'separator',
},
{
label: messages.aboutSignalDesktop.message,
click: showAbout,
},
2017-04-05 18:29:43 +00:00
]
}];
if (process.platform === 'darwin') {
return updateForMac(template, messages, options);
2017-04-05 18:29:43 +00:00
}
return template;
}
function updateForMac(template, messages, options) {
const showWindow = options.showWindow;
const showAbout = options.showAbout;
// Remove About item and separator from Help menu, since it's on the first menu
template[4].submenu.pop();
template[4].submenu.pop();
// Replace File menu
template.shift();
2017-04-05 18:29:43 +00:00
template.unshift({
submenu: [
{
label: messages.aboutSignalDesktop.message,
click: showAbout,
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
role: 'hide',
2017-04-05 18:29:43 +00:00
},
{
role: 'hideothers',
2017-04-05 18:29:43 +00:00
},
{
role: 'unhide',
2017-04-05 18:29:43 +00:00
},
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
role: 'quit',
},
2017-04-05 18:29:43 +00:00
]
});
// Add to Edit menu
2017-04-05 18:29:43 +00:00
template[1].submenu.push(
{
type: 'separator'
},
{
label: messages.speech.message,
2017-04-05 18:29:43 +00:00
submenu: [
{
role: 'startspeaking',
2017-04-05 18:29:43 +00:00
},
{
role: 'stopspeaking',
},
2017-04-05 18:29:43 +00:00
]
}
);
// Add to Window menu
2017-04-05 18:29:43 +00:00
template[3].submenu = [
{
accelerator: 'CmdOrCtrl+W',
role: 'close',
2017-04-05 18:29:43 +00:00
},
{
accelerator: 'CmdOrCtrl+M',
role: 'minimize',
2017-04-05 18:29:43 +00:00
},
{
role: 'zoom',
2017-04-05 18:29:43 +00:00
},
{
label: messages.show.message,
click: showWindow,
},
2017-04-05 18:29:43 +00:00
{
type: 'separator',
2017-04-05 18:29:43 +00:00
},
{
role: 'front',
},
];
return template;
2017-04-05 18:29:43 +00:00
}
module.exports = createTemplate;