summaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2016-05-07 18:24:31 -0700
committerAlex Yatskov <alex@foosoft.net>2016-05-07 18:24:31 -0700
commit4a6055d781cd9bafb1887ef4e8ee26d3735ad405 (patch)
tree4a2e181de42c9e29df905eabba38beabe996c904 /ext/bg
parente6ea1ddb150bd97a427a9a3119de57bde88613fa (diff)
WIP
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/js/options-form.js12
-rw-r--r--ext/bg/js/options.js7
-rw-r--r--ext/bg/js/translator.js21
-rw-r--r--ext/bg/js/yomichan.js8
-rw-r--r--ext/bg/options.html12
5 files changed, 41 insertions, 19 deletions
diff --git a/ext/bg/js/options-form.js b/ext/bg/js/options-form.js
index eb9d2f53..422b9b4a 100644
--- a/ext/bg/js/options-form.js
+++ b/ext/bg/js/options-form.js
@@ -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')
});
}
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index c73bc4c0..639644f7 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -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) {
diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js
index 1a7b9bb4..30bc92c1 100644
--- a/ext/bg/js/translator.js
+++ b/ext/bg/js/translator.js
@@ -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) {
diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js
index abbcefe4..ca53ebf9 100644
--- a/ext/bg/js/yomichan.js
+++ b/ext/bg/js/yomichan.js
@@ -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;
}
diff --git a/ext/bg/options.html b/ext/bg/options.html
index a89a546d..29938fa5 100644
--- a/ext/bg/options.html
+++ b/ext/bg/options.html
@@ -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>