Skip to content

Commit

Permalink
#36 Clicking widget has same effect as clicking 'Save Text To File'
Browse files Browse the repository at this point in the history
context menu entry
  • Loading branch information
bobbyrne01 committed Dec 2, 2013
1 parent 5c3576b commit 4bc49c3
Show file tree
Hide file tree
Showing 10 changed files with 86 additions and 41 deletions.
1 change: 1 addition & 0 deletions data/js/GetSelectedText.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
getText();
3 changes: 3 additions & 0 deletions data/js/ListenForContextClick.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
self.on("click", function () {
getText();
});
4 changes: 2 additions & 2 deletions data/js/SelectedText.js → data/js/SendSelectedText.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
self.on("click", function () {
function getText(){

self.postMessage(window.getSelection().toString());
});
}
5 changes: 3 additions & 2 deletions lib/ContextMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ exports.init = function() {

label: Localisation.getString("saveTextToFile_id"),
context: ContextMenu.SelectionContext(),
contentScriptFile: Data.get("js/SelectedText.js"),
contentScriptFile: [ Data.get("js/ListenForContextClick.js"), Data.get("js/SendSelectedText.js") ],
onMessage: function (selectedText) {

File.saveTo(selectedText);
}
});
}
};
12 changes: 2 additions & 10 deletions lib/Hotkey.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
var { Hotkey } = require("sdk/hotkeys"),
Selection = require("./Selection"),
Notification = require("./Notification"),
File = require("./File");
Tab = require("./Tab");

exports.init = function() {

Hotkey({
combo: "shift-f1",
onPress: function() {

if(Selection.getText() === null){

Notification.sendMsg("noTextSelected_id");

}else{
File.saveTo(Selection.getText());
}
Tab.getSelectedTextHotkey();
}
});
}
49 changes: 31 additions & 18 deletions lib/Panel.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
var Panel = require("sdk/panel"),
File = require("./File"),
Preference = require("./Preference"),
Chrome = require("./Chrome"),
Data = require("./Data"),
Notification = require("./Notification"),
File = require("./File"),
confirmation,
selectedText;

Expand All @@ -13,40 +13,53 @@ exports.init = function() {
width: 490,
height: 400,
contentURL: Data.get("html/ConfirmPanel.html"),
contentScriptFile: [ Data.get("js/ConfirmPanel.js") ],
onShow: function() { getPreferences(); }
contentScriptFile: Data.get("js/ConfirmPanel.js"),
onShow: function() {

getPreferences();
}
});


confirmation.port.on("selectDir", function () {
Chrome.selectDir(selectedText);
confirmation.show();
});

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

var parsedPerfs = JSON.parse(selectedPrefs);
if(selectedText === "" || selectedText === null){

Notification.sendMsg("noTextSelected_id");
confirmation.hide();

Preference.set('fileName', parsedPerfs.fileName);
Preference.set('pathToFile', parsedPerfs.pathToFile);
Preference.set('datestamp', parsedPerfs.datestamp === "true");
Preference.set('timestamp', parsedPerfs.timestamp === "true");
Preference.set('datestampInLine', parsedPerfs.datestampInLine === "true");
Preference.set('timestampInLine', parsedPerfs.timestampInLine === "true");
Preference.set('lineSeparator', parsedPerfs.lineSeparator === "true");
Preference.set('currentURL', parsedPerfs.currentURL === "true");
Preference.set('pagenameForFilename', parsedPerfs.pagenameForFilename === "true");
Preference.set('saveMode', parseInt(parsedPerfs.saveMode));
Preference.set('confirmPanel', parsedPerfs.confirmPanel === "true");
}else{

var parsedPerfs = JSON.parse(selectedPrefs);

Preference.set('fileName', parsedPerfs.fileName);
Preference.set('pathToFile', parsedPerfs.pathToFile);
Preference.set('datestamp', parsedPerfs.datestamp === "true");
Preference.set('timestamp', parsedPerfs.timestamp === "true");
Preference.set('datestampInLine', parsedPerfs.datestampInLine === "true");
Preference.set('timestampInLine', parsedPerfs.timestampInLine === "true");
Preference.set('lineSeparator', parsedPerfs.lineSeparator === "true");
Preference.set('currentURL', parsedPerfs.currentURL === "true");
Preference.set('pagenameForFilename', parsedPerfs.pagenameForFilename === "true");
Preference.set('saveMode', parseInt(parsedPerfs.saveMode));
Preference.set('confirmPanel', parsedPerfs.confirmPanel === "true");

Chrome.saveTo(selectedText);
confirmation.hide();
}

Chrome.saveTo(selectedText);
confirmation.hide();
selectedText = "";
});

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

Notification.sendMsg("saveCancel_id");
confirmation.hide();
selectedText = "";
});

return confirmation;
Expand Down
36 changes: 33 additions & 3 deletions lib/Tab.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,41 @@
var tab = require('tabs');
var tab = require('tabs'),
Data = require("./Data"),
File = require("./File"),
Notification = require("./Notification");

exports.getTitle = function() {

return tab.activeTab.title;
}
};

exports.getURL = function() {

return tab.activeTab.url;
}
};

exports.getSelectedText = function() {

tab.activeTab.attach({
contentScriptFile: [ Data.get("js/SendSelectedText.js"), Data.get("js/GetSelectedText.js") ],
onMessage: function(selectedText) {
File.saveTo(selectedText);
}
});
};

exports.getSelectedTextHotkey = function() {

tab.activeTab.attach({
contentScriptFile: [ Data.get("js/SendSelectedText.js"), Data.get("js/GetSelectedText.js") ],
onMessage: function(selectedText) {

if(selectedText === "" || selectedText === null){

Notification.sendMsg("noTextSelected_id");

}else{
File.saveTo(selectedText);
}
}
});
};
11 changes: 8 additions & 3 deletions lib/Widget.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
var widget = require("sdk/widget"),
Localisation = require("./Localisation"),
Data = require("./Data");
Data = require("./Data"),
Tab = require("./Tab");

exports.init = function(panel) {

widget.Widget({
var widgetObj = widget.Widget({
id: "save-text-to-file-widget",
label: Localisation.getString("saveTextToFile_id"),
contentURL: Data.get("images/ico.png"),
panel: panel
panel: panel,
onClick: function() {

Tab.getSelectedText();
}
});
};
4 changes: 2 additions & 2 deletions lib/main.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require("./Hotkey").init();
require("./Panel").init();
//require("./Widget").init(panel);
var panel = require("./Panel").init();
require("./Widget").init(panel);
require("./ContextMenu").init();
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"description": "Saves highlighted text to a file in a specified directory",
"author": "Robert Byrne",
"license": "GNU GPL v3",
"version": "2.1.5",
"version": "2.1.6",
"permissions": {"private-browsing": true},
"preferences": [{
"name": "fileName",
Expand Down

0 comments on commit 4bc49c3

Please sign in to comment.