Skip to content

Commit 4bc49c3

Browse files
committed
#36 Clicking widget has same effect as clicking 'Save Text To File'
context menu entry
1 parent 5c3576b commit 4bc49c3

10 files changed

+86
-41
lines changed

data/js/GetSelectedText.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
getText();

data/js/ListenForContextClick.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
self.on("click", function () {
2+
getText();
3+
});
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
self.on("click", function () {
1+
function getText(){
22

33
self.postMessage(window.getSelection().toString());
4-
});
4+
}

lib/ContextMenu.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ exports.init = function() {
99

1010
label: Localisation.getString("saveTextToFile_id"),
1111
context: ContextMenu.SelectionContext(),
12-
contentScriptFile: Data.get("js/SelectedText.js"),
12+
contentScriptFile: [ Data.get("js/ListenForContextClick.js"), Data.get("js/SendSelectedText.js") ],
1313
onMessage: function (selectedText) {
14+
1415
File.saveTo(selectedText);
1516
}
1617
});
17-
}
18+
};

lib/Hotkey.js

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
11
var { Hotkey } = require("sdk/hotkeys"),
2-
Selection = require("./Selection"),
3-
Notification = require("./Notification"),
4-
File = require("./File");
2+
Tab = require("./Tab");
53

64
exports.init = function() {
75

86
Hotkey({
97
combo: "shift-f1",
108
onPress: function() {
119

12-
if(Selection.getText() === null){
13-
14-
Notification.sendMsg("noTextSelected_id");
15-
16-
}else{
17-
File.saveTo(Selection.getText());
18-
}
10+
Tab.getSelectedTextHotkey();
1911
}
2012
});
2113
}

lib/Panel.js

+31-18
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
var Panel = require("sdk/panel"),
2-
File = require("./File"),
32
Preference = require("./Preference"),
43
Chrome = require("./Chrome"),
54
Data = require("./Data"),
65
Notification = require("./Notification"),
6+
File = require("./File"),
77
confirmation,
88
selectedText;
99

@@ -13,40 +13,53 @@ exports.init = function() {
1313
width: 490,
1414
height: 400,
1515
contentURL: Data.get("html/ConfirmPanel.html"),
16-
contentScriptFile: [ Data.get("js/ConfirmPanel.js") ],
17-
onShow: function() { getPreferences(); }
16+
contentScriptFile: Data.get("js/ConfirmPanel.js"),
17+
onShow: function() {
18+
19+
getPreferences();
20+
}
1821
});
1922

20-
2123
confirmation.port.on("selectDir", function () {
2224
Chrome.selectDir(selectedText);
2325
confirmation.show();
2426
});
2527

2628
confirmation.port.on("save", function (selectedPrefs) {
2729

28-
var parsedPerfs = JSON.parse(selectedPrefs);
30+
if(selectedText === "" || selectedText === null){
31+
32+
Notification.sendMsg("noTextSelected_id");
33+
confirmation.hide();
2934

30-
Preference.set('fileName', parsedPerfs.fileName);
31-
Preference.set('pathToFile', parsedPerfs.pathToFile);
32-
Preference.set('datestamp', parsedPerfs.datestamp === "true");
33-
Preference.set('timestamp', parsedPerfs.timestamp === "true");
34-
Preference.set('datestampInLine', parsedPerfs.datestampInLine === "true");
35-
Preference.set('timestampInLine', parsedPerfs.timestampInLine === "true");
36-
Preference.set('lineSeparator', parsedPerfs.lineSeparator === "true");
37-
Preference.set('currentURL', parsedPerfs.currentURL === "true");
38-
Preference.set('pagenameForFilename', parsedPerfs.pagenameForFilename === "true");
39-
Preference.set('saveMode', parseInt(parsedPerfs.saveMode));
40-
Preference.set('confirmPanel', parsedPerfs.confirmPanel === "true");
35+
}else{
36+
37+
var parsedPerfs = JSON.parse(selectedPrefs);
38+
39+
Preference.set('fileName', parsedPerfs.fileName);
40+
Preference.set('pathToFile', parsedPerfs.pathToFile);
41+
Preference.set('datestamp', parsedPerfs.datestamp === "true");
42+
Preference.set('timestamp', parsedPerfs.timestamp === "true");
43+
Preference.set('datestampInLine', parsedPerfs.datestampInLine === "true");
44+
Preference.set('timestampInLine', parsedPerfs.timestampInLine === "true");
45+
Preference.set('lineSeparator', parsedPerfs.lineSeparator === "true");
46+
Preference.set('currentURL', parsedPerfs.currentURL === "true");
47+
Preference.set('pagenameForFilename', parsedPerfs.pagenameForFilename === "true");
48+
Preference.set('saveMode', parseInt(parsedPerfs.saveMode));
49+
Preference.set('confirmPanel', parsedPerfs.confirmPanel === "true");
50+
51+
Chrome.saveTo(selectedText);
52+
confirmation.hide();
53+
}
4154

42-
Chrome.saveTo(selectedText);
43-
confirmation.hide();
55+
selectedText = "";
4456
});
4557

