This commit is contained in:
Alex Yatskov 2016-05-07 18:24:31 -07:00
parent e6ea1ddb15
commit 4a6055d781
5 changed files with 41 additions and 19 deletions

View File

@ -18,18 +18,20 @@
function optionsToForm(opts) {
$('#activateOnStartup').prop('checked', opts.activateOnStartup);
$('#enableAnkiConnect').prop('checked', opts.enableAnkiConnect);
$('#selectMatchedText').prop('checked', opts.selectMatchedText);
$('#loadOnStartup').prop('checked', opts.loadOnStartup);
$('#loadEnamDict').prop('checked', opts.loadEnamDict);
$('#scanLength').val(opts.scanLength);
$('#selectMatchedText').prop('checked', opts.selectMatchedText);
}
function formToOptions() {
return sanitizeOptions({
loadOnStartup: $('#loadOnStartup').prop('checked'),
selectMatchedText: $('#selectMatchedText').prop('checked'),
activateOnStartup: $('#activateOnStartup').prop('checked'),
enableAnkiConnect: $('#enableAnkiConnect').prop('checked'),
scanLength: $('#scanLength').val()
loadEnamDict: $('#loadEnamDict').prop('checked'),
scanLength: $('#scanLength').val(),
selectMatchedText: $('#selectMatchedText').prop('checked')
});
}

View File

@ -19,10 +19,11 @@
function sanitizeOptions(options) {
const defaults = {
loadOnStartup: false,
selectMatchedText: true,
activateOnStartup: false,
enableAnkiConnect: false,
scanLength: 20
loadEnamDict: false,
scanLength: 20,
selectMatchedText: true
};
for (const key in defaults) {

View File

@ -33,14 +33,19 @@ class Translator {
this.deinflector = new Deinflector();
}
loadData(callback) {
loadData({loadEnamDict=true}, callback) {
if (this.loaded) {
callback();
return;
}
let files = ['rules', 'tags', 'edict', 'kanjidic'];
if (loadEnamDict) {
files = files.concat('enamdict');
}
const pendingLoads = [];
for (const key of ['rules', 'tags', 'edict', 'enamdict', 'kanjidic']) {
for (const key of files) {
pendingLoads.push(key);
Translator.loadData(this.paths[key], (response) => {
switch (key) {
@ -82,10 +87,12 @@ class Translator {
return tags;
});
if (dfs !== null) {
for (const df of dfs) {
this.processTerm(groups, df.source, df.tags, df.rules, df.root);
}
if (dfs === null) {
continue;
}
for (const df of dfs) {
this.processTerm(groups, df.source, df.tags, df.rules, df.root);
}
}
@ -131,7 +138,7 @@ class Translator {
}
findKanji(text) {
let definitions = [];
let definitions = [];
const processed = {};
for (const c of text) {

View File

@ -43,7 +43,7 @@ class Yomichan {
chrome.runtime.onMessage.addListener(this.onMessage.bind(this));
chrome.browserAction.onClicked.addListener(this.onBrowserAction.bind(this));
if (this.options.loadOnStartup) {
if (this.options.activateOnStartup) {
this.setState('loading');
}
});
@ -52,6 +52,7 @@ class Yomichan {
onMessage(request, sender, callback) {
const {action, params} = request, handlers = {
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)),
findTerm: (text) => callback(this.translator.findTerm(text)),
getOptions: () => callback(this.options),
@ -90,7 +91,10 @@ class Yomichan {
break;
case 'loading':
chrome.browserAction.setBadgeText({text: '...'});
this.translator.loadData(() => this.setState('enabled'));
this.translator.loadData(
{loadEnamDict: this.options.loadEnamDict},
() => this.setState('enabled')
);
break;
}

View File

@ -23,7 +23,15 @@
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<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>
@ -39,7 +47,7 @@
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<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>