Changes In Branch webext3 Through [c8cfdeca32] Excluding Merge-Ins
This is equivalent to a diff from 6ff5d2733a to c8cfdeca32
2017-10-11
| ||
09:10 | [fx] WebExt: store node on which a right click is made check-in: 4808b2cfbd user: olr tags: fx, webext3 | |
08:52 | [fx] WebExt: minor changes of main UI check-in: c8cfdeca32 user: olr tags: fx, webext3 | |
2017-10-10
| ||
15:51 | [fr] sécurisation d’une condition check-in: 79a81f04cf user: olr tags: trunk, fr | |
14:32 | [fx] WebExt: only one cycle of animation check-in: 377c798a39 user: olr tags: fx, webext3 | |
14:30 | merge trunk check-in: d25e2ed843 user: olr tags: webext3 | |
13:40 | [fr][js] suggestion des graphies similaires check-in: 6ff5d2733a user: olr tags: trunk, fr | |
13:09 | [fr] pt: faire illusion check-in: 9680cc2a5f user: olr tags: trunk, fr | |
Modified gc_lang/fr/webext/content_scripts/init.js from [6ea24993c1] to [3e98d11aad].
︙ | ︙ | |||
52 53 54 55 56 57 58 59 60 61 62 63 64 65 | for (let xNode of lNode) { if (xNode.style.display !== "none" && xNode.style.visibility !== "hidden") { this.lMenu.push(new GrammalecteMenu(this.nMenu, xNode)); this.nMenu += 1; } } }, rescanPage: function () { if (this.oTFPanel !== null) { this.oTFPanel.hide(); } if (this.oLxgPanel !== null) { this.oLxgPanel.hide(); } if (this.oGCPanel !== null) { this.oGCPanel.hide(); } for (let oMenu of this.lMenu) { oMenu.deleteNodes(); | > > > > > > > > | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | for (let xNode of lNode) { if (xNode.style.display !== "none" && xNode.style.visibility !== "hidden") { this.lMenu.push(new GrammalecteMenu(this.nMenu, xNode)); this.nMenu += 1; } } }, createMenus2 () { let lNode = document.querySelectorAll("[contenteditable]"); for (let xNode of lNode) { this.lMenu.push(new GrammalecteMenu(this.nMenu, xNode)); this.nMenu += 1; } }, rescanPage: function () { if (this.oTFPanel !== null) { this.oTFPanel.hide(); } if (this.oLxgPanel !== null) { this.oLxgPanel.hide(); } if (this.oGCPanel !== null) { this.oGCPanel.hide(); } for (let oMenu of this.lMenu) { oMenu.deleteNodes(); |
︙ | ︙ | |||
159 160 161 162 163 164 165 | }); /* Start */ oGrammalecte.createMenus(); | > | 167 168 169 170 171 172 173 174 | }); /* Start */ oGrammalecte.createMenus(); oGrammalecte.createMenus2(); |
Modified gc_lang/fr/webext/content_scripts/menu.css from [7a8360406b] to [9877954366].
︙ | ︙ | |||
16 17 18 19 20 21 22 | border-top: 4px solid hsla(210, 100%, 40%, .7); border-bottom: 4px solid hsla(210, 100%, 40%, .7); border-radius: 50%; text-align: center; cursor: pointer; box-shadow: 0 0 0 0 hsla(210, 50%, 50%, .5); z-index: 2147483640; /* maximum is 2147483647: https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index */ | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | border-top: 4px solid hsla(210, 100%, 40%, .7); border-bottom: 4px solid hsla(210, 100%, 40%, .7); border-radius: 50%; text-align: center; cursor: pointer; box-shadow: 0 0 0 0 hsla(210, 50%, 50%, .5); z-index: 2147483640; /* maximum is 2147483647: https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index */ animation: grammalecte-spin 2s ease 1; } .grammalecte_menu_main_button:hover { border: 4px solid hsla(210, 80%, 35%, .5); background-color: hsla(210, 80%, 55%, .5); animation: grammalecte-spin .5s linear infinite; } |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/menu.js from [2740b076e9] to [296905930b].
1 2 3 4 5 6 7 | // JavaScript "use strict"; class GrammalecteMenu { | | | | | | > > > | | | | | | | > > | | | > | | | | > | | | | < < < < < | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 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 99 100 101 | // JavaScript "use strict"; class GrammalecteMenu { constructor (nMenu, xNode) { this.sMenuId = "grammalecte_menu" + nMenu; this.xButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_main_button", textContent: " "}); this.xButton.onclick = () => { this.switchMenu(); }; this.xMenu = this._createMenu(xNode); this._insertAfter(this.xButton, xNode); this._insertAfter(this.xMenu, xNode); } _insertAfter (xNewNode, xReferenceNode) { xReferenceNode.parentNode.insertBefore(xNewNode, xReferenceNode.nextSibling); } _createMenu (xNode) { try { let sText = (xNode.tagName == "TEXTAREA") ? xNode.value : xNode.textContent; let xMenu = oGrammalecte.createNode("div", {id: this.sMenuId, className: "grammalecte_menu"}); xMenu.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_menu_header", textContent: "GRAMMALECTE"})); // Text formatter if (xNode.tagName == "TEXTAREA") { let xTFButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item", textContent: "Formateur de texte"}); xTFButton.onclick = () => { this.switchMenu(); oGrammalecte.createTFPanel(); oGrammalecte.oTFPanel.start(xNode); oGrammalecte.oTFPanel.show(); }; xMenu.appendChild(xTFButton); } // lexicographe let xLxgButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item", textContent: "Lexicographe"}); xLxgButton.onclick = () => { this.switchMenu(); oGrammalecte.createLxgPanel(); oGrammalecte.oLxgPanel.clear(); oGrammalecte.oLxgPanel.show(); oGrammalecte.oLxgPanel.startWaitIcon(); xGrammalectePort.postMessage({ sCommand: "getListOfTokens", dParam: {sText: sText}, dInfo: {sTextAreaId: xNode.id} }); }; xMenu.appendChild(xLxgButton); // Grammar checker let xGCButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item", textContent: "Correction grammaticale"}); xGCButton.onclick = () => { this.switchMenu(); oGrammalecte.createGCPanel(); oGrammalecte.oGCPanel.start(xNode); oGrammalecte.oGCPanel.show(); oGrammalecte.oGCPanel.startWaitIcon(); xGrammalectePort.postMessage({ sCommand: "parseAndSpellcheck", dParam: {sText: sText, sCountry: "FR", bDebug: false, bContext: false}, dInfo: {sTextAreaId: xNode.id} }); }; xMenu.appendChild(xGCButton); // Conjugation tool let xConjButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item_block", textContent: "Conjugueur"}); let xConjButtonTab = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "Onglet"}); xConjButtonTab.onclick = () => { this.switchMenu(); xGrammalectePort.postMessage({sCommand: "openConjugueurTab", dParam: null, dInfo: null}); }; let xConjButtonWin = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "Fenêtre"}); xConjButtonWin.onclick = () => { this.switchMenu(); xGrammalectePort.postMessage({sCommand: "openConjugueurWindow", dParam: null, dInfo: null}); }; xConjButton.appendChild(xConjButtonTab); xConjButton.appendChild(xConjButtonWin); xMenu.appendChild(xConjButton); //xMenu.appendChild(oGrammalecte.createNode("img", {scr: browser.extension.getURL("img/logo-16.png")})); // can’t work, due to content-script policy: https://bugzilla.mozilla.org/show_bug.cgi?id=1267027 xMenu.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_menu_footer"})); return xMenu; } catch (e) { showError(e); } } deleteNodes () { this.xMenu.parentNode.removeChild(this.xMenu); this.xButton.parentNode.removeChild(this.xButton); } switchMenu () { let xMenu = document.getElementById(this.sMenuId); xMenu.style.display = (xMenu.style.display == "block") ? "none" : "block"; } } |
Modified gc_lang/fr/webext/content_scripts/panel_gc.js from [f13377ba0e] to [b14363b80e].
︙ | ︙ | |||
51 52 53 54 55 56 57 | this.xContentNode.appendChild(this.xParagraphList); this.xPanelContent.addEventListener("click", onGrammalecteGCPanelClick, false); this.oTooltip = new GrammalecteTooltip(this.xContentNode); this.xPanelContent.appendChild(this.xContentNode); this.oTAC = new GrammalecteTextAreaControl(); } | | | | | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | this.xContentNode.appendChild(this.xParagraphList); this.xPanelContent.addEventListener("click", onGrammalecteGCPanelClick, false); this.oTooltip = new GrammalecteTooltip(this.xContentNode); this.xPanelContent.appendChild(this.xContentNode); this.oTAC = new GrammalecteTextAreaControl(); } start (xNode=null) { this.oTooltip.hide(); this.clear(); if (xNode && xNode.tagName == "TEXTAREA") { this.oTAC.setTextArea(xNode); } } clear () { while (this.xParagraphList.firstChild) { this.xParagraphList.removeChild(this.xParagraphList.firstChild); } |
︙ | ︙ | |||
446 447 448 449 450 451 452 | sText = sText.replace("\r\n", "\n").replace("\r", "\n"); while ((iEnd = sText.indexOf("\n", iStart)) !== -1) { this._dParagraph.set(i, sText.slice(iStart, iEnd)); i++; iStart = iEnd+1; } this._dParagraph.set(i, sText.slice(iStart)); | | | 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 | sText = sText.replace("\r\n", "\n").replace("\r", "\n"); while ((iEnd = sText.indexOf("\n", iStart)) !== -1) { this._dParagraph.set(i, sText.slice(iStart, iEnd)); i++; iStart = iEnd+1; } this._dParagraph.set(i, sText.slice(iStart)); //console.log("Paragraphs number: " + (i+1)); } write () { if (this._xTextArea !== null) { let sText = ""; this._dParagraph.forEach(function (val, key) { sText += val + "\n"; }); this._xTextArea.value = sText.slice(0,-1); } } } |
Modified gc_lang/fr/webext/panel/main.html from [fac2fe84b3] to [fa3b6b6a69].
︙ | ︙ | |||
13 14 15 16 17 18 19 | <header id="menu"> <nav> <header id="logo"> <img src="../img/logo-32.png"> </header> <ul> <li class="select" data-page="home_page"><i class="select fa fa-star icon" data-page="home_page"></i></li> | | | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <header id="menu"> <nav> <header id="logo"> <img src="../img/logo-32.png"> </header> <ul> <li class="select" data-page="home_page"><i class="select fa fa-star icon" data-page="home_page"></i></li> <li class="select" data-page="help_page"><i class="select fa fa-cube icon" data-page="help_page"></i></li> <li class="select" data-page="gc_options_page"><i class="select fa fa-cog icon" data-page="gc_options_page"></i></li> <li class="select" data-page="sc_options_page"><i class="select fa fa-book icon" data-page="sc_options_page"></i></li> <li class="select" data-page="test_page"><i class="select fa fa-flask icon" data-page="test_page"></i></li> </ul> </nav> </header> <!-- #menu --> <div id="page"> |
︙ | ︙ | |||
47 48 49 50 51 52 53 | <p id="link_othersponsors" class="link center" data-url="http://grammalecte.net/?thanks"> et tous ceux qui l’ont soutenu </p> </div> </section> <!-- #home_page --> <section id="help_page" class="page"> | | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <p id="link_othersponsors" class="link center" data-url="http://grammalecte.net/?thanks"> et tous ceux qui l’ont soutenu </p> </div> </section> <!-- #home_page --> <section id="help_page" class="page"> <h1>INTERFACE</h1> <div id="help_section"> <p>Grammalecte affiche un bouton d’accès au menu en bas à gauche des zones de texte usuelles pour accéder aux fonctionnalités existantes.</p> <p class="right"><img src="../img/menu_button1.png" title="bouton du menu" /></p> <p class="right"><img src="../img/menu_button2.png" title="menu" /></p> <p>Pour les autres zones de texte (HTML éditable), il faut sélectionner le texte et utiliser le menu contextuel.</p> <p class="right"><img src="../img/contextmenu.png" title="menu contextuel sur sélection" /></p> <h2>Raccourcis clavier</h2> |
︙ | ︙ |