encapsulate all functions in a single global object
[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 str = new Object;
19         var strLength = new Object;
20         trans.getTransferData("text/unicode", str, strLength);
21
22         var text = null;
23
24         if (str) str  = str.value.QueryInterface(Components.interfaces.nsISupportsString);
25         if (str) text = str.data.substring(0, strLength.value / 2);
26
27         return text;
28     },
29     trim_keyword: function(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     lookup_bts: function(in_new) {
45         var bug = IceDeb.trim_keyword(IceDeb.getClipboardText());
46         if (!bug) return null;
47         var uri="http://bugs.debian.org/" + bug;
48
49         if (in_new) {
50             var b = getBrowser();
51             var new_tab = b.addTab(uri);
52             b.selectedTab = new_tab;
53         }
54         else {
55             loadURI(uri);
56         }
57     },
58     lookup_pts: function(in_new) {
59         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
60         if (!pkg) return null;
61         var uri="http://packages.qa.debian.org/" + pkg;
62
63         if (in_new) {
64             var b = getBrowser();
65             var new_tab = b.addTab(uri);
66             b.selectedTab = new_tab;
67         }
68         else {
69             loadURI(uri);
70         }
71     },
72     lookup_deb: function(in_new) {
73         var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText());
74         if (!pkg) return null;
75         var uri="http://packages.debian.org/" + pkg;
76
77         if (in_new) {
78             var b = getBrowser();
79             var new_tab = b.addTab(uri);
80             b.selectedTab = new_tab;
81         }
82         else {
83             loadURI(uri);
84         }
85     },
86
87     btsButton: function (e) {
88         if ( e.button == 0 )
89             IceDeb.lookup_bts(false)
90         else if ( e.button == 1 )
91             IceDeb.lookup_bts(true);
92     },
93     ptsButton: function (e) {
94         if ( e.button == 0 )
95             IceDeb.lookup_pts(false)
96         else if ( e.button == 1 )
97             IceDeb.lookup_pts(true);
98     },
99     debButton: function (e) {
100         if ( e.button == 0 )
101             IceDeb.lookup_deb(false)
102         else if ( e.button == 1 )
103             IceDeb.lookup_deb(true);
104     }
105 }
106