]> git.ktnx.net Git - icedeb.git/blobdiff - chrome/content/icedeb.js
move extension content to content/
[icedeb.git] / chrome / content / icedeb.js
diff --git a/chrome/content/icedeb.js b/chrome/content/icedeb.js
new file mode 100644 (file)
index 0000000..3a08f11
--- /dev/null
@@ -0,0 +1,110 @@
+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);
+    }
+}
+
+function lookup_pts(in_new) {
+    var pkg = trim_keyword(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);
+    }
+}
+
+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);
+    }
+}
+
+Debian = {
+    btsButton: function (e) {
+        if ( e.button == 0 )
+            lookup_bts(false)
+        else if ( e.button == 1 )
+            lookup_bts(true);
+    },
+    ptsButton: function (e) {
+        if ( e.button == 0 )
+            lookup_pts(false)
+        else if ( e.button == 1 )
+            lookup_pts(true);
+    },
+    debButton: function (e) {
+        if ( e.button == 0 )
+            lookup_deb(false)
+        else if ( e.button == 1 )
+            lookup_deb(true);
+    }
+}
+