summaryrefslogtreecommitdiff
path: root/ext/fg/js
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2016-04-17 18:13:20 -0700
committerAlex Yatskov <alex@foosoft.net>2016-04-17 18:13:20 -0700
commitf079db0471424a873f22315c7911571d467e97ad (patch)
tree96860218da185c478e269a7c12e6210ccba7ee3f /ext/fg/js
parentbcd34149ab120f4bd0b823fbd6ae4efadfb02e90 (diff)
Support switching between edict and enamdict
Diffstat (limited to 'ext/fg/js')
-rw-r--r--ext/fg/js/api.js4
-rw-r--r--ext/fg/js/client.js38
-rw-r--r--ext/fg/js/popup.js22
3 files changed, 43 insertions, 21 deletions
diff --git a/ext/fg/js/api.js b/ext/fg/js/api.js
index c65b1702..7997a73f 100644
--- a/ext/fg/js/api.js
+++ b/ext/fg/js/api.js
@@ -21,8 +21,8 @@ function sendMessage(action, data, callback) {
chrome.runtime.sendMessage({action: action, data: data}, callback);
}
-function findTerm(text, callback) {
- sendMessage('findTerm', {text: text}, callback);
+function findTerm(text, dict, callback) {
+ sendMessage('findTerm', {text: text, dict: dict}, callback);
}
function findKanji(text, callback) {
diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js
index b757123c..4df19594 100644
--- a/ext/fg/js/client.js
+++ b/ext/fg/js/client.js
@@ -19,11 +19,12 @@
class Client {
constructor() {
- this.lastMosePos = null;
- this.popupQuery = '';
- this.popupOffset = 10;
- this.enabled = false;
- this.options = null;
+ this.popupMousePos = null;
+ this.popupQuery = '';
+ this.popupOffset = 10;
+ this.enabled = false;
+ this.options = {};
+ this.activeDict = '';
this.popup = document.createElement('iframe');
this.popup.classList.add('yomichan-popup');
@@ -40,29 +41,29 @@ class Client {
window.addEventListener('resize', (e) => this.hidePopup());
getOptions((opts) => {
- this.setDict('edict');
+ this.setActiveDict('edict');
this.setOptions(opts);
getState((state) => this.setEnabled(state === 'enabled'));
});
}
onKeyDown(e) {
- if (this.enabled && this.lastMousePos !== null && (e.keyCode === 16 || e.charCode === 16)) {
- this.searchAtPoint(this.lastMousePos);
+ if (this.enabled && this.popupMousePos !== null && (e.keyCode === 16 || e.charCode === 16)) {
+ this.searchAtPoint(this.popupMousePos);
}
}
onMouseMove(e) {
- this.lastMousePos = {x: e.clientX, y: e.clientY};
+ this.popupMousePos = {x: e.clientX, y: e.clientY};
if (this.enabled && (e.shiftKey || e.which === 2)) {
- this.searchAtPoint(this.lastMousePos);
+ this.searchAtPoint(this.popupMousePos);
}
}
onMouseDown(e) {
- this.lastMousePos = {x: e.clientX, y: e.clientY};
+ this.popupMousePos = {x: e.clientX, y: e.clientY};
if (this.enabled && (e.shiftKey || e.which === 2)) {
- this.searchAtPoint(this.lastMousePos);
+ this.searchAtPoint(this.popupMousePos);
} else {
this.hidePopup();
}
@@ -84,8 +85,8 @@ class Client {
onFrameMessage(e) {
const {action, data} = e.data;
switch (action) {
- case 'selectDict':
- this.setDict(data);
+ case 'setActiveDict':
+ this.setActiveDict(data);
break;
}
}
@@ -113,11 +114,11 @@ class Client {
return;
}
- findTerm(popupQuery, ({results, length}) => {
+ findTerm(popupQuery, this.activeDict, ({results, length}) => {
if (length === 0) {
this.hidePopup();
} else {
- const params = {defs: results, root: chrome.extension.getURL('fg')};
+ const params = {defs: results, root: chrome.extension.getURL('fg'), activeDict: this.activeDict};
renderText(params, 'defs.html', (html) => this.showPopup(range, html, popupQuery, length));
}
});
@@ -168,9 +169,8 @@ class Client {
this.options = opts;
}
- setDict(dict) {
- this.dict = dict;
- alert(dict);
+ setActiveDict(activeDict) {
+ this.activeDict = activeDict;
}
}
diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js
new file mode 100644
index 00000000..2753a863
--- /dev/null
+++ b/ext/fg/js/popup.js
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2016 Alex Yatskov <alex@foosoft.net>
+ * Author: Alex Yatskov <alex@foosoft.net>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+function setActiveDict(dict) {
+ parent.postMessage({action: 'setActiveDict', data: dict}, '*');
+}