diff --git a/background-script.js b/background-script.js
index 16b15ef..f96bf15 100644
--- a/background-script.js
+++ b/background-script.js
@@ -81,8 +81,8 @@ function buildlookups()
}
console.log("built lookup tables");
console.log("size:");
- console.log(Object.keys(lookup_kan).length);
- console.log(Object.keys(lookup_kana).length);
+ console.log(lookup_kan.size);
+ console.log(lookup_kana.size);
console.log("dict size:");
console.log(dict.length);
}
@@ -771,13 +771,13 @@ function lookup_indirect(text, time, divexisted)
}
if(result !== undefined)
{
- //console.log("found lookup");
- //console.log(text)
+ console.log("found lookup");
+ console.log(text)
return {text:text, result:result};
}
else
{
- //console.log("did not find lookup");
+ console.log("did not find lookup");
//console.log(text);
}
}
@@ -787,20 +787,26 @@ async function update_icon(enabled)
if(enabled)
{
browser.browserAction.setTitle({title:"Nazeka (enabled)"});
- browser.browserAction.setIcon({path:{
- "16": "img/enabled16.png",
- "32": "img/enabled32.png",
- "512": "img/enabled512.png"
- }},);
+ try
+ {
+ browser.browserAction.setIcon({path:{
+ "16": "img/enabled16.png",
+ "32": "img/enabled32.png",
+ "512": "img/enabled512.png"
+ }},);
+ } catch (err) {}
}
else
{
browser.browserAction.setTitle({title:"Nazeka (disabled)"});
- browser.browserAction.setIcon({path:{
- "16": "img/action16.png",
- "32": "img/action32.png",
- "512": "img/action512.png"
- }},);
+ try
+ {
+ browser.browserAction.setIcon({path:{
+ "16": "img/action16.png",
+ "32": "img/action32.png",
+ "512": "img/action512.png"
+ }},);
+ } catch (err) {}
}
}
@@ -846,12 +852,15 @@ function tryopenwindow(info, tab)
}
}
-browser.contextMenus.create({
- id: "nazeka-reopen",
- title: "Open Reader",
- contexts: ["browser_action"],
- onclick: tryopenwindow
-});
+if(browser.contextMenus)
+{
+ browser.contextMenus.create({
+ id: "nazeka-reopen",
+ title: "Open Reader",
+ contexts: ["browser_action"],
+ onclick: tryopenwindow
+ });
+}
let origin_tab = undefined;
@@ -882,8 +891,10 @@ function clipboard_hook(tab)
document.execCommand("paste");
}
+console.log("setting message listener");
browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
{
+ console.log("received message to background script");
if (req.type == "search")
{
sendResponse(lookup_indirect(req.text, req.time, req.divexisted));
@@ -901,6 +912,7 @@ browser.runtime.onMessage.addListener((req, sender, sendResponse) =>
return;
}
});
+console.log("set message listener");
browser.contextMenus.create({
id: "nazeka-toggle",
diff --git a/options.html b/options.html
index 21aa869..1459c45 100644
--- a/options.html
+++ b/options.html
@@ -18,6 +18,8 @@
+
+
This extension uses JMdict, which is Copyright © 2017 The Electronic Dictionary Research and Development Group and licensed under the CC BY-SA 3.0 license.
This extension is otherwise licensed under the Apache License, version 2.0.
Meanings of abbreviations follow. From JMdict.
diff --git a/options.js b/options.js index 3b8fe8e..3400fa8 100644 --- a/options.js +++ b/options.js @@ -4,6 +4,8 @@ function restoreListeners() document.querySelector("#compact").addEventListener("change", setOptions); document.querySelector("#length").addEventListener("change", setOptions); document.querySelector("#scale").addEventListener("change", setOptions); + document.querySelector("#width").addEventListener("change", setOptions); + document.querySelector("#lookuprate").addEventListener("change", setOptions); document.querySelector("#fixedwidth").addEventListener("change", setOptions); document.querySelector("#fixedwidthpositioning").addEventListener("change", setOptions); document.querySelector("#superborder").addEventListener("change", setOptions); @@ -15,6 +17,8 @@ function removeListeners() document.querySelector("#compact").removeEventListener("change", setOptions); document.querySelector("#length").removeEventListener("change", setOptions); document.querySelector("#scale").addEventListener("change", setOptions); + document.querySelector("#width").addEventListener("change", setOptions); + document.querySelector("#lookuprate").addEventListener("change", setOptions); document.querySelector("#fixedwidth").removeEventListener("change", setOptions); document.querySelector("#fixedwidthpositioning").removeEventListener("change", setOptions); document.querySelector("#superborder").addEventListener("change", setOptions); @@ -36,6 +40,8 @@ async function restoreOptions() let compact = await getvar("compact", true); let length = await getvar("length", 25); let scale = await getvar("scale", 1); + let width = await getvar("width", 600); + let lookuprate = await getvar("lookuprate", 8); let fixedwidth = await getvar("fixedwidth", false); let fixedwidthpositioning = await getvar("fixedwidthpositioning", false); let superborder = await getvar("superborder", false); @@ -45,6 +51,8 @@ async function restoreOptions() document.querySelector("#compact").checked = compact?true:false; document.querySelector("#length").value = length?length:25; document.querySelector("#scale").value = scale?scale:1; + document.querySelector("#width").value = width?width:600; + document.querySelector("#lookuprate").value = lookuprate?lookuprate:8; document.querySelector("#fixedwidth").checked = fixedwidth?true:false; document.querySelector("#fixedwidthpositioning").checked = fixedwidthpositioning?true:false; document.querySelector("#superborder").checked = superborder?true:false; @@ -68,12 +76,20 @@ function setOptions() let scale = Number(document.querySelector("#scale").value); if(!scale) // NaN is falsy scale = 1; + let width = Number(document.querySelector("#width").value); + if(!width) // NaN is falsy + width = 600; + let lookuprate = Number(document.querySelector("#lookuprate").value); + if(!lookuprate) // NaN is falsy + lookuprate = 8; browser.storage.local.set( { enabled: document.querySelector("#enabled").checked, compact: document.querySelector("#compact").checked, length: length, scale: scale, + width: width, + lookuprate: lookuprate, fixedwidth: document.querySelector("#fixedwidth").checked, fixedwidthpositioning: document.querySelector("#fixedwidthpositioning").checked, superborder: document.querySelector("#superborder").checked, diff --git a/texthook.js b/texthook.js index ab043fc..9e94f4a 100644 --- a/texthook.js +++ b/texthook.js @@ -31,6 +31,8 @@ fixedwidthpositioning: false, superborder: false, showoriginal: true, scale: 1, +width: 600, +lookuprate: 8, }; let last_time_display = Date.now(); @@ -75,9 +77,9 @@ function display_div (middle, x, y, time) let styletext = ""; if(settings.fixedwidth) - styletext += "width: 600px; " + styletext += "width: " + Math.round(Number(settings.width)) + "px; " else - styletext += "max-width: 600px; " + styletext += "max-width: " + Math.round(Number(settings.width)) + "px; " styletext += "position: absolute; top: 0; left: 0; "; if(settings.superborder) @@ -106,7 +108,7 @@ function display_div (middle, x, y, time) outer.style = styletext; - let mywidth = 600; + let mywidth = settings.width; if(!settings.fixedwidthpositioning) mywidth = outer.offsetWidth; @@ -553,6 +555,9 @@ async function settings_init() getvar("enabled", false); getvar("compact", true); getvar("length", 25); + getvar("scale", 1); + getvar("width", 600); + getvar("lookuprate", 8); getvar("fixedwidth", false); getvar("fixedwidthpositioning", false); getvar("superborder", false); @@ -572,7 +577,7 @@ browser.storage.onChanged.addListener((updates, storageArea) => { let option = setting[0]; let value = setting[1]; - if(["enabled","compact","length","fixedwidth","fixedwidthpositioning","superborder","showoriginal","scale"].includes(option)) + if(Object.keys(settings).includes(option)) settings[option] = value.newValue; } if(!settings.enabled && exists_div()) @@ -583,13 +588,14 @@ browser.storage.onChanged.addListener((updates, storageArea) => let lookup_timer = undefined; let lookup_queue = []; -let lookup_rate = 8; +//let lookup_rate = 8; let lookup_loop_cancel = false; let lookup_last_time = Date.now(); async function lookup_loop() { + //console.log("running lookup queue"); lookup_last_time = Date.now(); let t_start = Date.now(); if(lookup_queue.length > 0) @@ -597,7 +603,9 @@ async function lookup_loop() //console.log("queue not empty"); let lookup = lookup_queue.pop(); lookup_queue = []; + console.log("asking background to search the dictionary"); let response = await browser.runtime.sendMessage({type:"search", text:lookup[0], time:Date.now(), divexisted:exists_div()}); + console.log("got response"); if(response) { let mydiv = build_div(response.text, response.result); @@ -606,12 +614,13 @@ async function lookup_loop() } } let t_end = Date.now(); - let t_to_wait = lookup_rate - (t_end - t_start); + let t_to_wait = settings.lookuprate - (t_end - t_start); if(t_to_wait < 0) t_to_wait = 0; - if(t_to_wait > lookup_rate) t_to_wait = lookup_rate; + if(t_to_wait > settings.lookuprate) t_to_wait = settings.lookuprate; if(lookup_loop_cancel) { + console.log("queue setup"); lookup_loop_cancel = false; lookup_timer = undefined; return; @@ -620,27 +629,29 @@ async function lookup_loop() lookup_timer = setTimeout(lookup_loop, t_to_wait); } -lookup_timer = setTimeout(lookup_loop, lookup_rate); +lookup_timer = setTimeout(lookup_loop, settings.lookuprate); function lookup_enqueue(text, x, y, x2, y2) { + console.log("trying to enqueue lookup"); lookup_queue = [[text, x, y, x2, y2]]; - if(!lookup_timer || lookup_last_time+lookup_rate*100 < Date.now()) + console.log("enqueued lookup"); + if(!lookup_timer || lookup_last_time+settings.lookuprate*100 < Date.now()) { if(lookup_timer) clearTimeout(lookup_timer); - lookup_timer = setTimeout(lookup_loop, lookup_rate); + lookup_timer = setTimeout(lookup_loop, settings.lookuprate); } } function lookup_cancel() { + console.log("cancelling lookup"); lookup_queue = []; delete_div(); } let time_of_last = Date.now(); -let throttle = 8; let seach_x_offset = -3; @@ -648,15 +659,15 @@ function update(event) { if(!settings.enabled) return; - if(Date.now() - time_of_last < throttle) + if(Date.now() - time_of_last < settings.lookuprate) { //console.log("too soon, returning"); //console.log(Date.now() + " vs " + time_of_last); return; } - //console.log("---- mousemove entry at " + Date.now()); + console.log("---- entry to word lookup at " + Date.now()); time_of_last = Date.now(); - //console.log("searching for text"); + console.log("searching for text"); let textNode; let offset; @@ -718,8 +729,8 @@ function update(event) // if there was text, use it if (textNode && textNode.nodeType == 3) { - //print_object(textNode); - //print_object(textNode.parentNode); + print_object(textNode); + print_object(textNode.parentNode); let rect = textNode.parentNode.getBoundingClientRect(); let fud = 5; // FIXME: Doesn't work to reject in all cases @@ -730,7 +741,7 @@ function update(event) lookup_cancel(); return; } - //console.log("found text"); + console.log("found text"); let text = textNode.textContent.substring(offset, textNode.textContent.length); // grab text from later and surrounding DOM nodes @@ -778,13 +789,16 @@ function update(event) } text = text.trim(); - //print_object(text); + print_object(text); text = text.substring(0, Math.min(text.length, settings.length)); //if(text != "") //lookup_indirect(text, event.clientX, event.clientY, time_of_last); if(text != "") + { + console.log("calling lookup_enqueue"); lookup_enqueue(text, event.clientX, event.clientY, event.pageX, event.pageY); + } else { // console.log("no text"); @@ -802,7 +816,17 @@ function update(event) } } +function update_touch(event) +{ + console.log("touch event triggered"); + if(event.touches) + { + console.log("receiving touch event"); + update(event.touches[0]); + } +} + window.addEventListener("mousemove", update); -window.addEventListener("touchmove", update); +document.addEventListener("touchmove", update_touch);