Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -29,10 +29,11 @@ // data let _sAppContext = ""; // what software is running let _dOptions = null; +let _dOptionsColors = null; let _oSpellChecker = null; let _oTokenizer = null; let _aIgnoredRules = new Set(); @@ -48,20 +49,21 @@ version: "${version}", author: "${author}", //// Initialization - load: function (sContext="JavaScript", sPath="") { + load: function (sContext="JavaScript", sColorType="aRGB", sPath="") { try { if (typeof(require) !== 'undefined') { var spellchecker = require("resource://grammalecte/graphspell/spellchecker.js"); _oSpellChecker = new spellchecker.SpellChecker("${lang}", "", "${dic_main_filename_js}", "${dic_extended_filename_js}", "${dic_community_filename_js}", "${dic_personal_filename_js}"); } else { _oSpellChecker = new SpellChecker("${lang}", sPath, "${dic_main_filename_js}", "${dic_extended_filename_js}", "${dic_community_filename_js}", "${dic_personal_filename_js}"); } _sAppContext = sContext; _dOptions = gc_options.getOptions(sContext).gl_shallowCopy(); // duplication necessary, to be able to reset to default + _dOptionsColors = gc_options.getOptionsColors(sContext, sColorType); _oTokenizer = _oSpellChecker.getTokenizer(); _oSpellChecker.activateStorage(); } catch (e) { console.error(e); @@ -750,10 +752,11 @@ "nStart": nStart, "nEnd": nEnd, "sLineId": sLineId, "sRuleId": sRuleId, "sType": sOption || "notype", + "aColor": _dOptionsColors[sOption], "sMessage": sMessage, "aSuggestions": lSugg, "URL": sURL } if (bContext) { Index: gc_core/js/lang_core/gc_options.js ================================================================== --- gc_core/js/lang_core/gc_options.js +++ gc_core/js/lang_core/gc_options.js @@ -12,18 +12,17 @@ } return this.dOpt["JavaScript"]; }, getOptionsColors: function (sTheme="Default", sColorType="aRGB") { - let dOptColor = (this.dOptColor.hasOwnProperty()) ? this.dOptColor[sTheme] : this.dOptColor["Default"]; + let dOptColor = (this.dOptColor.hasOwnProperty(sTheme)) ? this.dOptColor[sTheme] : this.dOptColor["Default"]; let dColorType = (this.dColorType.hasOwnProperty(sColorType)) ? this.dColorType[sColorType] : this.dColorType["aRGB"]; let dColor = {}; try { - for (let [sOpt, sColor] of Object.entries(this.dOptColor)) { + for (let [sOpt, sColor] of Object.entries(dOptColor)) { dColor[sOpt] = dColorType[sColor]; } - console.log(dColor); return dColor; } catch (e) { console.error(e); return {} Index: gc_lang/fr/tb/content/overlay.css ================================================================== --- gc_lang/fr/tb/content/overlay.css +++ gc_lang/fr/tb/content/overlay.css @@ -136,60 +136,16 @@ .debug_info { color: hsl(0, 50%, 50%); font-style: italic; } - -/* elems */ .spell { background-color: hsl(0, 50%, 50%); color: hsl(0, 0%, 96%); border-radius: 3px; } -/* elems */ -.typo, .esp, .nbsp, .eif, .maj, .virg, .tu, .num, .unit, .nf, .liga, .mapos, .chim { - background-color: hsl(30, 70%, 50%); - color: hsl(30, 10%, 96%); - border-radius: 3px; -} - -/* elems */ -.apos { - background-color: hsl(40, 90%, 50%); - color: hsl(40, 10%, 96%); - border-radius: 3px; -} - -/* elems */ -.gn, .sgpl { - background-color: hsl(210, 50%, 50%); - color: hsl(210, 10%, 96%); - border-radius: 3px; -} - -/* elems */ -.conj, .infi, .imp, .inte, .ppas, .vmode { - background-color: hsl(300, 30%, 40%); - color: hsl(300, 10%, 96%); - border-radius: 3px; -} - -/* elems */ -.conf, .ocr { - background-color: hsl(270, 40%, 30%); - color: hsl(270, 10%, 96%); - border-radius: 3px; -} - -/* elems */ -.bs, .pleo, .neg, .redon1, .redon2, .mc, .date, .notype { - background-color: hsl(180, 50%, 40%); - color: hsl(180, 10%, 96%); - border-radius: 3px; -} - /* TB Next: fix dialogheaders */ dialogheader { Index: gc_lang/fr/tb/content/overlay.js ================================================================== --- gc_lang/fr/tb/content/overlay.js +++ gc_lang/fr/tb/content/overlay.js @@ -222,12 +222,13 @@ let nEnd = dErr["nEnd"]; if (nStart >= nEndLastErr) { xParagraphNode.appendChild(document.createTextNode(this._purgeTags(sParagraph.slice(nEndLastErr, nStart)))); let xNodeError = document.createElement("b"); if (dErr['sType'] !== 'WORD') { - xNodeError.setAttribute("class", "error " + dErr["sType"]); + xNodeError.setAttribute("class", "error"); xNodeError.textContent = oConverterToExponent.convert(nError.toString()) + sParagraph.slice(nStart, nEnd); + xNodeError.style.backgroundColor = dErr["aColor"]; xParagraphNode.appendChild(xNodeError); lNodeError.push(this._createNodeGCErrorDescription(xEditor, nError, dErr, iParagraph)); } else { xNodeError.setAttribute("class", "error spell"); Index: gc_lang/fr/tb/worker/gce_worker.js ================================================================== --- gc_lang/fr/tb/worker/gce_worker.js +++ gc_lang/fr/tb/worker/gce_worker.js @@ -61,11 +61,11 @@ helpers = require("resource://grammalecte/graphspell/helpers.js"); text = require("resource://grammalecte/text.js"); tkz = require("resource://grammalecte/graphspell/tokenizer.js"); //lxg = require("resource://grammalecte/fr/lexicographe.js"); oTokenizer = new tkz.Tokenizer("fr"); - gce.load(sContext); + gce.load(sContext, "sCSS"); oSpellChecker = gce.getSpellChecker(); if (sGCOptions !== "") { gce.setOptions(helpers.objectToMap(JSON.parse(sGCOptions))); } // we always retrieve options from the gce, for setOptions filters obsolete options Index: gc_lang/fr/webext/content_scripts/panel_gc.css ================================================================== --- gc_lang/fr/webext/content_scripts/panel_gc.css +++ gc_lang/fr/webext/content_scripts/panel_gc.css @@ -247,147 +247,5 @@ hyphens: none; } mark.grammalecte_error_ignored { background-color: hsla(30, 20%, 80%, 1); } - - -/* elems */ -mark.grammalecte_error_WORD { - /*border-bottom: 2px solid hsl(0, 10%, 30%);*/ - background-color: hsl(0, 50%, 50%); - color: hsl(0, 0%, 96%); - /*text-decoration: underline wavy hsl(0, 50%, 50%);*/ -} -mark.grammalecte_error_WORD:hover { - background-color: hsl(0, 60%, 40%); - color: hsl(0, 0%, 100%); - box-shadow: 0px 0px 0px 3px hsla(0, 50%, 50%, 0.2); -} - -/* elems */ -mark.grammalecte_error_typo, -mark.grammalecte_error_esp, -mark.grammalecte_error_nbsp, -mark.grammalecte_error_eif, -mark.grammalecte_error_maj, -mark.grammalecte_error_virg, -mark.grammalecte_error_tu, -mark.grammalecte_error_num, -mark.grammalecte_error_unit, -mark.grammalecte_error_nf, -mark.grammalecte_error_liga, -mark.grammalecte_error_mapos, -mark.grammalecte_error_chim { - background-color: hsl(30, 70%, 50%); - color: hsl(30, 10%, 96%); - /*text-decoration: underline wavy hsl(30, 70%, 50%);*/ -} - -mark.grammalecte_error_typo:hover, -mark.grammalecte_error_esp:hover, -mark.grammalecte_error_nbsp:hover, -mark.grammalecte_error_eif:hover, -mark.grammalecte_error_maj:hover, -mark.grammalecte_error_virg:hover, -mark.grammalecte_error_tu:hover, -mark.grammalecte_error_num:hover, -mark.grammalecte_error_unit:hover, -mark.grammalecte_error_nf:hover, -mark.grammalecte_error_liga:hover, -mark.grammalecte_error_mapos:hover, -mark.grammalecte_error_chim:hover { - background-color: hsl(30, 80%, 45%); - color: hsl(30, 10%, 96%); - box-shadow: 0px 0px 0px 3px hsla(30, 50%, 50%, 0.2); -} - -/* elems */ -mark.grammalecte_error_apos { - background-color: hsl(40, 90%, 50%); - color: hsl(40, 10%, 96%); - /*text-decoration: underline wavy hsl(40, 70%, 45%);*/ -} -mark.grammalecte_error_apos:hover { - background-color: hsl(40, 100%, 45%); - color: hsl(40, 10%, 96%); - box-shadow: 0px 0px 0px 3px hsla(40, 50%, 50%, 0.2); -} - -/* elems */ -mark.grammalecte_error_gn, -mark.grammalecte_error_sgpl { - background-color: hsl(210, 50%, 50%); - color: hsl(210, 10%, 96%); - /*text-decoration: underline wavy hsl(210, 50%, 50%);*/ -} -mark.grammalecte_error_gn:hover, -mark.grammalecte_error_sgpl:hover { - background-color: hsl(210, 60%, 40%); - color: hsl(210, 10%, 96%); - box-shadow: 0px 0px 0px 3px hsla(210, 50%, 50%, 0.2); -} - -/* elems */ -mark.grammalecte_error_conj, -mark.grammalecte_error_infi, -mark.grammalecte_error_imp, -mark.grammalecte_error_inte, -mark.grammalecte_error_ppas, -mark.grammalecte_error_vmode { - background-color: hsl(300, 30%, 40%); - color: hsl(300, 10%, 96%); - /*text-decoration: underline wavy hsl(300, 40%, 40%);*/ -} - -mark.grammalecte_error_conj:hover, -mark.grammalecte_error_infi:hover, -mark.grammalecte_error_imp:hover, -mark.grammalecte_error_inte:hover, -mark.grammalecte_error_ppas:hover, -mark.grammalecte_error_vmode:hover { - background-color: hsl(300, 40%, 30%); - color: hsl(300, 10%, 96%); - box-shadow: 0px 0px 0px 3px hsla(300, 50%, 50%, 0.2); -} - -/* elems */ -mark.grammalecte_error_conf, -mark.grammalecte_error_ocr { - background-color: hsl(270, 40%, 30%); - color: hsl(270, 10%, 96%); - /*text-decoration: underline wavy hsl(270, 40%, 30%);*/ -} - -mark.grammalecte_error_conf:hover, -mark.grammalecte_error_ocr:hover { - background-color: hsl(270, 50%, 20%); - color: hsl(270, 10%, 96%); - box-shadow: 0px 0px 0px 3px hsla(270, 50%, 50%, 0.2); -} - -/* elems */ -mark.grammalecte_error_bs, -mark.grammalecte_error_pleo, -mark.grammalecte_error_neg, -mark.grammalecte_error_redon1, -mark.grammalecte_error_redon2, -mark.grammalecte_error_mc, -mark.grammalecte_error_date, -mark.grammalecte_error_notype { - background-color: hsl(180, 50%, 40%); - color: hsl(180, 10%, 96%); - /*text-decoration: underline wavy hsl(180, 50%, 40%);*/ -} - -mark.grammalecte_error_bs:hover, -mark.grammalecte_error_pleo:hover, -mark.grammalecte_error_neg:hover, -mark.grammalecte_error_redon1:hover, -mark.grammalecte_error_redon2:hover, -mark.grammalecte_error_mc:hover, -mark.grammalecte_error_date:hover, -mark.grammalecte_error_notype:hover { - background-color: hsl(180, 60%, 30%); - color: hsl(180, 10%, 96%); - box-shadow: 0px 0px 0px 3px hsla(180, 50%, 50%, 0.2); -} Index: gc_lang/fr/webext/content_scripts/panel_gc.js ================================================================== --- gc_lang/fr/webext/content_scripts/panel_gc.js +++ gc_lang/fr/webext/content_scripts/panel_gc.js @@ -186,11 +186,12 @@ xNodeErr.dataset.line_id = oErr['sLineId']; xNodeErr.dataset.rule_id = oErr['sRuleId']; } xNodeErr.dataset.suggestions = oErr["aSuggestions"].join("|"); } - xNodeErr.className = (this.aIgnoredErrors.has(xNodeErr.dataset.ignored_key)) ? "grammalecte_error_ignored" : "grammalecte_error grammalecte_error_" + oErr['sType']; + xNodeErr.className = (this.aIgnoredErrors.has(xNodeErr.dataset.ignored_key)) ? "grammalecte_error_ignored" : "grammalecte_error"; + xNodeErr.style.backgroundColor = (oErr['sType'] === "WORD") ? "hsl(0, 50%, 50%)" : oErr["aColor"]; return xNodeErr; } blockParagraph (xParagraph) { xParagraph.contentEditable = "false"; Index: gc_lang/fr/webext/gce_worker.js ================================================================== --- gc_lang/fr/webext/gce_worker.js +++ gc_lang/fr/webext/gce_worker.js @@ -166,11 +166,11 @@ //console.log("[Worker] Loading… Extension path: " + sExtensionPath); conj.init(helpers.loadFile(sExtensionPath + "/grammalecte/fr/conj_data.json")); phonet.init(helpers.loadFile(sExtensionPath + "/grammalecte/fr/phonet_data.json")); mfsp.init(helpers.loadFile(sExtensionPath + "/grammalecte/fr/mfsp_data.json")); //console.log("[Worker] Modules have been initialized…"); - gc_engine.load(sContext, sExtensionPath+"grammalecte/graphspell/_dictionaries"); + gc_engine.load(sContext, "sCSS", sExtensionPath+"grammalecte/graphspell/_dictionaries"); oSpellChecker = gc_engine.getSpellChecker(); oTest = new TestGrammarChecking(gc_engine, sExtensionPath+"/grammalecte/fr/tests_data.json"); oTokenizer = new Tokenizer("fr"); oLocution = helpers.loadFile(sExtensionPath + "/grammalecte/fr/locutions_data.json"); oLxg = new Lexicographe(oSpellChecker, oTokenizer, oLocution);