Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit 65fdb8a

Browse files
committed
### Version 0.47.1 (Context Menu for Browser)
#### Fix - Upgrade dbl_dot_local_app cleaner_cli (9/25/2019) ### Version 0.47.0 (Context Menu for Browser) #### Feature - Add Edit > Find / Next / Backward to Browser Menus (Merge branch 'begin_context_menu')
2 parents f5bd231 + c80e635 commit 65fdb8a

File tree

4 files changed

+127
-4
lines changed

4 files changed

+127
-4
lines changed

CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
### Version 0.47.1 (Context Menu for Browser)
2+
3+
#### Fix
4+
5+
- Upgrade dbl_dot_local_app cleaner_cli (9/25/2019)
6+
7+
### Version 0.47.0 (Context Menu for Browser)
8+
9+
#### Feature
10+
11+
- Add Edit > Find / Next / Backward to Browser Menus
12+
113
### Version 0.46.0 (Context Menu for Browser)
214

315
#### Feature

app/services/browserWindow.service.js

+94-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import log from 'electron-log';
22
import fs from 'fs-extra';
33
import path from 'path';
44
import upath from 'upath';
5+
import prompt from 'electron-prompt';
56
import { servicesHelpers } from '../helpers/services';
67

78
const {
@@ -43,6 +44,75 @@ function saveFileToFolder(browserWin) {
4344
shell.showItemInFolder(targetFile);
4445
}
4546

47+
let lastSearchText;
48+
let lastSearchIndex;
49+
let lastSearchResults;
50+
const findNextLabel = 'Find Next';
51+
const findNextShortcut = 'F3';
52+
const findBackShortcut = 'Shift+F3';
53+
54+
function findNextInPageMenuItem(browserWin, searchText, forward = true) {
55+
const findNextInfo = lastSearchResults
56+
? ` (${lastSearchIndex}/${lastSearchResults})`
57+
: '';
58+
return findInPageMenuItem(
59+
browserWin,
60+
searchText,
61+
false,
62+
`${forward ? findNextLabel : 'Find Backward'}${findNextInfo}`,
63+
forward ? findNextShortcut : findBackShortcut,
64+
forward
65+
);
66+
}
67+
68+
function findInPageMenuItem(
69+
browserWin,
70+
selectionText,
71+
openPrompt = true,
72+
label = 'Find',
73+
accelerator = 'CmdOrCtrl+F',
74+
forward = true
75+
) {
76+
return {
77+
label,
78+
accelerator,
79+
click: async () => {
80+
const { webContents } = browserWin;
81+
webContents.unselect();
82+
if (openPrompt) {
83+
try {
84+
const promptResult = await prompt(
85+
{
86+
title: label,
87+
label: '',
88+
resizable: true,
89+
value: selectionText,
90+
inputAttrs: {
91+
type: 'text'
92+
}
93+
},
94+
browserWin
95+
);
96+
if (!promptResult || promptResult.length === 0) {
97+
return;
98+
}
99+
lastSearchText = promptResult;
100+
lastSearchIndex = undefined;
101+
lastSearchResults = undefined;
102+
webContents.findInPage(promptResult);
103+
} catch (error) {
104+
log.error(error);
105+
}
106+
} else {
107+
if (!selectionText || selectionText.length === 0) {
108+
return;
109+
}
110+
webContents.findInPage(selectionText, { forward });
111+
}
112+
}
113+
};
114+
}
115+
46116
function buildBrowserTemplate(browserWin) {
47117
// console.log('menu/buildDefaultTemplate');
48118
// console.log(loginLabel);
@@ -66,6 +136,11 @@ function buildBrowserTemplate(browserWin) {
66136
{
67137
role: 'copy'
68138
},
139+
{ type: 'separator' },
140+
findInPageMenuItem(browserWin, lastSearchText),
141+
findNextInPageMenuItem(browserWin, lastSearchText, true),
142+
findNextInPageMenuItem(browserWin, lastSearchText, false),
143+
{ type: 'separator' },
69144
{
70145
role: 'selectAll'
71146
}
@@ -139,9 +214,25 @@ function openFileInChromeBrowser(
139214
}
140215
});
141216
}
142-
143-
browserWin.webContents.on('context-menu', () => {
144-
Menu.buildFromTemplate([{ role: 'copy' }]).popup(browserWin);
217+
browserWin.webContents.on('found-in-page', (event, result) => {
218+
const { activeMatchOrdinal, matches } = result;
219+
lastSearchResults = matches;
220+
lastSearchIndex = activeMatchOrdinal;
221+
buildBrowserMenu(browserWin);
222+
});
223+
browserWin.webContents.on('context-menu', (event, params) => {
224+
const { selectionText } = params;
225+
const searchText =
226+
selectionText && selectionText.length > 0
227+
? selectionText
228+
: lastSearchText;
229+
Menu.buildFromTemplate([
230+
{ role: 'copy' },
231+
{ type: 'separator' },
232+
findInPageMenuItem(browserWin, selectionText),
233+
findNextInPageMenuItem(browserWin, searchText),
234+
findNextInPageMenuItem(browserWin, searchText, false)
235+
]).popup(browserWin);
145236
});
146237
return browserWin;
147238
}

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "nathanael",
33
"productName": "nathanael",
4-
"version": "0.46.0",
4+
"version": "0.47.1",
55
"description": "Electron frontend to DBL dot Local",
66
"scripts": {
77
"build": "concurrently \"yarn build-main\" \"yarn build-renderer\"",
@@ -257,6 +257,7 @@
257257
"devtron": "^1.4.0",
258258
"electron-debug": "^2.1.0",
259259
"electron-log": "^3.0.4",
260+
"electron-prompt": "^1.3.1",
260261
"electron-store": "^2.0.0",
261262
"electron-updater": "^4.0.6",
262263
"fast-sort": "^1.5.3",

yarn.lock

+19
Original file line numberDiff line numberDiff line change
@@ -5249,6 +5249,13 @@ dns-txt@^2.0.2:
52495249
dependencies:
52505250
buffer-indexof "^1.0.0"
52515251

5252+
doc-ready@^1.0.4:
5253+
version "1.0.4"
5254+
resolved "https://registry.yarnpkg.com/doc-ready/-/doc-ready-1.0.4.tgz#37f5391969cff994303fdfef2e5d50357f8164d3"
5255+
integrity sha1-N/U5GWnP+ZQwP9/vLl1QNX+BZNM=
5256+
dependencies:
5257+
eventie "^1"
5258+
52525259
52535260
version "1.5.0"
52545261
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
@@ -5500,6 +5507,13 @@ [email protected]:
55005507
minimist "^1.2.0"
55015508
plist "^3.0.1"
55025509

5510+
electron-prompt@^1.3.1:
5511+
version "1.3.1"
5512+
resolved "https://registry.yarnpkg.com/electron-prompt/-/electron-prompt-1.3.1.tgz#547dfa6daa68264249c689f0086fdfad6c9bf52b"
5513+
integrity sha512-bCbDb9c9knx23PG6MfzBdYuffDZlZQ9gZhjTuUVCAwdCZv9hj/7IEguvBrP4DVDTouv+pYQ0LqCh5VuwYDktpg==
5514+
dependencies:
5515+
doc-ready "^1.0.4"
5516+
55035517
55045518
version "20.39.0"
55055519
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.39.0.tgz#a945d871b469b4160933d4e027612710b653f006"
@@ -6083,6 +6097,11 @@ eventemitter3@^3.0.0:
60836097
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
60846098
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
60856099

6100+
eventie@^1:
6101+
version "1.0.6"
6102+
resolved "https://registry.yarnpkg.com/eventie/-/eventie-1.0.6.tgz#d4ffc8b0c2b5e493c2aa1b22cbe918d3aee74437"
6103+
integrity sha1-1P/IsMK15JPCqhsiy+kY067nRDc=
6104+
60866105
events@^3.0.0:
60876106
version "3.0.0"
60886107
resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"

0 commit comments

Comments
 (0)