Commit 0f43a038c39292a80e281cfc6f4505adba2fa94e
1 parent
c76fa48e
Exists in
master
Implements the creation and communication with front-end
Showing
4 changed files
with
67 additions
and
11 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | +<html> | |
| 2 | + <head> | |
| 3 | + <meta charset="UTF-8" /> | |
| 4 | + <title>VLibras Plugin</title> | |
| 5 | + </head> | |
| 6 | + <body> | |
| 7 | + <h1>Hello World</h1> | |
| 8 | + <script> | |
| 9 | + document.addEventListener('plugin:selectedText', function(e) { | |
| 10 | + console.log(e.detail); | |
| 11 | + }); | |
| 12 | + </script> | |
| 13 | + </body> | |
| 14 | +</html> | ... | ... |
firefox/index.js
| 1 | -var self = require('sdk/self'); | |
| 2 | -var cm = require("sdk/context-menu"); | |
| 3 | -var { open } = require('sdk/window/utils'); | |
| 1 | +'use strict'; | |
| 4 | 2 | |
| 3 | +// Imports | |
| 4 | +let self = require('sdk/self'); | |
| 5 | +let { Ci } = require('chrome'); | |
| 6 | + | |
| 7 | +let cm = require("sdk/context-menu"); | |
| 8 | +let pm = require('sdk/page-mod'); | |
| 9 | + | |
| 10 | +let browser = require('sdk/window/utils').getMostRecentBrowserWindow(); | |
| 11 | + | |
| 12 | +//Globals | |
| 13 | +let app = { | |
| 14 | + window: null, | |
| 15 | + worker: null, | |
| 16 | + selectedText: "" | |
| 17 | +}; | |
| 18 | + | |
| 19 | +// Context menu | |
| 5 | 20 | cm.Item({ |
| 6 | 21 | label: "Traduzir para LIBRAS", |
| 7 | 22 | context: cm.SelectionContext(), |
| ... | ... | @@ -15,12 +30,33 @@ cm.Item({ |
| 15 | 30 | ' self.postMessage( window.getSelection().toString() );' + |
| 16 | 31 | '});', |
| 17 | 32 | onMessage: function(selectedText) { |
| 18 | - var window = open('data:text/html,Hello Window', { | |
| 19 | - name: 'jetpack window', | |
| 20 | - features: { | |
| 21 | - width: 200, | |
| 22 | - height: 100 | |
| 23 | - } | |
| 33 | + app.selectedText = selectedText; | |
| 34 | + | |
| 35 | + if ( !(app.window instanceof Ci.nsIDOMWindow) ) { | |
| 36 | + app.window = browser.open( | |
| 37 | + self.data.url('app/window.html'), | |
| 38 | + 'VLibras Plugin', | |
| 39 | + 'chrome=no,width=560,height=560,menubar=no' | |
| 40 | + ); | |
| 41 | + } else { | |
| 42 | + app.worker.port.emit('selectedText', app.selectedText); | |
| 43 | + app.window.focus(); | |
| 44 | + } | |
| 45 | + } | |
| 46 | +}); | |
| 47 | + | |
| 48 | +// Page mod | |
| 49 | +pm.PageMod({ | |
| 50 | + include: self.data.url('app/window.html'), | |
| 51 | + contentScriptWhen: 'ready', | |
| 52 | + contentScriptFile: self.data.url('delegator.js'), | |
| 53 | + onAttach: function(worker) { | |
| 54 | + app.worker = worker; | |
| 55 | + | |
| 56 | + app.worker.port.emit('selectedText', app.selectedText); | |
| 57 | + | |
| 58 | + app.worker.on('detach', function () { | |
| 59 | + app.worker = undefined; | |
| 24 | 60 | }); |
| 25 | 61 | } |
| 26 | 62 | }); | ... | ... |