Overview
| Comment: | [tb][fx] adjustement for Mail Extension: no event for input -> no autorefresh |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | tb | fx | mailext |
| Files: | files | file ages | folders |
| SHA3-256: |
081fa7f8ca8323505c38f85c5fe39520 |
| User & Date: | olr on 2020-07-08 17:26:07 |
| Other Links: | branch diff | manifest | tags |
Context
|
2020-07-09
| ||
| 13:07 | [tb][fx] adapt conjugueur to MailExtension -> no input allowed in compose scripts check-in: 53f7b50983 user: olr tags: tb, fx, mailext | |
|
2020-07-08
| ||
| 17:26 | [tb][fx] adjustement for Mail Extension: no event for input -> no autorefresh check-in: 081fa7f8ca user: olr tags: tb, fx, mailext | |
| 11:07 | [tb][fx] fix recursive function check-in: e4ff01c69e user: olr tags: tb, fx, mailext | |
Changes
Modified gc_lang/fr/webext/content_scripts/editor.js from [c240d85760] to [4bcac7be9b].
| ︙ | ︙ | |||
14 15 16 17 18 19 20 |
constructor (xDocument, bCheckSignature=false) {
this.xDocument = xDocument;
this.xRootNode = xDocument.body;
//console.log(xDocument.body);
//console.log(xDocument.body.innerHTML);
this.lNode = [];
this.bCheckSignature = bCheckSignature;
| | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
constructor (xDocument, bCheckSignature=false) {
this.xDocument = xDocument;
this.xRootNode = xDocument.body;
//console.log(xDocument.body);
//console.log(xDocument.body.innerHTML);
this.lNode = [];
this.bCheckSignature = bCheckSignature;
this._lParsableNodes = ["P", "LI", "H1", "H2", "H3", "H4", "H5", "H6"];
this._lRootNodes = ["DIV", "UL", "OL"];
}
* _getParsableNodes (xRootNode) {
// recursive function
try {
for (let xNode of xRootNode.childNodes) {
|
| ︙ | ︙ | |||
83 84 85 86 87 88 89 |
catch (e) {
showError(e);
}
}
setParagraph (iPara, sText) {
try {
| | | 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
catch (e) {
showError(e);
}
}
setParagraph (iPara, sText) {
try {
return this.lNode[iPara].textContent = oGrammalecte.purgeText(sText);
}
catch (e) {
showError(e);
}
}
changeParagraph (iPara, sModif, iStart, iEnd) {
|
| ︙ | ︙ | |||
187 188 189 190 191 192 193 |
}
getText () {
return [...this.dParagraph.values()].join("\n").normalize("NFC");
}
setParagraph (iParagraph, sText) {
| | | 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
}
getText () {
return [...this.dParagraph.values()].join("\n").normalize("NFC");
}
setParagraph (iParagraph, sText) {
this.dParagraph.set(iParagraph, oGrammalecte.purgeText(sText));
this.write();
}
getParagraph (iParaNum) {
return this.dParagraph.get(iParaNum);
}
|
| ︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/init.js from [b5e2ece3a6] to [1238d56b74].
| ︙ | ︙ | |||
66 67 68 69 70 71 72 |
xObserver: null,
sExtensionUrl: null,
oOptions: null,
| | | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
xObserver: null,
sExtensionUrl: null,
oOptions: null,
bAutoRefresh: (bThunderbird) ? false : true,
listen: function () {
document.addEventListener("click", (xEvent) => {
//console.log("click", xEvent.target.id);
this.oPanelButton.examineNode(xEvent.target);
});
document.addEventListener("keyup", (xEvent) => {
|
| ︙ | ︙ | |||
141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
let sPageText = document.body.innerText;
let nPos = sPageText.indexOf("__grammalecte_panel__");
if (nPos >= 0) {
sPageText = sPageText.slice(0, nPos).normalize("NFC");
}
return sPageText;
},
createNode: function (sType, oAttr, oDataset=null) {
try {
let xNode = document.createElement(sType);
Object.assign(xNode, oAttr);
if (oDataset) {
Object.assign(xNode.dataset, oDataset);
| > > > > | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
let sPageText = document.body.innerText;
let nPos = sPageText.indexOf("__grammalecte_panel__");
if (nPos >= 0) {
sPageText = sPageText.slice(0, nPos).normalize("NFC");
}
return sPageText;
},
purgeText: function (sText) {
return sText.replace(/ /g, " ").replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&");
},
createNode: function (sType, oAttr, oDataset=null) {
try {
let xNode = document.createElement(sType);
Object.assign(xNode, oAttr);
if (oDataset) {
Object.assign(xNode.dataset, oDataset);
|
| ︙ | ︙ | |||
264 265 266 267 268 269 270 271 272 273 274 275 276 277 |
return { top: Math.round(top), left: Math.round(left), bottom: Math.round(bottom), right: Math.round(right) };
}
};
function autoRefreshOption (oSavedOptions=null) {
// auto recallable function
if (oSavedOptions === null) {
if (bChrome) {
browser.storage.local.get("autorefresh_option", autoRefreshOption);
return;
}
browser.storage.local.get("autorefresh_option").then(autoRefreshOption, showError);
}
| > > > | 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
return { top: Math.round(top), left: Math.round(left), bottom: Math.round(bottom), right: Math.round(right) };
}
};
function autoRefreshOption (oSavedOptions=null) {
// auto recallable function
if (bThunderbird) {
return;
}
if (oSavedOptions === null) {
if (bChrome) {
browser.storage.local.get("autorefresh_option", autoRefreshOption);
return;
}
browser.storage.local.get("autorefresh_option").then(autoRefreshOption, showError);
}
|
| ︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/panel_gc.js from [0389257f9b] to [b47d4ce959].
| ︙ | ︙ | |||
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
};
this.xEditorButton.onclick = () => {
if (!this.bWorking) {
this.showEditor();
}
};
this.xAutoRefresh.onclick = () => {
this.bAutoRefresh = !this.bAutoRefresh;
oGrammalecte.bAutoRefresh = this.bAutoRefresh;
browser.storage.local.set({"autorefresh_option": this.bAutoRefresh});
this.setAutoRefreshButton();
}
this.xLxgButton.onclick = () => {
if (!this.bWorking) {
| > > > > | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
};
this.xEditorButton.onclick = () => {
if (!this.bWorking) {
this.showEditor();
}
};
this.xAutoRefresh.onclick = () => {
if (bThunderbird) {
oGrammalecte.showMessage("À cause d’une limitation de Thunberbird, l’auto-rafraîchissement est indisponible. Si vous modifiez le texte dans ce panneau, cliquez sur le bouton ↻ pour relancer l’analyse grammaticale du paragraphe.")
return;
}
this.bAutoRefresh = !this.bAutoRefresh;
oGrammalecte.bAutoRefresh = this.bAutoRefresh;
browser.storage.local.set({"autorefresh_option": this.bAutoRefresh});
this.setAutoRefreshButton();
}
this.xLxgButton.onclick = () => {
if (!this.bWorking) {
|
| ︙ | ︙ | |||
236 237 238 239 240 241 242 |
if (this.bAutoRefresh) {
// timer for refreshing analysis
window.clearTimeout(parseInt(xParagraph.dataset.timer_id, 10));
xParagraph.dataset.timer_id = window.setTimeout(this.recheckParagraph.bind(this), 3000, oResult.iParaNum);
this.iLastEditedParagraph = oResult.iParaNum;
}
// write text
| | | 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
if (this.bAutoRefresh) {
// timer for refreshing analysis
window.clearTimeout(parseInt(xParagraph.dataset.timer_id, 10));
xParagraph.dataset.timer_id = window.setTimeout(this.recheckParagraph.bind(this), 3000, oResult.iParaNum);
this.iLastEditedParagraph = oResult.iParaNum;
}
// write text
this.oTextControl.setParagraph(parseInt(xEvent.target.dataset.para_num, 10), xEvent.target.textContent);
}.bind(this)
, true);
this._tagParagraph(xParagraph, oResult.sParagraph, oResult.iParaNum, oResult.aGrammErr, oResult.aSpellErr);
// creation
xNodeDiv.appendChild(xActionsBar);
xNodeDiv.appendChild(xParagraph);
this.xParagraphList.appendChild(xNodeDiv);
|
| ︙ | ︙ | |||
274 275 276 277 278 279 280 |
recheckParagraph (iParaNum) {
if (!this.bOpened) {
return;
}
let sParagraphId = "grammalecte_paragraph" + iParaNum;
let xParagraph = this.xParent.getElementById(sParagraphId);
this._blockParagraph(xParagraph);
| > > | > | 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 |
recheckParagraph (iParaNum) {
if (!this.bOpened) {
return;
}
let sParagraphId = "grammalecte_paragraph" + iParaNum;
let xParagraph = this.xParent.getElementById(sParagraphId);
this._blockParagraph(xParagraph);
if (bThunderbird) {
// WORKAROUND: input event isn’t triggered by key input, so as textContent isn’t up to date, we do it now
this.oTextControl.setParagraph(iParaNum, xParagraph.textContent);
}
let sText = this.oTextControl.getParagraph(iParaNum);
oGrammalecteBackgroundPort.parseAndSpellcheck1(sText, "__GrammalectePanel__", sParagraphId);
}
refreshParagraph (sParagraphId, oResult) {
// function called when results are sent by the Worker
if (!this.bOpened) {
|
| ︙ | ︙ | |||
405 406 407 408 409 410 411 |
let sErrorId = this.xParent.getElementById(sNodeSuggId).dataset.error_id;
//let sParaNum = sErrorId.slice(0, sErrorId.indexOf("-"));
let xNodeErr = this.xParent.getElementById("grammalecte_err" + sErrorId);
xNodeErr.textContent = this.xParent.getElementById(sNodeSuggId).textContent;
xNodeErr.className = "grammalecte_error_corrected";
xNodeErr.removeAttribute("style");
let iParaNum = parseInt(sErrorId.slice(0, sErrorId.indexOf("-")), 10);
| | | 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 |
let sErrorId = this.xParent.getElementById(sNodeSuggId).dataset.error_id;
//let sParaNum = sErrorId.slice(0, sErrorId.indexOf("-"));
let xNodeErr = this.xParent.getElementById("grammalecte_err" + sErrorId);
xNodeErr.textContent = this.xParent.getElementById(sNodeSuggId).textContent;
xNodeErr.className = "grammalecte_error_corrected";
xNodeErr.removeAttribute("style");
let iParaNum = parseInt(sErrorId.slice(0, sErrorId.indexOf("-")), 10);
this.oTextControl.setParagraph(iParaNum, this.xParent.getElementById("grammalecte_paragraph" + iParaNum).textContent);
this.oTooltip.hide();
this.recheckParagraph(iParaNum);
this.iLastEditedParagraph = iParaNum;
}
catch (e) {
showError(e);
}
|
| ︙ | ︙ | |||
429 430 431 432 433 434 435 |
this.oTooltip.hide();
}
catch (e) {
showError(e);
}
}
| < < < < | 436 437 438 439 440 441 442 443 444 445 446 447 448 449 |
this.oTooltip.hide();
}
catch (e) {
showError(e);
}
}
addSummary () {
// todo
}
addMessageToGCPanel (sMessage) {
let xNode = oGrammalecte.createNode("div", {className: "grammalecte_panel_flow_message", textContent: sMessage});
this.xParagraphList.appendChild(xNode);
|
| ︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/panel_tf.js from [e01fea3896] to [dd32e278d0].
| ︙ | ︙ | |||
73 74 75 76 77 78 79 |
xTypo.appendChild(this._createLigaturesSelection());
let xMisc = this._createFieldset("group_misc", true, "Divers");
xMisc.appendChild(this._createOrdinalOptions());
xMisc.appendChild(this._createBlockOption("o_etc", true, "Et cætera, etc."));
xMisc.appendChild(this._createBlockOption("o_missing_hyphens", true, "Traits d’union manquants"));
xMisc.appendChild(this._createBlockOption("o_ma_word", true, "Apostrophes manquantes"));
xMisc.appendChild(this._createSingleLetterOptions());
| < < < > > > > | > | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
xTypo.appendChild(this._createLigaturesSelection());
let xMisc = this._createFieldset("group_misc", true, "Divers");
xMisc.appendChild(this._createOrdinalOptions());
xMisc.appendChild(this._createBlockOption("o_etc", true, "Et cætera, etc."));
xMisc.appendChild(this._createBlockOption("o_missing_hyphens", true, "Traits d’union manquants"));
xMisc.appendChild(this._createBlockOption("o_ma_word", true, "Apostrophes manquantes"));
xMisc.appendChild(this._createSingleLetterOptions());
xColumn1.appendChild(xSSP);
xColumn1.appendChild(xSpace);
xColumn1.appendChild(xNBSP);
xColumn1.appendChild(xDelete);
xColumn2.appendChild(xTypo);
xColumn2.appendChild(xMisc);
if (!bThunderbird) {
let xStruct = this._createFieldset("group_struct", false, "Restructuration [!]");
xStruct.appendChild(this._createBlockOption("o_remove_hyphens_at_end_of_paragraphs", false, "Enlever césures en fin de ligne/paragraphe [!]"));
xStruct.appendChild(this._createBlockOption("o_merge_contiguous_paragraphs", false, "Fusionner les paragraphes contigus [!]"));
xColumn2.appendChild(xStruct);
}
xOptions.appendChild(xColumn1);
xOptions.appendChild(xColumn2);
// Actions
let xActions = oGrammalecte.createNode("div", {id: "grammalecte_tf_actions"});
let xDefaultButton = oGrammalecte.createNode("div", {id: "grammalecte_tf_reset", textContent: "Par défaut", className: "grammalecte_tf_button"});
xDefaultButton.addEventListener("click", () => { this.reset(); });
let xApplyButton = oGrammalecte.createNode("div", {id: "grammalecte_tf_apply", textContent: "Appliquer", className: "grammalecte_tf_button"});
|
| ︙ | ︙ |