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 | }); | ... | ... |