Skip to content

Instantly share code, notes, and snippets.

@satyr
Created October 31, 2008 00:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save satyr/21186 to your computer and use it in GitHub Desktop.
Save satyr/21186 to your computer and use it in GitHub Desktop.
(function addURIOpenerToCMenu(opts){
var mi = document.createElement('menuitem');
mi.setAttribute('label', opts.label);
mi.setAttribute('accesskey', opts.accesskey);
mi.opener = opts.opener;
mi.run = function run(){
var {path, args} = this.opener;
with(gContextMenu) var uri = isTextSelected
? getSelectedURI()
: (onLink ? linkURI : gBrowser.currentURI).spec;
var app = Components.classes['@mozilla.org/file/local;1']
.createInstance(Components.interfaces.nsILocalFile);
app.initWithPath(path);
var proc = Components.classes['@mozilla.org/process/util;1']
.createInstance(Components.interfaces.nsIProcess);
proc.init(app);
proc.run(false, args.concat(uri), args.length + 1);
};
mi.setAttribute('oncommand', 'this.run()');
document.getElementById('contentAreaContextMenu')
.addEventListener('popupshowing', function pop(){ with(gContextMenu){
this.insertBefore(mi, document.getElementById(
'context-sep-'+ (onLink ? 'open' :
isTextSelected ? 'properties' : 'viewbgimage')));
var h = mi.hidden = !onLink && (onImage || onTextInput);
mi.setAttribute('disabled', h);
}}, false);
function getSelectedURI(){
var txt = document.commandDispatcher.focusedWindow
.getSelection().toString().replace(/^\s+|\s+$/g, '');
return /^(?:f|ht)tps?:\/\/./.test(txt) ? txt : 'http://'+ txt;
}
return arguments.callee;
})({
label: 'flvpop',
accesskey: 'f',
opener: {
path: 'C:\\Windows\\System32\\mshta.exe',
args: ['C:\\Tools\\HTA\\flvpop.hta'],
},
})({
label: 'Sleipnir',
accesskey: 'p',
opener: {
path: 'C:\\Tools\\Sleipnir\\bin\\Sleipnir.exe',
args: [],
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment