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 @@ | @@ -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 | cm.Item({ | 20 | cm.Item({ |
6 | label: "Traduzir para LIBRAS", | 21 | label: "Traduzir para LIBRAS", |
7 | context: cm.SelectionContext(), | 22 | context: cm.SelectionContext(), |
@@ -15,12 +30,33 @@ cm.Item({ | @@ -15,12 +30,33 @@ cm.Item({ | ||
15 | ' self.postMessage( window.getSelection().toString() );' + | 30 | ' self.postMessage( window.getSelection().toString() );' + |
16 | '});', | 31 | '});', |
17 | onMessage: function(selectedText) { | 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 | }); |