]> git.ktnx.net Git - icedeb.git/blob - chrome/content/icedeb.js
742ca822dafc54c2a1631d55472f31e55995218b
[icedeb.git] / chrome / content / icedeb.js
1 IceDeb = {
2     getClipboardText: function() {
3         var clip = Components.classes['@mozilla.org/widget/clipboard;1']
4             .getService(Components.interfaces.nsIClipboard);
5         if (!clip) return null;
6
7         var trans = Components.classes['@mozilla.org/widget/transferable;1']
8             .createInstance(Components.interfaces.nsITransferable);
9         if (!trans) return null;
10
11         trans.addDataFlavor("text/unicode");
12         clip.getData(trans,
13                 clip.supportsSelectionClipboard()
14                 ? clip.kSelectionClipboard
15                 : clip.kGlobalClipboard
16         );
17
18         var s = new Object;
19         var p;
20         var len = new Object;
21         trans.getTransferData("text/unicode", s, len);
22
23         var text = null;
24         var res;
25
26         if (s)
27             p = s.value.QueryInterface(Components.interfaces.nsISupportsString, res);
28         if (p)
29             text = p.data.substring(0, len.value / 2);
30
31         return text;
32     },
33     trim_keyword: function(word) {
34         if (!word) return word;
35
36         var oldword;
37         do {
38             oldword = word;
39
40             word = word.replace(/^[^a-zA-Z0-9]+/, '');
41             word = word.replace(/[^a-zA-Z0-9]+$/, '');
42         } while ( oldword != word );
43
44         return word;
45     },
46     lookup_bts: function(in_new) {
47         var bug = IceDeb.trim_keyword(IceDeb.getClipboardText());
48         if (!bug) return null;
49         var uri="http://bugs.debian.org/" + bug;
50
51         if (in_new) {
52             var b = getBrowser();
53             var new_tab = b.addTab(uri);
54             b.selectedTab = new_tab;
55         }
56         else {
57             loadURI(uri);
58         }
59     },
60     lookup_pts: function(in_new) {
61         var pkg = IceDeb.trim_keyword(IceDeb.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     lookup_deb: function(in_new) {
75         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
76         if (!pkg) return null;
77         var uri="http://packages.debian.org/" + pkg;
78
79         if (in_new) {
80             var b = getBrowser();
81             var new_tab = b.addTab(uri);
82             b.selectedTab = new_tab;
83         }
84         else {
85             loadURI(uri);
86         }
87     },
88     lookup_ml: function(in_new) {
89         var msg_id = IceDeb.trim_keyword(IceDeb.getClipboardText());
90         if (!msg_id) msg_id = '';
91         var uri="http://lists.debian.org/msgid-search/" + msg_id;
92
93         if (in_new) {
94             var b = getBrowser();
95             var new_tab = b.addTab(uri);
96             b.selectedTab = new_tab;
97         }
98         else {
99             loadURI(uri);
100         }
101     },
102     lookup_ddpo: function(in_new) {
103         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
104         var uri="http://qa.debian.org/developer.php";
105
106         if (keyword) uri += "?login=" + keyword;
107
108         if (in_new) {
109             var b = getBrowser();
110             var new_tab = b.addTab(uri);
111             b.selectedTab = new_tab;
112         }
113         else {
114             loadURI(uri);
115         }
116     },
117     lookup_buildd: function(in_new) {
118         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
119         var uri="https://buildd.debian.org/";
120
121         if (keyword) uri += keyword;
122
123         if (in_new) {
124             var b = getBrowser();
125             var new_tab = b.addTab(uri);
126             b.selectedTab = new_tab;
127         }
128         else {
129             loadURI(uri);
130         }
131     },
132
133     btsButton: function (e) {
134         if ( e.button == 0 )
135             IceDeb.lookup_bts(false)
136         else if ( e.button == 1 )
137             IceDeb.lookup_bts(true);
138     },
139     ptsButton: function (e) {
140         if ( e.button == 0 )
141             IceDeb.lookup_pts(false)
142         else if ( e.button == 1 )
143             IceDeb.lookup_pts(true);
144     },
145     debButton: function (e) {
146         if ( e.button == 0 )
147             IceDeb.lookup_deb(false)
148         else if ( e.button == 1 )
149             IceDeb.lookup_deb(true);
150     },
151     mlButton: function (e) {
152         if ( e.button == 0 )
153             IceDeb.lookup_ml(false)
154         else if ( e.button == 1 )
155             IceDeb.lookup_ml(true);
156     },
157     ddpoButton: function (e) {
158         if ( e.button == 0 )
159             IceDeb.lookup_ddpo(false)
160         else if ( e.button == 1 )
161             IceDeb.lookup_ddpo(true);
162     },
163     builddButton: function (e) {
164         if ( e.button == 0 )
165             IceDeb.lookup_buildd(false)
166         else if ( e.button == 1 )
167             IceDeb.lookup_buildd(true);
168     }
169 }
170