Settings, toggle button

This commit is contained in:
wareya committed 2017-12-09 19:42:11 -05:00
1 parent 35e520f40b
commit e3e5ffecc3
12 files changed
+179 -19

No files matched your search

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

+47 -6
View File
@@ -3,8 +3,8 @@
'use strict'; 'use strict';
// We use JMdict converted to JSON. It's like 32MB so we don't want to load it for every tab. // We use JMdict converted to JSON. It's like 32MB so we don't want to load it for every tab.
// So we need to use a backgroudn script and send messages to it from the content script. // So we need to use a background script and send messages to it from the content script.
// Unfortunately webextensions don't have an easy way to load files even from in extension. // Unfortunately webextensions don't have an easy way to load files, even from in the extension.
// We have to send an HTTP request and store the result in a string before parsing it into an object. // We have to send an HTTP request and store the result in a string before parsing it into an object.
// Seriously. // Seriously.
@@ -152,17 +152,58 @@ function search(text)
if(ret) return ret; if(ret) return ret;
} }
browser.runtime.onMessage.addListener((request, sender, sendResponse) => { browser.runtime.onMessage.addListener((request, sender, sendResponse) =>
{
if (request.type == 'search') if (request.type == 'search')
{ {
//console.log("running search");
sendResponse(search(request.text)); sendResponse(search(request.text));
} }
else else
{ {
//console.log("unhandled request");
//return;
return; return;
} }
}); });
async function update_icon(enabled)
{
if(enabled)
{
browser.browserAction.setIcon({path:{
"16": "enabled16.png",
"32": "enabled32.png",
"512": "enabled512.png"
}},)
}
else
{
browser.browserAction.setIcon({path:{
"16": "action16.png",
"32": "action32.png",
"512": "action512.png"
}},)
}
}
async function toggle_enabled()
{
let enabled = (await browser.storage.local.get("enabled")).enabled;
if(enabled == undefined)
enabled = false;
enabled = !enabled;
browser.storage.local.set({enabled: enabled});
update_icon(enabled);
}
async function init_icon()
{
browser.browserAction.onClicked.addListener(toggle_enabled);
let enabled = (await browser.storage.local.get("enabled")).enabled;
if(enabled == undefined)
enabled = false;
update_icon(enabled);
}
init_icon();
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+17 -1
View File
@@ -22,5 +22,21 @@
"js": ["texthook.js"], "js": ["texthook.js"],
"all_frames": true "all_frames": true
} }
] ],
"options_ui": {
"browser_style": true,
"page": "options.html"
},
"browser_action": {
"browser_style": false,
"default_icon": {
"16": "action16.png",
"32": "action32.png",
"512": "action512.png"
},
"default_title": "Nazeka (disabled)",
"default_area": "navbar"
}
} }
+23
View File
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Nazeka: options</title>
<script type="text/javascript" src="options.js"></script>
</head>
<body>
<div class=panel>
<form name=optform>
<div class="panel-section panel-section-formElements browser-style">
<!--<div class=panel-section>-->
<input id="enabled" type="checkbox" name=enabled class=panel-formElements-item/><label for=enabled class=panel-formElements-item>Enabled</label>
<!--</div>-->
<!--<div class=panel-section>-->
<input id="compact" type="checkbox" name=compact class=panel-formElements-item/><label for=compact class=panel-formElements-item>Compact</label>
<!--</div>-->
</div>
</form>
</div>
</body>
</html>
+49
View File
@@ -0,0 +1,49 @@
function restoreListeners()
{
document.querySelector("#enabled").addEventListener("change", setOptions);
document.querySelector("#compact").addEventListener("change", setOptions);
}
function removeListeners()
{
document.querySelector("#enabled").removeEventListener("change", setOptions);
document.querySelector("#compact").removeEventListener("change", setOptions);
}
async function restoreOptions()
{
restoreListeners();
try
{
let enabled = (await browser.storage.local.get("enabled")).enabled;
if(enabled == undefined)
enabled = false;
let compact = (await browser.storage.local.get("compact")).compact;
if(compact == undefined)
compact = true;
removeListeners();
document.querySelector("#enabled").checked = enabled?true:false;
document.querySelector("#compact").checked = compact?true:false;
restoreListeners();
}
catch (error){}
}
function setOptions()
{
browser.storage.local.set(
{
enabled: document.querySelector("#enabled").checked,
compact: document.querySelector("#compact").checked,
});
}
if (document.readyState == "complete")
{
restoreOptions();
//setOptions();
}
else
{
document.addEventListener("DOMContentLoaded", restoreOptions);
//document.addEventListener("DOMContentLoaded", setOptions);
}
+43 -12
View File
@@ -3,12 +3,11 @@
/* /*
* TODO: * TODO:
* *
* ! Toggle button
* ! Fix katakana-hiragana matching (only happens in lookups right now, not display generation)
* ! Port all of Spark Reader's deconjugation rules https://github.com/wareya/Spark-Reader/blob/master/preferences/underlay https://github.com/wareya/Spark-Reader/tree/master/src/language/deconjugator * ! Port all of Spark Reader's deconjugation rules https://github.com/wareya/Spark-Reader/blob/master/preferences/underlay https://github.com/wareya/Spark-Reader/tree/master/src/language/deconjugator
* ! Different CSS for different parts of definitions * ! Different CSS for different parts of definitions
* - Fix katakana-hiragana matching (only happens in lookups right now, not display generation)
* - Definition priority handling (prefer words with any commonness tags, shorter deconjugations, expressions, non-archaic/non-obscure words, high frequencies) * - Definition priority handling (prefer words with any commonness tags, shorter deconjugations, expressions, non-archaic/non-obscure words, high frequencies)
* - Settings * - More configurability
* - VNstats frequency data * - VNstats frequency data
* - Load deconjugation rules from an advanced setting, with a reset button * - Load deconjugation rules from an advanced setting, with a reset button
* - Work with text input fields * - Work with text input fields
@@ -26,7 +25,10 @@ function print_object(message)
console.log(message); console.log(message);
} }
let compact = true; let settings = {
enabled: false,
compact: true,
};
let last_time_display = Date.now(); let last_time_display = Date.now();
@@ -46,7 +48,7 @@ function delete_div ()
function display_div (middle, x, y, time) function display_div (middle, x, y, time)
{ {
middle.style = "background-color: #111; border-radius: 2.5px; border: 1px solid #111;"; middle.style = "background-color: #111; border-radius: 2.5px; border: 1px solid #111;";
middle.firstChild.style = "border: 1px solid white; border-radius: 2px; padding: 2px; background-color: #111; color: #CCC; font-family: Arial, sans-serif; font-size: 13px;"; middle.firstChild.style = "border: 1px solid white; border-radius: 2px; padding: 2px; background-color: #111; color: #CCC; font-family: Arial, sans-serif; font-size: 13px; text-align: left;";
let other = document.body.getElementsByClassName(div_class); let other = document.body.getElementsByClassName(div_class);
if(other.length > 0) if(other.length > 0)
@@ -318,13 +320,13 @@ function build_div (text, result)
parts.push(sense.pos[l]); parts.push(sense.pos[l]);
temptag += parts.join(", "); temptag += parts.join(", ");
temptag += ")</span>"; temptag += ")</span>";
if(compact) if(settings.compact)
temptag += " "; temptag += " ";
else else
temptag += "<br>"; temptag += "<br>";
temp.innerHTML += temptag; temp.innerHTML += temptag;
} }
if(compact) if(settings.compact)
{ {
if(goodsenses.length > 1) if(goodsenses.length > 1)
temp.innerHTML += " <span class=nazeka_num>(" + (j+1) + ")</span> "; temp.innerHTML += " <span class=nazeka_num>(" + (j+1) + ")</span> ";
@@ -347,7 +349,7 @@ function build_div (text, result)
temp.innerHTML += temptag; temp.innerHTML += temptag;
} }
temp.innerHTML += sense.gloss.join("; "); temp.innerHTML += sense.gloss.join("; ");
if(compact) if(settings.compact)
{ {
if(sense.gloss.length > 1 || j+1 != goodsenses.length) if(sense.gloss.length > 1 || j+1 != goodsenses.length)
temp.innerHTML += "; "; temp.innerHTML += "; ";
@@ -357,7 +359,7 @@ function build_div (text, result)
temp.innerHTML += "<br>"; temp.innerHTML += "<br>";
} }
} }
if(compact) if(settings.compact)
temp.innerHTML += "<br>"; temp.innerHTML += "<br>";
} }
middle.appendChild(temp); middle.appendChild(temp);
@@ -662,14 +664,43 @@ function lookup_cancel()
delete_div(); delete_div();
} }
let settings_reload_rate = 200;
let settings_reloader = undefined;
async function settings_reload()
{
try
{
settings.enabled = (await browser.storage.local.get("enabled")).enabled;
if(settings.enabled == undefined)
settings.enabled = false;
settings.compact = (await browser.storage.local.get("compact")).compact;
if(settings.compact == undefined)
settings.compact = true;
//console.log("set settings");
//console.log(settings.enabled);
//console.log(settings.compact);
}
catch(error)
{
console.log("failed to set settings, maybe not stored yet?");
} // not stored yet, probably
settings_reloader = setTimeout(settings_reload, settings_reload_rate);
}
settings_reloader = setTimeout(settings_reload, settings_reload_rate);
let max_search_len = 25; let max_search_len = 25;
let time_of_last = Date.now(); let time_of_last = Date.now();
let throttle = 8; let throttle = 8;
var seach_x_offset = -3; let seach_x_offset = -3;
window.addEventListener("mousemove", (event)=> window.addEventListener("mousemove", (event)=>
{ {
if(!settings.enabled) return;
if(Date.now() - time_of_last < throttle) if(Date.now() - time_of_last < throttle)
{ {
//console.log("too soon, returning"); //console.log("too soon, returning");
@@ -696,7 +727,7 @@ window.addEventListener("mousemove", (event)=>
} }
// try without the offset // try without the offset
if (textNode.nodeType != 3) if (textNode == undefined || textNode.nodeType != 3)
{ {
if (document.caretPositionFromPoint) if (document.caretPositionFromPoint)
{ {
@@ -712,7 +743,7 @@ window.addEventListener("mousemove", (event)=>
} }
} }
// if there was text, use it // if there was text, use it
if (textNode.nodeType == 3) if (textNode && textNode.nodeType == 3)
{ {
//print_object(textNode); //print_object(textNode);
//print_object(textNode.parentNode); //print_object(textNode.parentNode);