]> git.ktnx.net Git - icedeb.git/blob - chrome/content/icedeb.js
put clipboard retrieval in a routine, hook to DOMContentLoaded
[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         if (typeof(trans.init) === 'function')
12             trans.init(null);
13
14         trans.addDataFlavor("text/unicode");
15         clip.getData(trans,
16                 clip.supportsSelectionClipboard()
17                 ? clip.kSelectionClipboard
18                 : clip.kGlobalClipboard
19         );
20
21         var s = new Object;
22         var p;
23         var len = new Object;
24         trans.getTransferData("text/unicode", s, len);
25
26         var text = null;
27         var res;
28
29         if (s)
30             p = s.value.QueryInterface(Components.interfaces.nsISupportsString, res);
31         if (p)
32             text = p.data.substring(0, len.value / 2);
33
34         return text;
35     },
36     trim_keyword: function(word) {
37         if (!word) return word;
38
39         var oldword;
40         do {
41             oldword = word;
42
43             word = word.replace(/^[^a-zA-Z0-9]+/, '');
44             word = word.replace(/[^a-zA-Z0-9]+$/, '');
45             word = word.replace(/^Bug#/i, '');
46         } while ( oldword != word );
47
48         return word;
49     },
50     lookup_bts: function(in_new) {
51         var bug = IceDeb.trim_keyword(IceDeb.getClipboardText());
52         if (!bug) return null;
53         var uri="https://bugs.debian.org/" + bug;
54
55         if (in_new) {
56             var b = getBrowser();
57             var new_tab = b.addTab(uri);
58             b.selectedTab = new_tab;
59         }
60         else {
61             loadURI(uri);
62         }
63     },
64     lookup_pts: function(in_new) {
65         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
66         if (!pkg) return null;
67         var uri="https://tracker.debian.org/" + pkg;
68
69         if (in_new) {
70             var b = getBrowser();
71             var new_tab = b.addTab(uri);
72             b.selectedTab = new_tab;
73         }
74         else {
75             loadURI(uri);
76         }
77     },
78     lookup_deb: function(in_new) {
79         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
80         if (!pkg) return null;
81         var uri="https://packages.debian.org/" + pkg;
82
83         if (in_new) {
84             var b = getBrowser();
85             var new_tab = b.addTab(uri);
86             b.selectedTab = new_tab;
87         }
88         else {
89             loadURI(uri);
90         }
91     },
92     lookup_ml: function(in_new) {
93         var msg_id = IceDeb.trim_keyword(IceDeb.getClipboardText());
94         if (!msg_id) msg_id = '';
95         var uri="https://lists.debian.org/msgid-search/" + msg_id;
96
97         if (in_new) {
98             var b = getBrowser();
99             var new_tab = b.addTab(uri);
100             b.selectedTab = new_tab;
101         }
102         else {
103             loadURI(uri);
104         }
105     },
106     lookup_ddpo: function(in_new) {
107         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
108         var uri="https://qa.debian.org/developer.php";
109
110         if (keyword) uri += "?login=" + keyword;
111
112         if (in_new) {
113             var b = getBrowser();
114             var new_tab = b.addTab(uri);
115             b.selectedTab = new_tab;
116         }
117         else {
118             loadURI(uri);
119         }
120     },
121     lookup_buildd: function(in_new) {
122         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
123         var uri="https://buildd.debian.org/";
124
125         if (keyword) uri += keyword;
126
127         if (in_new) {
128             var b = getBrowser();
129             var new_tab = b.addTab(uri);
130             b.selectedTab = new_tab;
131         }
132         else {
133             loadURI(uri);
134         }
135     },
136     lookup_security: function(in_new) {
137         var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText());
138         var uri="https://security-tracker.debian.org/";
139
140         if (keyword) uri += "tracker/" + keyword;
141
142         if (in_new) {
143             var b = getBrowser();
144             var new_tab = b.addTab(uri);
145             b.selectedTab = new_tab;
146         }
147         else {
148             loadURI(uri);
149         }
150     },
151
152     btsButton: function (e) {
153         if ( e.button == 0 )
154             IceDeb.lookup_bts(false)
155         else if ( e.button == 1 )
156             IceDeb.lookup_bts(true);
157     },
158     ptsButton: function (e) {
159         if ( e.button == 0 )
160             IceDeb.lookup_pts(false)
161         else if ( e.button == 1 )
162             IceDeb.lookup_pts(true);
163     },
164     debButton: function (e) {
165         if ( e.button == 0 )
166             IceDeb.lookup_deb(false)
167         else if ( e.button == 1 )
168             IceDeb.lookup_deb(true);
169     },
170     mlButton: function (e) {
171         if ( e.button == 0 )
172             IceDeb.lookup_ml(false)
173         else if ( e.button == 1 )
174             IceDeb.lookup_ml(true);
175     },
176     ddpoButton: function (e) {
177         if ( e.button == 0 )
178             IceDeb.lookup_ddpo(false)
179         else if ( e.button == 1 )
180             IceDeb.lookup_ddpo(true);
181     },
182     builddButton: function (e) {
183         if ( e.button == 0 )
184             IceDeb.lookup_buildd(false)
185         else if ( e.button == 1 )
186             IceDeb.lookup_buildd(true);
187     },
188     securityButton: function (e) {
189         if ( e.button == 0 )
190             IceDeb.lookup_security(false)
191         else if ( e.button == 1 )
192             IceDeb.lookup_security(true);
193     }
194 }
195