X-Git-Url: https://git.ktnx.net/?p=icedeb.git;a=blobdiff_plain;f=chrome%2Fcontent%2Ficedeb.js;h=742ca822dafc54c2a1631d55472f31e55995218b;hp=3a08f11cae017ac4b40613b72080645b761df79b;hb=233b8f5208d72f460fcb8637c27d8109b39dd940;hpb=b3a0ffe87f19260ceaa14c539659af12569bd5f3 diff --git a/chrome/content/icedeb.js b/chrome/content/icedeb.js index 3a08f11..742ca82 100644 --- a/chrome/content/icedeb.js +++ b/chrome/content/icedeb.js @@ -1,110 +1,170 @@ -function getClipboardText() { - 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; -} - -function trim_keyword(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; -} - -function lookup_bts(in_new) { - var bug = trim_keyword(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); - } -} +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 s = new Object; + var p; + var len = new Object; + trans.getTransferData("text/unicode", s, len); + + var text = null; + var res; + + if (s) + p = s.value.QueryInterface(Components.interfaces.nsISupportsString, res); + if (p) + text = p.data.substring(0, len.value / 2); + + return text; + }, + trim_keyword: function(word) { + if (!word) return word; -function lookup_pts(in_new) { - var pkg = trim_keyword(getClipboardText()); - if (!pkg) return null; - var uri="http://packages.qa.debian.org/" + pkg; + var oldword; + do { + oldword = word; - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } -} + word = word.replace(/^[^a-zA-Z0-9]+/, ''); + word = word.replace(/[^a-zA-Z0-9]+$/, ''); + } while ( oldword != word ); -function lookup_deb(in_new) { - var pkg = trim_keyword(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); - } -} + 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); + } + }, + lookup_ml: function(in_new) { + var msg_id = IceDeb.trim_keyword(IceDeb.getClipboardText()); + if (!msg_id) msg_id = ''; + var uri="http://lists.debian.org/msgid-search/" + msg_id; + + if (in_new) { + var b = getBrowser(); + var new_tab = b.addTab(uri); + b.selectedTab = new_tab; + } + else { + loadURI(uri); + } + }, + lookup_ddpo: function(in_new) { + var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText()); + var uri="http://qa.debian.org/developer.php"; + + if (keyword) uri += "?login=" + keyword; + + if (in_new) { + var b = getBrowser(); + var new_tab = b.addTab(uri); + b.selectedTab = new_tab; + } + else { + loadURI(uri); + } + }, + lookup_buildd: function(in_new) { + var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText()); + var uri="https://buildd.debian.org/"; + + if (keyword) uri += keyword; + + if (in_new) { + var b = getBrowser(); + var new_tab = b.addTab(uri); + b.selectedTab = new_tab; + } + else { + loadURI(uri); + } + }, -Debian = { btsButton: function (e) { if ( e.button == 0 ) - lookup_bts(false) + IceDeb.lookup_bts(false) else if ( e.button == 1 ) - lookup_bts(true); + IceDeb.lookup_bts(true); }, ptsButton: function (e) { if ( e.button == 0 ) - lookup_pts(false) + IceDeb.lookup_pts(false) else if ( e.button == 1 ) - lookup_pts(true); + IceDeb.lookup_pts(true); }, debButton: function (e) { if ( e.button == 0 ) - lookup_deb(false) + IceDeb.lookup_deb(false) + else if ( e.button == 1 ) + IceDeb.lookup_deb(true); + }, + mlButton: function (e) { + if ( e.button == 0 ) + IceDeb.lookup_ml(false) + else if ( e.button == 1 ) + IceDeb.lookup_ml(true); + }, + ddpoButton: function (e) { + if ( e.button == 0 ) + IceDeb.lookup_ddpo(false) + else if ( e.button == 1 ) + IceDeb.lookup_ddpo(true); + }, + builddButton: function (e) { + if ( e.button == 0 ) + IceDeb.lookup_buildd(false) else if ( e.button == 1 ) - lookup_deb(true); + IceDeb.lookup_buildd(true); } }