1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-23 04:07:58 +01:00

new liberator.util.readFromClipboard, so also non-Firefox extensions have access to the clipboard

This commit is contained in:
Martin Stubenschrott
2008-05-05 13:22:55 +00:00
parent 7b7d39cc8d
commit 04004ebb39
7 changed files with 49 additions and 22 deletions

View File

@@ -79,6 +79,16 @@ liberator.util = { //{{{
return "<unknown type>";
},
copyToClipboard: function (str, verbose)
{
var clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipboardHelper.copyString(str);
if (verbose)
liberator.echo("Yanked " + str, liberator.commandline.FORCE_SINGLELINE);
},
escapeHTML: function (str)
{
// XXX: the following code is _much_ slower than a simple .replace()
@@ -236,6 +246,34 @@ liberator.util = { //{{{
return string;
},
// same as Firefox's readFromClipboard function, but needed for apps like Thunderbird
readFromClipboard: function()
{
var url;
try
{
var clipboard = Components.classes['@mozilla.org/widget/clipboard;1'].getService(Components.interfaces.nsIClipboard);
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
trans.addDataFlavor("text/unicode");
if (clipboard.supportsSelectionClipboard())
clipboard.getData(trans, clipboard.kSelectionClipboard);
else
clipboard.getData(trans, clipboard.kGlobalClipboard);
var data = {};
var dataLen = {};
trans.getTransferData("text/unicode", data, dataLen);
if (data)
{
data = data.value.QueryInterface(Components.interfaces.nsISupportsString);
url = data.data.substring(0, dataLen.value / 2);
}
}
catch (ex) { }
return url;
},
// takes a string like 'google bla, www.osnews.com'
// and returns an array ['www.google.com/search?q=bla', 'www.osnews.com']
stringToURLArray: function (str)