From 2d5b95e18e118edba46e82b19d29849a1dd97bc9 Mon Sep 17 00:00:00 2001 From: Jacob Karlsson Date: Mon, 1 Apr 2019 00:39:03 +0900 Subject: [PATCH 1/2] Add searchEngine context menu argument --- src/context-menu-builder.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/context-menu-builder.js b/src/context-menu-builder.js index 413473c..e072c0a 100644 --- a/src/context-menu-builder.js +++ b/src/context-menu-builder.js @@ -14,6 +14,7 @@ const contextMenuStringTable = { addToDictionary: () => `Add to Dictionary`, lookUpDefinition: ({word}) => `Look Up "${word}"`, searchGoogle: () => `Search with Google`, + searchDdg: () => `Search with DuckDuckGo`, cut: () => `Cut`, copy: () => `Copy`, paste: () => `Paste`, @@ -38,10 +39,11 @@ module.exports = class ContextMenuBuilder { * @param {function} processMenu If passed, this method will be passed the menu to change * it prior to display. Signature: (menu, info) => menu */ - constructor(spellCheckHandler, windowOrWebView=null, debugMode=false, processMenu=(m) => m) { + constructor(spellCheckHandler, windowOrWebView=null, debugMode=false, processMenu=null, searchEngine='google') { this.spellCheckHandler = spellCheckHandler; this.debugMode = debugMode; - this.processMenu = processMenu; + this.processMenu = processMenu || ((m) => m); + this.searchEngine = searchEngine; this.menu = null; this.stringTable = Object.assign({}, contextMenuStringTable); From bac0464fee0de162c04ae127668219e236120f31 Mon Sep 17 00:00:00 2001 From: Jacob Karlsson Date: Mon, 1 Apr 2019 00:54:10 +0900 Subject: [PATCH 2/2] Implement searching using ddg option --- src/context-menu-builder.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/context-menu-builder.js b/src/context-menu-builder.js index e072c0a..29c582e 100644 --- a/src/context-menu-builder.js +++ b/src/context-menu-builder.js @@ -38,6 +38,7 @@ module.exports = class ContextMenuBuilder { * @param {Boolean} debugMode If true, display the "Inspect Element" menu item. * @param {function} processMenu If passed, this method will be passed the menu to change * it prior to display. Signature: (menu, info) => menu + * @param {String} searchEngine Optional. Pass either 'google' (default) or 'ddg' (for DuckDuckGo) */ constructor(spellCheckHandler, windowOrWebView=null, debugMode=false, processMenu=null, searchEngine='google') { this.spellCheckHandler = spellCheckHandler; @@ -298,7 +299,13 @@ module.exports = class ContextMenuBuilder { menu.append(lookUpDefinition); } - let search = new MenuItem({ + let search = new MenuItem(this.searchEngine === 'ddg' ? { + label: this.stringTable.searchDdg(), + click: () => { + let url = `https://duckduckgo.com/?q=${encodeURIComponent(menuInfo.selectionText)}`; + shell.openExternal(url); + } + } : { label: this.stringTable.searchGoogle(), click: () => { let url = `https://www.google.com/#q=${encodeURIComponent(menuInfo.selectionText)}`;