IceDeb = { getClipboardText: function() { var clip = Components.classes['@mozilla.org/widget/clipboard;1'] .getService(Components.interfaces.nsIClipboard); if (!clip) return null; var trans = Components.classes['@mozilla.org/widget/transferable;1'] .createInstance(Components.interfaces.nsITransferable); if (!trans) return null; trans.addDataFlavor("text/unicode"); clip.getData(trans, clip.supportsSelectionClipboard() ? clip.kSelectionClipboard : clip.kGlobalClipboard ); var str = new Object; var strLength = new Object; trans.getTransferData("text/unicode", str, strLength); var text = null; if (str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString); if (str) text = str.data.substring(0, strLength.value / 2); return text; }, trim_keyword: function(word) { if (!word) return word; var oldword; do { oldword = word; word = word.replace(/^\s+/, ''); word = word.replace(/\s+$/, ''); word = word.replace(/^#/, ''); word = word.replace(/[-:\/,.]$/, ''); } while ( oldword != word ); return word; }, lookup_bts: function(in_new) { var bug = IceDeb.trim_keyword(IceDeb.getClipboardText()); if (!bug) return null; var uri="http://bugs.debian.org/" + bug; if (in_new) { var b = getBrowser(); var new_tab = b.addTab(uri); b.selectedTab = new_tab; } else { loadURI(uri); } }, lookup_pts: function(in_new) { var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText()); if (!pkg) return null; var uri="http://packages.qa.debian.org/" + pkg; if (in_new) { var b = getBrowser(); var new_tab = b.addTab(uri); b.selectedTab = new_tab; } else { loadURI(uri); } }, lookup_deb: function(in_new) { var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText()); if (!pkg) return null; var uri="http://packages.debian.org/" + pkg; if (in_new) { var b = getBrowser(); var new_tab = b.addTab(uri); b.selectedTab = new_tab; } else { loadURI(uri); } }, btsButton: function (e) { if ( e.button == 0 ) IceDeb.lookup_bts(false) else if ( e.button == 1 ) IceDeb.lookup_bts(true); }, ptsButton: function (e) { if ( e.button == 0 ) IceDeb.lookup_pts(false) else if ( e.button == 1 ) IceDeb.lookup_pts(true); }, debButton: function (e) { if ( e.button == 0 ) IceDeb.lookup_deb(false) else if ( e.button == 1 ) IceDeb.lookup_deb(true); } }