diff options
| author | Alex Yatskov <alex@foosoft.net> | 2016-05-07 18:24:31 -0700 | 
|---|---|---|
| committer | Alex Yatskov <alex@foosoft.net> | 2016-05-07 18:24:31 -0700 | 
| commit | 4a6055d781cd9bafb1887ef4e8ee26d3735ad405 (patch) | |
| tree | 4a2e181de42c9e29df905eabba38beabe996c904 | |
| parent | e6ea1ddb150bd97a427a9a3119de57bde88613fa (diff) | |
WIP
| -rw-r--r-- | ext/bg/js/options-form.js | 12 | ||||
| -rw-r--r-- | ext/bg/js/options.js | 7 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 21 | ||||
| -rw-r--r-- | ext/bg/js/yomichan.js | 8 | ||||
| -rw-r--r-- | ext/bg/options.html | 12 | 
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> |