]> git.ktnx.net Git - icedeb.git/blob - chrome/content/icedeb.js
061f3cd93cf5edf8716ca239b13fc5505e4bdea7
[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(/^\s+/, '');
41             word = word.replace(/\s+$/, '');
42             word = word.replace(/^#/, '');
43             word = word.replace(/[-:\/,.]$/, '');
44         } while ( oldword != word );
45
46         return word;
47     },
48     lookup_bts: function(in_new) {
49         var bug = IceDeb.trim_keyword(IceDeb.getClipboardText());
50         if (!bug) return null;
51         var uri="http://bugs.debian.org/" + bug;
52
53         if (in_new) {
54             var b = getBrowser();
55             var new_tab = b.addTab(uri);
56             b.selectedTab = new_tab;
57         }
58         else {
59             loadURI(uri);
60         }
61     },
62     lookup_pts: function(in_new) {
63         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
64         if (!pkg) return null;
65         var uri="http://packages.qa.debian.org/" + pkg;
66
67         if (in_new) {
68             var b = getBrowser();
69             var new_tab = b.addTab(uri);
70             b.selectedTab = new_tab;
71         }
72         else {
73             loadURI(uri);
74         }
75     },
76     lookup_deb: function(in_new) {
77         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
78         if (!pkg) return null;
79         var uri="http://packages.debian.org/" + pkg;
80
81         if (in_new) {
82             var b = getBrowser();
83             var new_tab = b.addTab(uri);
84             b.selectedTab = new_tab;
85         }
86         else {
87             loadURI(uri);
88         }
89     },
90
91     btsButton: function (e) {
92         if ( e.button == 0 )
93             IceDeb.lookup_bts(false)
94         else if ( e.button == 1 )
95             IceDeb.lookup_bts(true);
96     },
97     ptsButton: function (e) {
98         if ( e.button == 0 )
99             IceDeb.lookup_pts(false)
100         else if ( e.button == 1 )
101             IceDeb.lookup_pts(true);
102     },
103     debButton: function (e) {
104         if ( e.button == 0 )
105             IceDeb.lookup_deb(false)
106         else if ( e.button == 1 )
107             IceDeb.lookup_deb(true);
108     }
109 }
110