Index: gc_lang/fr/build.py
==================================================================
--- gc_lang/fr/build.py
+++ gc_lang/fr/build.py
@@ -31,11 +31,11 @@
sLang = dVars['sDefaultUILang']
for sSection, lOpt in dVars['lStructOpt']:
sHTML += f'\n
\n
{dVars["dOptLabel"][sLang][sSection][0]}
\n'
for lLineOpt in lOpt:
for sOpt in lLineOpt:
- sHTML += f'
\n'
+ sHTML += f'
\n'
sHTML += '
\n'
return sHTML
def createFirefoxExtension (sLang, dVars):
Index: gc_lang/fr/webext/background.js
==================================================================
--- gc_lang/fr/webext/background.js
+++ gc_lang/fr/webext/background.js
@@ -15,34 +15,35 @@
// https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent
try {
let {sActionDone, result, dInfo} = e.data;
switch (sActionDone) {
case "init":
+ browser.storage.local.set({"gc_options": result});
break;
case "parse":
case "parseAndSpellcheck":
case "parseAndSpellcheck1":
case "getListOfTokens":
+ // send result to content script
if (typeof(dInfo.iReturnPort) === "number") {
let xPort = dConnx.get(dInfo.iReturnPort);
xPort.postMessage(e.data);
} else {
console.log("[background] don’t know where to send results");
console.log(e.data);
}
break;
case "textToTest":
- browser.runtime.sendMessage({sCommand: "text_to_test_result", sResult: result});
- break;
case "fullTests":
- browser.runtime.sendMessage({sCommand: "fulltests_result", sResult: result});
- break;
case "getOptions":
case "getDefaultOptions":
+ // send result to panel
+ browser.runtime.sendMessage(e.data);
+ break;
case "setOptions":
case "setOption":
- console.log("OPTIONS");
+ browser.storage.local.set({"gc_options": result});
break;
default:
console.log("Unknown command: " + sActionDone);
console.log(result);
}
@@ -51,11 +52,33 @@
showError(e);
}
};
-xGCEWorker.postMessage({sCommand: "init", dParam: {sExtensionPath: browser.extension.getURL("."), sOptions: "", sContext: "Firefox"}, dInfo: {}});
+function init () {
+ let xPromise = browser.storage.local.get("gc_options");
+ xPromise.then(
+ function (dSavedOptions) {
+ let dOptions = (dSavedOptions.hasOwnProperty("gc_options")) ? dSavedOptions.gc_options : null;
+ xGCEWorker.postMessage({
+ sCommand: "init",
+ dParam: {sExtensionPath: browser.extension.getURL("."), dOptions: dOptions, sContext: "Firefox"},
+ dInfo: {}
+ });
+ },
+ function (e) {
+ showError(e);
+ xGCEWorker.postMessage({
+ sCommand: "init",
+ dParam: {sExtensionPath: browser.extension.getURL("."), dOptions: null, sContext: "Firefox"},
+ dInfo: {}
+ });
+ }
+ );
+}
+
+init();
/*
Ports from content-scripts
*/
Index: gc_lang/fr/webext/gce_worker.js
==================================================================
--- gc_lang/fr/webext/gce_worker.js
+++ gc_lang/fr/webext/gce_worker.js
@@ -145,11 +145,11 @@
The answer is received by the background in another function (onmessage).
That’s why the full text to analyze is send in one block, but analyse is returned paragraph
by paragraph.
*/
-function init (sExtensionPath, sGCOptions="", sContext="JavaScript", dInfo={}) {
+function init (sExtensionPath, dOptions=null, sContext="JavaScript", dInfo={}) {
try {
if (!bInitDone) {
//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"));
@@ -157,21 +157,21 @@
//console.log("[Worker] Modules have been initialized…");
gc_engine.load(sContext, sExtensionPath+"grammalecte/_dictionaries");
oDict = gc_engine.getDictionary();
oTest = new TestGrammarChecking(gc_engine, sExtensionPath+"/grammalecte/fr/tests_data.json");
oLxg = new Lexicographe(oDict);
- if (sGCOptions !== "") {
- gc_engine.setOptions(helpers.objectToMap(JSON.parse(sGCOptions)));
+ if (dOptions !== null) {
+ gc_engine.setOptions(dOptions);
}
oTokenizer = new Tokenizer("fr");
//tests();
bInitDone = true;
} else {
console.log("[Worker] Already initialized…")
}
// we always retrieve options from the gc_engine, for setOptions filters obsolete options
- postMessage(createResponse("init", gc_engine.getOptions().gl_toString(), dInfo, true));
+ postMessage(createResponse("init", gc_engine.getOptions(), dInfo, true));
}
catch (e) {
helpers.logerror(e);
postMessage(createResponse("init", createErrorResult(e, "init failed"), dInfo, true, true));
}
@@ -202,30 +202,31 @@
let aSpellErr = oTokenizer.getSpellingErrors(sParagraph, oDict);
postMessage(createResponse("parseAndSpellcheck1", {sParagraph: sParagraph, aGrammErr: aGrammErr, aSpellErr: aSpellErr}, dInfo, true));
}
function getOptions (dInfo={}) {
- postMessage(createResponse("getOptions", gc_engine.getOptions().gl_toString(), dInfo, true));
+ postMessage(createResponse("getOptions", gc_engine.getOptions(), dInfo, true));
}
function getDefaultOptions (dInfo={}) {
- postMessage(createResponse("getDefaultOptions", gc_engine.getDefaultOptions().gl_toString(), dInfo, true));
+ postMessage(createResponse("getDefaultOptions", gc_engine.getDefaultOptions(), dInfo, true));
}
-function setOptions (sGCOptions, dInfo={}) {
- gc_engine.setOptions(helpers.objectToMap(JSON.parse(sGCOptions)));
- postMessage(createResponse("setOptions", gc_engine.getOptions().gl_toString(), dInfo, true));
+function setOptions (dOptions, dInfo={}) {
+ gc_engine.setOptions(dOptions);
+ postMessage(createResponse("setOptions", gc_engine.getOptions(), dInfo, true));
}
function setOption (sOptName, bValue, dInfo={}) {
+ console.log(sOptName+": "+bValue);
gc_engine.setOptions(new Map([ [sOptName, bValue] ]));
- postMessage(createResponse("setOption", gc_engine.getOptions().gl_toString(), dInfo, true));
+ postMessage(createResponse("setOption", gc_engine.getOptions(), dInfo, true));
}
function resetOptions (dInfo={}) {
gc_engine.resetOptions();
- postMessage(createResponse("resetOptions", gc_engine.getOptions().gl_toString(), dInfo, true));
+ postMessage(createResponse("resetOptions", gc_engine.getOptions(), dInfo, true));
}
function tests () {
console.log(conj.getConj("devenir", ":E", ":2s"));
console.log(mfsp.getMasForm("emmerdeuse", true));
Index: gc_lang/fr/webext/panel/main.js
==================================================================
--- gc_lang/fr/webext/panel/main.js
+++ gc_lang/fr/webext/panel/main.js
@@ -1,55 +1,44 @@
// Main panel
"use strict";
-/*
- Common functions
-*/
+
function showError (e) {
console.error(e.fileName + "\n" + e.name + "\nline: " + e.lineNumber + "\n" + e.message);
}
-function showPage (sPageName) {
- try {
- // hide them all
- for (let xNodePage of document.getElementsByClassName("page")) {
- xNodePage.style.display = "none";
- }
- // show the selected one
- document.getElementById(sPageName).style.display = "block";
- }
- catch (e) {
- showError(e);
- }
-}
-
-function startWaitIcon () {
- document.getElementById("waiticon").hidden = false;
-}
-
-function stopWaitIcon () {
- document.getElementById("waiticon").hidden = true;
-}
-
/*
Events
*/
window.addEventListener(
"click",
function (xEvent) {
let xElem = xEvent.target;
if (xElem.id) {
- switch (xElem.id) {
- case "text_to_test":
- browser.runtime.sendMessage({sCommand: "textToTest", dParam: {sText: document.getElementById("text_to_test").value, sCountry: "FR", bDebug: false, bContext: false}, dInfo: {}});
- break;
- case "fulltests":
- document.getElementById("tests_result").textContent = "Veuillez patienter…";
- browser.runtime.sendMessage({sCommand: "fullTests", dParam: {}, dInfo: {}});
- break;
+ if (xElem.id === "text_to_test") {
+ browser.runtime.sendMessage({
+ sCommand: "textToTest",
+ dParam: {sText: document.getElementById("text_to_test").value, sCountry: "FR", bDebug: false, bContext: false},
+ dInfo: {}
+ });
+ }
+ else if (xElem.id === "fulltests") {
+ document.getElementById("tests_result").textContent = "Veuillez patienter…";
+ browser.runtime.sendMessage({
+ sCommand: "fullTests",
+ dParam: {},
+ dInfo: {}
+ });
+ }
+ else if (xElem.id.startsWith("option_")) {
+ browser.runtime.sendMessage({
+ sCommand: "setOption",
+ dParam: {sOptName: xElem.dataset.option, bValue: xElem.checked},
+ dInfo: {}
+ });
}
} else if (xElem.className.startsWith("select")) {
showPage(xElem.dataset.page);
}/* else if (xElem.tagName === "A") {
openURL(xElem.getAttribute("href"));
@@ -81,32 +70,67 @@
/*
Messages received
*/
function handleMessage (oMessage, xSender, sendResponse) {
- switch(oMessage.sCommand) {
- case "text_to_test_result":
- showTestResult(oMessage.sResult);
- break;
- case "fulltests_result":
- showTestResult(oMessage.sResult);
- break;
- }
- sendResponse({sCommand: "none", sResult: "done"});
+ let {sActionDone, result, dInfo, bEnd, bError} = oMessage;
+ switch(sActionDone) {
+ case "textToTest":
+ case "fullTests":
+ showTestResult(result);
+ break;
+ case "getOptions":
+ case "getDefaultOptions":
+ break;
+ default:
+ console.log("GRAMMALECTE. Unknown command: " + oMessage.sCommand);
+ }
+ sendResponse({sCommand: "none", result: "done"});
}
browser.runtime.onMessage.addListener(handleMessage);
/*
-
- DEDICATED FUNCTIONS
-
+ Actions
*/
+function showPage (sPageName) {
+ try {
+ // hide them all
+ for (let xNodePage of document.getElementsByClassName("page")) {
+ xNodePage.style.display = "none";
+ }
+ // show the selected one
+ document.getElementById(sPageName).style.display = "block";
+ if (sPageName == "gc_options_page") {
+ setGCOptions();
+ }
+ }
+ catch (e) {
+ showError(e);
+ }
+}
-/*
- Test page
-*/
+
function showTestResult (sText) {
document.getElementById("tests_result").textContent = sText;
}
+
+function setGCOptions () {
+ let xPromise = browser.storage.local.get("gc_options");
+ xPromise.then(
+ function (dSavedOptions) {
+ console.log(dSavedOptions);
+ if (dSavedOptions.hasOwnProperty("gc_options")) {
+ for (let [sOpt, bVal] of dSavedOptions.gc_options) {
+ if (document.getElementById("option_"+sOpt)) {
+ document.getElementById("option_"+sOpt).checked = bVal;
+ }
+ }
+ }
+ },
+ function (e) {
+ showError(e);
+ }
+ );
+}