WIP
This commit is contained in:
parent
e6ea1ddb15
commit
4a6055d781
@ -18,18 +18,20 @@
|
|||||||
|
|
||||||
|
|
||||||
function optionsToForm(opts) {
|
function optionsToForm(opts) {
|
||||||
|
$('#activateOnStartup').prop('checked', opts.activateOnStartup);
|
||||||
$('#enableAnkiConnect').prop('checked', opts.enableAnkiConnect);
|
$('#enableAnkiConnect').prop('checked', opts.enableAnkiConnect);
|
||||||
$('#selectMatchedText').prop('checked', opts.selectMatchedText);
|
$('#loadEnamDict').prop('checked', opts.loadEnamDict);
|
||||||
$('#loadOnStartup').prop('checked', opts.loadOnStartup);
|
|
||||||
$('#scanLength').val(opts.scanLength);
|
$('#scanLength').val(opts.scanLength);
|
||||||
|
$('#selectMatchedText').prop('checked', opts.selectMatchedText);
|
||||||
}
|
}
|
||||||
|
|
||||||
function formToOptions() {
|
function formToOptions() {
|
||||||
return sanitizeOptions({
|
return sanitizeOptions({
|
||||||
loadOnStartup: $('#loadOnStartup').prop('checked'),
|
activateOnStartup: $('#activateOnStartup').prop('checked'),
|
||||||
selectMatchedText: $('#selectMatchedText').prop('checked'),
|
|
||||||
enableAnkiConnect: $('#enableAnkiConnect').prop('checked'),
|
enableAnkiConnect: $('#enableAnkiConnect').prop('checked'),
|
||||||
scanLength: $('#scanLength').val()
|
loadEnamDict: $('#loadEnamDict').prop('checked'),
|
||||||
|
scanLength: $('#scanLength').val(),
|
||||||
|
selectMatchedText: $('#selectMatchedText').prop('checked')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,10 +19,11 @@
|
|||||||
|
|
||||||
function sanitizeOptions(options) {
|
function sanitizeOptions(options) {
|
||||||
const defaults = {
|
const defaults = {
|
||||||
loadOnStartup: false,
|
activateOnStartup: false,
|
||||||
selectMatchedText: true,
|
|
||||||
enableAnkiConnect: false,
|
enableAnkiConnect: false,
|
||||||
scanLength: 20
|
loadEnamDict: false,
|
||||||
|
scanLength: 20,
|
||||||
|
selectMatchedText: true
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const key in defaults) {
|
for (const key in defaults) {
|
||||||
|
@ -33,14 +33,19 @@ class Translator {
|
|||||||
this.deinflector = new Deinflector();
|
this.deinflector = new Deinflector();
|
||||||
}
|
}
|
||||||
|
|
||||||
loadData(callback) {
|
loadData({loadEnamDict=true}, callback) {
|
||||||
if (this.loaded) {
|
if (this.loaded) {
|
||||||
callback();
|
callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let files = ['rules', 'tags', 'edict', 'kanjidic'];
|
||||||
|
if (loadEnamDict) {
|
||||||
|
files = files.concat('enamdict');
|
||||||
|
}
|
||||||
|
|
||||||
const pendingLoads = [];
|
const pendingLoads = [];
|
||||||
for (const key of ['rules', 'tags', 'edict', 'enamdict', 'kanjidic']) {
|
for (const key of files) {
|
||||||
pendingLoads.push(key);
|
pendingLoads.push(key);
|
||||||
Translator.loadData(this.paths[key], (response) => {
|
Translator.loadData(this.paths[key], (response) => {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
@ -82,10 +87,12 @@ class Translator {
|
|||||||
return tags;
|
return tags;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (dfs !== null) {
|
if (dfs === null) {
|
||||||
for (const df of dfs) {
|
continue;
|
||||||
this.processTerm(groups, df.source, df.tags, df.rules, df.root);
|
}
|
||||||
}
|
|
||||||
|
for (const df of dfs) {
|
||||||
|
this.processTerm(groups, df.source, df.tags, df.rules, df.root);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +138,7 @@ class Translator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
findKanji(text) {
|
findKanji(text) {
|
||||||
let definitions = [];
|
let definitions = [];
|
||||||
const processed = {};
|
const processed = {};
|
||||||
|
|
||||||
for (const c of text) {
|
for (const c of text) {
|
||||||
|
@ -43,7 +43,7 @@ class Yomichan {
|
|||||||
chrome.runtime.onMessage.addListener(this.onMessage.bind(this));
|
chrome.runtime.onMessage.addListener(this.onMessage.bind(this));
|
||||||
chrome.browserAction.onClicked.addListener(this.onBrowserAction.bind(this));
|
chrome.browserAction.onClicked.addListener(this.onBrowserAction.bind(this));
|
||||||
|
|
||||||
if (this.options.loadOnStartup) {
|
if (this.options.activateOnStartup) {
|
||||||
this.setState('loading');
|
this.setState('loading');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -52,6 +52,7 @@ class Yomichan {
|
|||||||
onMessage(request, sender, callback) {
|
onMessage(request, sender, callback) {
|
||||||
const {action, params} = request, handlers = {
|
const {action, params} = request, handlers = {
|
||||||
canAddNotes: ({definitions, modes}) => this.ankiInvoke('canAddNotes', {definitions: definitions, modes: modes}, 'notes', callback),
|
canAddNotes: ({definitions, modes}) => this.ankiInvoke('canAddNotes', {definitions: definitions, modes: modes}, 'notes', callback),
|
||||||
|
addNote: ({definition, mode}) => this.ankiInvoke('addNote', {definition: definition, mode: mode}, null, callback),
|
||||||
findKanji: (text) => callback(this.translator.findKanji(text)),
|
findKanji: (text) => callback(this.translator.findKanji(text)),
|
||||||
findTerm: (text) => callback(this.translator.findTerm(text)),
|
findTerm: (text) => callback(this.translator.findTerm(text)),
|
||||||
getOptions: () => callback(this.options),
|
getOptions: () => callback(this.options),
|
||||||
@ -90,7 +91,10 @@ class Yomichan {
|
|||||||
break;
|
break;
|
||||||
case 'loading':
|
case 'loading':
|
||||||
chrome.browserAction.setBadgeText({text: '...'});
|
chrome.browserAction.setBadgeText({text: '...'});
|
||||||
this.translator.loadData(() => this.setState('enabled'));
|
this.translator.loadData(
|
||||||
|
{loadEnamDict: this.options.loadEnamDict},
|
||||||
|
() => this.setState('enabled')
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,15 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label><input type="checkbox" id="loadOnStartup"> Load on startup</label>
|
<label><input type="checkbox" id="activateOnStartup"> Activate on startup</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
|
<div class="checkbox">
|
||||||
|
<label><input type="checkbox" id="loadEnamDict"> Load <a href="http://www.edrdg.org/enamdict/enamdict_doc.html">ENAMDICT</a> (requires restart)</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -39,7 +47,7 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label><input type="checkbox" id="enableAnkiConnect" checked> Enable AnkiConnect</label>
|
<label><input type="checkbox" id="enableAnkiConnect" checked> Enable <a href="https://foosoft.net/projects/yomichan">AnkiConnect</a></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user