af5026c31e3833cbdb716ca580219e16ca3c81a1
[icedeb.git] / chrome / content / icedeb.js
1 function getClipboardText() {
2     var clip = Components.classes['@mozilla.org/widget/clipboard;1']
3         .getService(Components.interfaces.nsIClipboard);
4     if (!clip) return null;
5
6     var trans = Components.classes['@mozilla.org/widget/transferable;1']
7         .createInstance(Components.interfaces.nsITransferable);
8     if (!trans) return null;
9
10     trans.addDataFlavor("text/unicode");
11     clip.getData(trans,
12             clip.supportsSelectionClipboard()
13             ? clip.kSelectionClipboard
14             : clip.kGlobalClipboard
15     );
16
17     var str = new Object;
18     var strLength = new Object;
19     trans.getTransferData("text/unicode", str, strLength);
20
21     var text = null;
22
23     if (str) str  = str.value.QueryInterface(Components.interfaces.nsISupportsString);
24     if (str) text = str.data.substring(0, strLength.value / 2);
25
26     return text;
27 }
28
29 function trim_keyword(word) {
30     if (!word) return word;
31
32     var oldword;
33     do {
34         oldword = word;
35
36         word = word.replace(/^\s+/, '');
37         word = word.replace(/\s+$/, '');
38         word = word.replace(/^#/, '');
39         word = word.replace(/[-:\/,.]$/, '');
40     } while ( oldword != word );
41
42     return word;
43 }
44
45 function lookup_bts(in_new) {
46     var bug = trim_keyword(getClipboardText());
47     if (!bug) return null;
48     var uri="http://bugs.debian.org/" + bug;
49
50     if (in_new) {
51         var b = getBrowser();
52         var new_tab = b.addTab(uri);
53         b.selectedTab = new_tab;
54     }
55     else {
56         loadURI(uri);
57     }
58 }
59
60 function lookup_pts(in_new) {
61     var pkg = trim_keyword(getClipboardText());
62     if (!pkg) return null;
63     var uri="http://packages.qa.debian.org/" + pkg;
64
65     if (in_new) {
66         var b = getBrowser();
67         var new_tab = b.addTab(uri);
68         b.selectedTab = new_tab;
69     }
70     else {
71         loadURI(uri);
72     }
73 }
74
75 function lookup_deb(in_new) {
76     var pkg = trim_keyword(getClipboardText());
77     if (!pkg) return null;
78     var uri="http://packages.debian.org/" + pkg;
79
80     if (in_new) {
81         var b = getBrowser();
82         var new_tab = b.addTab(uri);
83         b.selectedTab = new_tab;
84     }
85     else {
86         loadURI(uri);
87     }
88 }
89
90 IceDeb = {
91     btsButton: function (e) {
92         if ( e.button == 0 )
93             lookup_bts(false)
94         else if ( e.button == 1 )
95             lookup_bts(true);
96     },
97     ptsButton: function (e) {
98         if ( e.button == 0 )
99             lookup_pts(false)
100         else if ( e.button == 1 )
101             lookup_pts(true);
102     },
103     debButton: function (e) {
104         if ( e.button == 0 )
105             lookup_deb(false)
106         else if ( e.button == 1 )
107             lookup_deb(true);
108     }
109 }
110