-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootstrap.js
119 lines (98 loc) · 2.56 KB
/
bootstrap.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
var gNativeWindow;
var gBrowserApp;
function LOG(msg) {
Services.console.logStringMessage("Locale Switcher Add-On -- " + msg);
}
let supported = [
"en-US",
"cs",
"da",
"de",
"es-ES",
"es_ES",
"fi",
"fr",
"ja",
"ko",
"it",
"nb-NO",
"nl",
"pl",
"pt-BR",
"pt-PT",
"ru",
"sk",
"sv-SE",
"zh-CN",
"zh-TW",
];
let menuItems = [];
function addLocaleEntry(locale) {
menuItems.push(gNativeWindow.menu.add({
name: locale,
callback: function () {
gBrowserApp.setLocale(locale);
},
parent: gNativeWindow.menu.toolsMenuID,
}));
}
function loadIntoWindow(window) {
gNativeWindow = window.NativeWindow;
gBrowserApp = window.BrowserApp;
for (let loc of supported) {
addLocaleEntry(loc);
}
}
function unloadFromWindow(window) {
// TODO
}
/**
* bootstrap.js API
*/
var windowListener = {
onOpenWindow: function(aWindow) {
// Wait for the window to finish loading
let domWindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow);
domWindow.addEventListener("load", function() {
domWindow.removeEventListener("load", arguments.callee, false);
loadIntoWindow(domWindow);
}, false);
},
onCloseWindow: function(aWindow) {
},
onWindowTitleChange: function(aWindow, aTitle) {
}
};
function startup(aData, aReason) {
let wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
// Load into any existing windows
let windows = wm.getEnumerator("navigator:browser");
while (windows.hasMoreElements()) {
let domWindow = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
loadIntoWindow(domWindow);
}
// Load into any new windows
wm.addListener(windowListener);
}
function shutdown(aData, aReason) {
// When the application is shutting down we normally don't have to clean
// up any UI changes made
if (aReason == APP_SHUTDOWN)
return;
let wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
// Stop listening for new windows
wm.removeListener(windowListener);
// Unload from any existing windows
let windows = wm.getEnumerator("navigator:browser");
while (windows.hasMoreElements()) {
let domWindow = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
unloadFromWindow(domWindow);
}
}
function install(aData, aReason) {
}
function uninstall(aData, aReason) {
}