add some more reader options
This commit is contained in:
1 parent
5793cdc591
commit
dc42b59f62
4 files changed
+77
-13
No files matched your search
@@ -1697,6 +1697,14 @@ browser.runtime.onMessage.addListener((req, sender) =>
|
|||||||
{
|
{
|
||||||
refresh_json();
|
refresh_json();
|
||||||
}
|
}
|
||||||
|
else if (req.type == "reader_lookup")
|
||||||
|
{
|
||||||
|
browser.tabs.sendMessage(req.id, {type:req.type, x:req.x, y:req.y, text:req.text});
|
||||||
|
}
|
||||||
|
else if (req.type == "reader_mode")
|
||||||
|
{
|
||||||
|
browser.tabs.sendMessage(req.id, {type:req.type});
|
||||||
|
}
|
||||||
else if (req.type == "ankiconnect_mine")
|
else if (req.type == "ankiconnect_mine")
|
||||||
{
|
{
|
||||||
console.log("got request");
|
console.log("got request");
|
||||||
|
|||||||
+18
-6
@@ -364,12 +364,6 @@ function defaults()
|
|||||||
default: 300,
|
default: 300,
|
||||||
label: "Reader window default height"
|
label: "Reader window default height"
|
||||||
});
|
});
|
||||||
settings.push({
|
|
||||||
id: "reader_reverse",
|
|
||||||
kind: "checkbox",
|
|
||||||
default: false,
|
|
||||||
label: "Reader insert at bottom"
|
|
||||||
});
|
|
||||||
settings.push({
|
settings.push({
|
||||||
id: "reader_leeway",
|
id: "reader_leeway",
|
||||||
kind: "number",
|
kind: "number",
|
||||||
@@ -379,6 +373,24 @@ function defaults()
|
|||||||
default: 200,
|
default: 200,
|
||||||
label: "Reader autoscroll leeway (when \"insert at bottom\" is enabled) (0 disables)"
|
label: "Reader autoscroll leeway (when \"insert at bottom\" is enabled) (0 disables)"
|
||||||
});
|
});
|
||||||
|
settings.push({
|
||||||
|
id: "reader_sticky",
|
||||||
|
kind: "checkbox",
|
||||||
|
default: false,
|
||||||
|
label: "Force 'sticky' mode in reader"
|
||||||
|
});
|
||||||
|
settings.push({
|
||||||
|
id: "reader_auto",
|
||||||
|
kind: "checkbox",
|
||||||
|
default: false,
|
||||||
|
label: "Automatically look up the beginning of new text in the reader"
|
||||||
|
});
|
||||||
|
settings.push({
|
||||||
|
id: "reader_reverse",
|
||||||
|
kind: "checkbox",
|
||||||
|
default: false,
|
||||||
|
label: "Reader insert at bottom"
|
||||||
|
});
|
||||||
|
|
||||||
settings.push({
|
settings.push({
|
||||||
id: "reader_bg",
|
id: "reader_bg",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ reader_right_padding: "0px",
|
|||||||
reader_max_width: "1000px",
|
reader_max_width: "1000px",
|
||||||
reader_margin: "8px",
|
reader_margin: "8px",
|
||||||
reader_font: "",
|
reader_font: "",
|
||||||
|
reader_auto: false
|
||||||
};
|
};
|
||||||
|
|
||||||
function update_styles()
|
function update_styles()
|
||||||
@@ -49,6 +50,7 @@ async function reader_settings_init()
|
|||||||
getvar("reader_max_width", "1000px");
|
getvar("reader_max_width", "1000px");
|
||||||
getvar("reader_margin", "8px");
|
getvar("reader_margin", "8px");
|
||||||
getvar("reader_font", "");
|
getvar("reader_font", "");
|
||||||
|
getvar("reader_auto", false);
|
||||||
} catch(err) {} // options not stored yet
|
} catch(err) {} // options not stored yet
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,6 +104,25 @@ function reader_update(text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById("linecount").innerText = parseInt(document.getElementById("linecount").innerText)+1;
|
document.getElementById("linecount").innerText = parseInt(document.getElementById("linecount").innerText)+1;
|
||||||
|
|
||||||
|
let x = newnode.getBoundingClientRect().x - document.documentElement.getBoundingClientRect().x;
|
||||||
|
let y = newnode.getBoundingClientRect().y - document.documentElement.getBoundingClientRect().y;
|
||||||
|
y += Math.min(5, newnode.getBoundingClientRect().height/2);
|
||||||
|
|
||||||
|
if(reader_settings.reader_auto)
|
||||||
|
send_lookup_request(x, y, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function send_lookup_request(x, y, text)
|
||||||
|
{
|
||||||
|
let id = (await browser.tabs.getCurrent()).id;
|
||||||
|
browser.runtime.sendMessage({id:id, type:"reader_lookup", x:x, y:y, text:text});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function send_reader_mode(x, y, text)
|
||||||
|
{
|
||||||
|
let id = (await browser.tabs.getCurrent()).id;
|
||||||
|
browser.runtime.sendMessage({id:id, type:"reader_mode"});
|
||||||
}
|
}
|
||||||
|
|
||||||
let reader_text_previous = "";
|
let reader_text_previous = "";
|
||||||
@@ -141,4 +162,8 @@ browser.runtime.onMessage.addListener((req, sender) =>
|
|||||||
return Promise.resolve(undefined);
|
return Promise.resolve(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
window.onload = update_styles;
|
window.onload = () =>
|
||||||
|
{
|
||||||
|
send_reader_mode();
|
||||||
|
update_styles();
|
||||||
|
}
|
||||||
+25
-6
@@ -17,6 +17,7 @@ disableborder: false,
|
|||||||
space_saver: false,
|
space_saver: false,
|
||||||
hide_deconj: false,
|
hide_deconj: false,
|
||||||
showoriginal: true,
|
showoriginal: true,
|
||||||
|
reader_sticky: false,
|
||||||
definitions_mode: 0,
|
definitions_mode: 0,
|
||||||
normal_definitions_in_mining: false,
|
normal_definitions_in_mining: false,
|
||||||
alternatives_mode: 3, // 0: longest only; 1: longest and shortest; 2: longest and second longest; 3: all matches
|
alternatives_mode: 3, // 0: longest only; 1: longest and shortest; 2: longest and second longest; 3: all matches
|
||||||
@@ -60,6 +61,7 @@ only_selection: false
|
|||||||
};
|
};
|
||||||
|
|
||||||
let platform = "win";
|
let platform = "win";
|
||||||
|
let is_reader = false;
|
||||||
|
|
||||||
async function get_real_platform()
|
async function get_real_platform()
|
||||||
{
|
{
|
||||||
@@ -184,6 +186,11 @@ function getViewportSize(mydoc)
|
|||||||
return { w: mydoc.body.clientWidth, h: mydoc.body.clientHeight };
|
return { w: mydoc.body.clientWidth, h: mydoc.body.clientHeight };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function is_sticky()
|
||||||
|
{
|
||||||
|
return (settings.sticky && platform != "android" && !mining_ui_exists()) || (is_reader && settings.reader_sticky);
|
||||||
|
}
|
||||||
|
|
||||||
// here we set all the styling and positioning of the div, passing "middle" as the actual contents of it.
|
// here we set all the styling and positioning of the div, passing "middle" as the actual contents of it.
|
||||||
// this is rather elaborate because of 1) a lack of shadow DOM, even for just styling 2) options 3) """features""" of how HTML viewport stuff works that are actually terrible
|
// this is rather elaborate because of 1) a lack of shadow DOM, even for just styling 2) options 3) """features""" of how HTML viewport stuff works that are actually terrible
|
||||||
let last_display_x = 0;
|
let last_display_x = 0;
|
||||||
@@ -295,7 +302,7 @@ function display_div(middle, x, y)
|
|||||||
|
|
||||||
let corner = settings.corner;
|
let corner = settings.corner;
|
||||||
|
|
||||||
if(settings.sticky && platform != "android" && !mining_ui_exists())
|
if(is_sticky())
|
||||||
set_sticky_styles(outer);
|
set_sticky_styles(outer);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -600,7 +607,7 @@ function build_div_inner(text, result, moreText, index, first_of_many = false)
|
|||||||
original.appendChild(original_inner);
|
original.appendChild(original_inner);
|
||||||
original.appendChild(document.createTextNode(moreText_end));
|
original.appendChild(document.createTextNode(moreText_end));
|
||||||
|
|
||||||
if(first_of_many && (platform == "android" || (settings.sticky && !mining_ui_exists())))
|
if(first_of_many && is_sticky())
|
||||||
{
|
{
|
||||||
let buttons = document.createElement("div");
|
let buttons = document.createElement("div");
|
||||||
let left_arrow = document.createElement("img");
|
let left_arrow = document.createElement("img");
|
||||||
@@ -1205,6 +1212,7 @@ async function settings_init()
|
|||||||
getvar("space_saver", false);
|
getvar("space_saver", false);
|
||||||
getvar("hide_deconj", false);
|
getvar("hide_deconj", false);
|
||||||
getvar("showoriginal", true);
|
getvar("showoriginal", true);
|
||||||
|
getvar("reader_sticky", false);
|
||||||
|
|
||||||
getvar("bgcolor", "#111111");
|
getvar("bgcolor", "#111111");
|
||||||
getvar("fgcolor", "#CCCCCC");
|
getvar("fgcolor", "#CCCCCC");
|
||||||
@@ -1344,7 +1352,7 @@ function lookup_enqueue(text, x, y, x2, y2, moreText, index)
|
|||||||
|
|
||||||
function lookup_cancel()
|
function lookup_cancel()
|
||||||
{
|
{
|
||||||
if(!settings.sticky || mining_ui_exists() || platform == "android")
|
if(!is_sticky())
|
||||||
delete_div();
|
delete_div();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1713,7 +1721,7 @@ function update(event)
|
|||||||
|
|
||||||
if(!settings.enabled) return;
|
if(!settings.enabled) return;
|
||||||
|
|
||||||
if(settings.popup_follows_mouse && exists_div() && platform != "android" && (!settings.sticky || mining_ui_exists()))
|
if(settings.popup_follows_mouse && exists_div() && !is_sticky())
|
||||||
{
|
{
|
||||||
let other = get_div();
|
let other = get_div();
|
||||||
//let middle = other.firstChild.cloneNode(true);
|
//let middle = other.firstChild.cloneNode(true);
|
||||||
@@ -1787,7 +1795,7 @@ function update(event)
|
|||||||
hitrect = range.getBoundingClientRect();
|
hitrect = range.getBoundingClientRect();
|
||||||
}
|
}
|
||||||
// sticky mode and android need to break out on parent detection
|
// sticky mode and android need to break out on parent detection
|
||||||
if(ele && !ele.contains(textNode) && platform != "android" && (!settings.sticky || mining_ui_exists()))
|
if(ele && !ele.contains(textNode) && is_sticky())
|
||||||
{
|
{
|
||||||
textNode = undefined;
|
textNode = undefined;
|
||||||
offset = undefined;
|
offset = undefined;
|
||||||
@@ -1808,7 +1816,7 @@ function update(event)
|
|||||||
hitpage(event.clientX, 0, event.clientY);
|
hitpage(event.clientX, 0, event.clientY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((platform == "android" || (settings.sticky && !mining_ui_exists())) && exists_div())
|
if (exists_div() && is_sticky())
|
||||||
{
|
{
|
||||||
let ele = get_div();
|
let ele = get_div();
|
||||||
if(ele.contains(textNode))
|
if(ele.contains(textNode))
|
||||||
@@ -2277,6 +2285,17 @@ function keyuntest(event)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
browser.runtime.onMessage.addListener((req, sender) =>
|
||||||
|
{
|
||||||
|
if(req.type == "reader_lookup")
|
||||||
|
send_lookup([req.text, req.x, req.y, req.x, req.y, req.text, 0]);
|
||||||
|
else if(req.type == "reader_mode")
|
||||||
|
{
|
||||||
|
console.log("we a readuh!");
|
||||||
|
is_reader = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
window.addEventListener("mousemove", update);
|
window.addEventListener("mousemove", update);
|
||||||
window.addEventListener("keydown", keytest);
|
window.addEventListener("keydown", keytest);
|
||||||
window.addEventListener("keyup", keyuntest);
|
window.addEventListener("keyup", keyuntest);
|
||||||
|
|||||||
Reference in new issue
Block a user