4658
confirmation.port.on("cancel", function () {
4759

4860
Notification.sendMsg("saveCancel_id");
4961
confirmation.hide();
62+
selectedText = "";
5063
});
5164

5265
return confirmation;

lib/Tab.js

+33-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,41 @@
1-
var tab = require('tabs');
1+
var tab = require('tabs'),
2+
Data = require("./Data"),
3+
File = require("./File"),
4+
Notification = require("./Notification");
25

36
exports.getTitle = function() {
47

58
return tab.activeTab.title;
6-
}
9+
};
710

811
exports.getURL = function() {
912

1013
return tab.activeTab.url;
11-
}
14+
};
15+
16+
exports.getSelectedText = function() {
17+
18+
tab.activeTab.attach({
19+
contentScriptFile: [ Data.get("js/SendSelectedText.js"), Data.get("js/GetSelectedText.js") ],
20+
onMessage: function(selectedText) {
21+
File.saveTo(selectedText);
22+
}
23+
});
24+
};
25+
26+
exports.getSelectedTextHotkey = function() {
27+
28+
tab.activeTab.attach({
29+
contentScriptFile: [ Data.get("js/SendSelectedText.js"), Data.get("js/GetSelectedText.js") ],
30+
onMessage: function(selectedText) {
31+
32+
if(selectedText === "" || selectedText === null){
33+
34+
Notification.sendMsg("noTextSelected_id");
35+
36+
}else{
37+
File.saveTo(selectedText);
38+
}
39+
}
40+
});
41+
};

lib/Widget.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
var widget = require("sdk/widget"),
22
Localisation = require("./Localisation"),
3-
Data = require("./Data");
3+
Data = require("./Data"),
4+
Tab = require("./Tab");
45

56
exports.init = function(panel) {
67

7-
widget.Widget({
8+
var widgetObj = widget.Widget({
89
id: "save-text-to-file-widget",
910
label: Localisation.getString("saveTextToFile_id"),
1011
contentURL: Data.get("images/ico.png"),
11-
panel: panel
12+
panel: panel,
13+
onClick: function() {
14+
15+
Tab.getSelectedText();
16+
}
1217
});
1318
};

lib/main.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
require("./Hotkey").init();
2-
require("./Panel").init();
3-
//require("./Widget").init(panel);
2+
var panel = require("./Panel").init();
3+
require("./Widget").init(panel);
44
require("./ContextMenu").init();

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"description": "Saves highlighted text to a file in a specified directory",
66
"author": "Robert Byrne",
77
"license": "GNU GPL v3",
8-
"version": "2.1.5",
8+
"version": "2.1.6",
99
"permissions": {"private-browsing": true},
1010
"preferences": [{
1111
"name": "fileName",

0 commit comments

Comments
 (0)