]> git.ktnx.net Git - icedeb.git/blobdiff - chrome/content/icedeb.js
add a button showung buildd logs
[icedeb.git] / chrome / content / icedeb.js
index 3a08f11cae017ac4b40613b72080645b761df79b..742ca822dafc54c2a1631d55472f31e55995218b 100644 (file)
-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);
     }
 }