Overview
Comment: | [fx] WebExt: remove wrapper around textareas, add button and menu |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fx |
Files: | files | file ages | folders |
SHA3-256: |
3cd8dde332fb086db06ee3a453d2b498 |
User & Date: | olr on 2017-09-06 17:40:22 |
Other Links: | manifest | tags |
Context
2017-09-06
| ||
19:15 | [fx] WebExt: help update check-in: aa0b62f525 user: olr tags: trunk, fx | |
17:40 | [fx] WebExt: remove wrapper around textareas, add button and menu check-in: 3cd8dde332 user: olr tags: trunk, fx | |
09:10 | [fx] WebExt: run content scripts at document_end (before the page finishes to load all external resources) check-in: 24c1fb45bc user: olr tags: trunk, fx | |
Changes
Modified gc_lang/fr/webext/content_scripts/init.js from [79f4d2add2] to [ccdc2aeb0d].
︙ | ︙ | |||
41 42 43 44 45 46 47 | oElem.appendChild(img); }); } */ const oGrammalecte = { | | | | | | | 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 | oElem.appendChild(img); }); } */ const oGrammalecte = { nMenu: 0, lMenu: [], oTFPanel: null, oLxgPanel: null, oGCPanel: null, createMenus: function () { let lNode = document.getElementsByTagName("textarea"); for (let xNode of lNode) { this.lMenu.push(new GrammalecteMenu(this.nMenu, xNode)); this.nMenu += 1; } }, createTFPanel: function () { if (this.oTFPanel === null) { this.oTFPanel = new GrammalecteTextFormatter("grammalecte_tf_panel", "Formateur de texte", 800, 620, false); //this.oTFPanel.logInnerHTML(); |
︙ | ︙ | |||
130 131 132 133 134 135 136 | } }); /* Start */ | | | 130 131 132 133 134 135 136 137 | } }); /* Start */ oGrammalecte.createMenus(); |
Added gc_lang/fr/webext/content_scripts/menu.css version [6770b05fc9].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* CSS Menu for Grammalecte */ .grammalecte_menu_main_button { position: absolute; margin: -17px 0 0 -16px; border-radius: 16px; background-color: hsla(210, 50%, 50%, .5); background-image: url('data:image/png;base64,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'); background-repeat: no-repeat; width: 32px; height: 32px; cursor: pointer; z-index: 100000000; } .grammalecte_menu { display: none; position: absolute; margin-left: -10px; border-radius: 5px; border: 3px solid hsl(210, 50%, 30%); box-shadow: 0px 0px 2px hsla(210, 10%, 10%, .5); font-family: "Trebuchet MS", "Liberation Sans", sans-serif; } .grammalecte_menu_item { padding: 3px 10px; background-color: hsl(210, 50%, 50%); font-size: 14px; color: hsl(210, 50%, 92%); cursor: pointer; } .grammalecte_menu_item:hover { background-color: hsl(210, 60%, 60%); color: hsl(210, 60%, 100%); } .grammalecte_menu_item_block { padding: 3px 10px; background-color: hsl(210, 50%, 50%); font-size: 14px; color: hsl(210, 50%, 92%); border-top: 1px solid hsl(210, 50%, 30%);; } .grammalecte_menu_button { display: inline-block; padding: 0 5px; margin-left: 10px; border-radius: 2px; background-color: hsl(210, 50%, 55%); font-size: 12px; line-height: 1.6; text-align: center; cursor: pointer; } .grammalecte_menu_button:hover { background-color: hsl(210, 60%, 60%); } .grammalecte_menu_header { padding: 2px 10px; background-color: hsl(210, 50%, 30%); font-size: 12px; font-variant-caps: small-caps; color: hsl(210, 50%, 90%); text-shadow: 0px 0px 2px hsla(210, 10%, 10%, .9); text-align: center; } |
Added gc_lang/fr/webext/content_scripts/menu.js version [de706e9682].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | // JavaScript "use strict"; class GrammalecteMenu { constructor (nMenu, xTextArea) { this.sMenuId = "grammalecte_menu" + nMenu; let xButton = createNode("div", {className: "grammalecte_menu_main_button"}); xButton.onclick = () => { this.switchMenu(); }; let xMenu = this._createMenu(xTextArea); this._insertAfter(xButton, xTextArea); this._insertAfter(xMenu, xTextArea); } _insertAfter (xNewNode, xReferenceNode) { xReferenceNode.parentNode.insertBefore(xNewNode, xReferenceNode.nextSibling); } _createMenu (xTextArea) { try { let xMenu = createNode("div", {id: this.sMenuId, className: "grammalecte_menu"}); // Text formatter let xTFButton = createNode("div", {className: "grammalecte_menu_item", textContent: "Formateur de texte"}); xTFButton.onclick = () => { this.switchMenu(); oGrammalecte.createTFPanel(); oGrammalecte.oTFPanel.start(xTextArea); oGrammalecte.oTFPanel.show(); }; // lexicographe let xLxgButton = 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: xTextArea.value}, dInfo: {sTextAreaId: xTextArea.id} }); }; // Grammar checker let xGCButton = createNode("div", {className: "grammalecte_menu_item", textContent: "Correction grammaticale"}); xGCButton.onclick = () => { this.switchMenu(); oGrammalecte.createGCPanel(); oGrammalecte.oGCPanel.start(xTextArea); oGrammalecte.oGCPanel.show(); oGrammalecte.oGCPanel.startWaitIcon(); xGrammalectePort.postMessage({ sCommand: "parseAndSpellcheck", dParam: {sText: xTextArea.value, sCountry: "FR", bDebug: false, bContext: false}, dInfo: {sTextAreaId: xTextArea.id} }); }; // Conjugation tool let xConjButton = createNode("div", {className: "grammalecte_menu_item_block", textContent: "Conjugueur"}); let xConjButtonTab = createNode("div", {className: "grammalecte_menu_button", textContent: "Onglet"}); xConjButtonTab.onclick = () => { this.switchMenu(); xGrammalectePort.postMessage({sCommand: "openConjugueurTab", dParam: null, dInfo: null}); }; let xConjButtonWin = 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); // Create xMenu.appendChild(createNode("div", {className: "grammalecte_menu_header", textContent: "Grammalecte"})); xMenu.appendChild(xTFButton); xMenu.appendChild(xLxgButton); xMenu.appendChild(xGCButton); xMenu.appendChild(xConjButton); //xMenu.appendChild(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(createNode("div", {className: "grammalecte_menu_header"})); return xMenu; } catch (e) { showError(e); } } switchMenu () { let xMenu = document.getElementById(this.sMenuId); xMenu.style.display = (xMenu.style.display == "block") ? "none" : "block"; } } |
Deleted gc_lang/fr/webext/content_scripts/wrapper.css version [bbf425edb7].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted gc_lang/fr/webext/content_scripts/wrapper.js version [41723fc48c].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Modified gc_lang/fr/webext/manifest.json from [f6f86f5cfc] to [33a68fe1cd].
︙ | ︙ | |||
40 41 42 43 44 45 46 | { "matches": ["<all_urls>"], "css": [ "content_scripts/panel.css", "content_scripts/panel_tf.css", "content_scripts/panel_gc.css", "content_scripts/panel_lxg.css", | | | | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | { "matches": ["<all_urls>"], "css": [ "content_scripts/panel.css", "content_scripts/panel_tf.css", "content_scripts/panel_gc.css", "content_scripts/panel_lxg.css", "content_scripts/menu.css", "3rd/font-awesome-4.7.0/css/font-awesome.min.css" ], "js": [ "content_scripts/panel.js", "grammalecte/fr/textformatter.js", "content_scripts/panel_tf.js", "content_scripts/panel_gc.js", "content_scripts/panel_lxg.js", "content_scripts/menu.js", "content_scripts/init.js" ], "run_at": "document_end" } ], "commands": { "conjugueur_tab": { |
︙ | ︙ |