Add context menu to Symphony Electron (#39)

* Add context menu to Symphony Electron

* Moving menus to js/menus directory

* make contextMenu window changeable
This commit is contained in:
rbarros-daitan 2017-03-24 13:31:20 -03:00 committed by Lynn
parent 2ded38c542
commit 3f8757dc90
5 changed files with 59 additions and 1 deletions

View File

@ -8,6 +8,7 @@ const squirrelStartup = require('electron-squirrel-startup');
const getConfig = require('./getConfig.js');
const { isMac, isDevEnv } = require('./utils/misc.js');
// exit early for squirrel installer
if (squirrelStartup) {
return;
@ -18,6 +19,7 @@ require('./mainApiMgr.js');
// monitor memory of main process
require('./memoryMonitor.js');
const windowMgr = require('./windowMgr.js');
/**

51
js/menus/contextMenu.js Normal file
View File

@ -0,0 +1,51 @@
'use strict';
var cm = require('electron-context-menu');
/**
* Creates & applies Right Click Context Menu based on
* electron-context-menu library o all windows.
* Unless activated on edittable field, Reload option is shown.
* Enabled Cut/Copy/Paste/Delete/Select all on text.
* Enabled Save Image on images
* Enabled Copy Link on href Link
* Inspect Element is not enabled.
*/
function contextMenu(browserWindow){
cm({
browserWindow,
prepend: (params) => [
{
role: 'reload',
enabled: params.isEditable === false,
visible: params.isEditable === false
},
{
role: 'undo',
enabled: params.isEditable && params.editFlags.canUndu,
visible: params.isEditable
},
{
role: 'redo',
enabled: params.isEditable && params.editFlags.canRedo,
visible: params.isEditable
}
],
append: (params) => [
{
role: 'delete',
enabled: params.isEditable && params.editFlags.canDelete,
visible: params.isEditable
},
{
role: 'selectall',
enabled: params.isEditable && params.editFlags.canSelectAll,
visible: params.isEditable
}
],
showInspectElement: false
});
}
module.exports = contextMenu;

View File

@ -4,13 +4,15 @@ const electron = require('electron');
const app = electron.app;
const path = require('path');
const menuTemplate = require('./menuTemplate.js');
const menuTemplate = require('./menus/menuTemplate.js');
const loadErrors = require('./dialogs/showLoadError.js');
const { isMac } = require('./utils/misc.js');
const getGuid = require('./utils/getGuid.js');
const log = require('./log.js')
const logLevels = require('./enums/logLevels.js');
//context menu
const contextMenu = require('./menus/contextMenu.js');
// show dialog when certificate errors occur
require('./dialogs/showCertError.js');
@ -112,6 +114,7 @@ function createMainWindow(url) {
event.preventDefault();
electron.shell.openExternal(newWinUrl);
});
contextMenu(mainWindow);
}
app.on('before-quit', function() {
@ -166,6 +169,7 @@ function createChildWindow(url, title, width, height) {
}
}
});
contextMenu(childWindow);
}
function setIsOnline(status) {

View File

@ -80,6 +80,7 @@
"async": "^2.1.5",
"electron-squirrel-startup": "^1.0.0",
"keymirror": "0.1.1",
"electron-context-menu": "^0.8.0",
"winreg": "^1.2.3"
}
}