|
1 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 // browser.display.languageList LOCK ALL when LOCKED |
|
7 |
|
8 const kDefaultFontType = "font.default.%LANG%"; |
|
9 const kFontNameFmtSerif = "font.name.serif.%LANG%"; |
|
10 const kFontNameFmtSansSerif = "font.name.sans-serif.%LANG%"; |
|
11 const kFontNameFmtMonospace = "font.name.monospace.%LANG%"; |
|
12 const kFontNameListFmtSerif = "font.name-list.serif.%LANG%"; |
|
13 const kFontNameListFmtSansSerif = "font.name-list.sans-serif.%LANG%"; |
|
14 const kFontNameListFmtMonospace = "font.name-list.monospace.%LANG%"; |
|
15 const kFontSizeFmtVariable = "font.size.variable.%LANG%"; |
|
16 const kFontSizeFmtFixed = "font.size.fixed.%LANG%"; |
|
17 const kFontMinSizeFmt = "font.minimum-size.%LANG%"; |
|
18 |
|
19 var gFontsDialog = { |
|
20 _selectLanguageGroup: function (aLanguageGroup) |
|
21 { |
|
22 var prefs = [{ format: kDefaultFontType, type: "string", element: "defaultFontType", fonttype: null}, |
|
23 { format: kFontNameFmtSerif, type: "fontname", element: "serif", fonttype: "serif" }, |
|
24 { format: kFontNameFmtSansSerif, type: "fontname", element: "sans-serif", fonttype: "sans-serif" }, |
|
25 { format: kFontNameFmtMonospace, type: "fontname", element: "monospace", fonttype: "monospace" }, |
|
26 { format: kFontNameListFmtSerif, type: "unichar", element: null, fonttype: "serif" }, |
|
27 { format: kFontNameListFmtSansSerif, type: "unichar", element: null, fonttype: "sans-serif" }, |
|
28 { format: kFontNameListFmtMonospace, type: "unichar", element: null, fonttype: "monospace" }, |
|
29 { format: kFontSizeFmtVariable, type: "int", element: "sizeVar", fonttype: null }, |
|
30 { format: kFontSizeFmtFixed, type: "int", element: "sizeMono", fonttype: null }, |
|
31 { format: kFontMinSizeFmt, type: "int", element: "minSize", fonttype: null }]; |
|
32 var preferences = document.getElementById("fontPreferences"); |
|
33 for (var i = 0; i < prefs.length; ++i) { |
|
34 var preference = document.getElementById(prefs[i].format.replace(/%LANG%/, aLanguageGroup)); |
|
35 if (!preference) { |
|
36 preference = document.createElement("preference"); |
|
37 var name = prefs[i].format.replace(/%LANG%/, aLanguageGroup); |
|
38 preference.id = name; |
|
39 preference.setAttribute("name", name); |
|
40 preference.setAttribute("type", prefs[i].type); |
|
41 preferences.appendChild(preference); |
|
42 } |
|
43 |
|
44 if (!prefs[i].element) |
|
45 continue; |
|
46 |
|
47 var element = document.getElementById(prefs[i].element); |
|
48 if (element) { |
|
49 element.setAttribute("preference", preference.id); |
|
50 |
|
51 if (prefs[i].fonttype) |
|
52 FontBuilder.buildFontList(aLanguageGroup, prefs[i].fonttype, element); |
|
53 |
|
54 preference.setElementValue(element); |
|
55 } |
|
56 } |
|
57 }, |
|
58 |
|
59 readFontLanguageGroup: function () |
|
60 { |
|
61 var languagePref = document.getElementById("font.language.group"); |
|
62 this._selectLanguageGroup(languagePref.value); |
|
63 return undefined; |
|
64 }, |
|
65 |
|
66 readFontSelection: function (aElement) |
|
67 { |
|
68 // Determine the appropriate value to select, for the following cases: |
|
69 // - there is no setting |
|
70 // - the font selected by the user is no longer present (e.g. deleted from |
|
71 // fonts folder) |
|
72 var preference = document.getElementById(aElement.getAttribute("preference")); |
|
73 if (preference.value) { |
|
74 var fontItems = aElement.getElementsByAttribute("value", preference.value); |
|
75 |
|
76 // There is a setting that actually is in the list. Respect it. |
|
77 if (fontItems.length > 0) |
|
78 return undefined; |
|
79 } |
|
80 |
|
81 var defaultValue = aElement.firstChild.firstChild.getAttribute("value"); |
|
82 var languagePref = document.getElementById("font.language.group"); |
|
83 preference = document.getElementById("font.name-list." + aElement.id + "." + languagePref.value); |
|
84 if (!preference || !preference.hasUserValue) |
|
85 return defaultValue; |
|
86 |
|
87 var fontNames = preference.value.split(","); |
|
88 var stripWhitespace = /^\s*(.*)\s*$/; |
|
89 |
|
90 for (var i = 0; i < fontNames.length; ++i) { |
|
91 var fontName = fontNames[i].replace(stripWhitespace, "$1"); |
|
92 fontItems = aElement.getElementsByAttribute("value", fontName); |
|
93 if (fontItems.length) |
|
94 break; |
|
95 } |
|
96 if (fontItems.length) |
|
97 return fontItems[0].getAttribute("value"); |
|
98 return defaultValue; |
|
99 }, |
|
100 |
|
101 readUseDocumentFonts: function () |
|
102 { |
|
103 var preference = document.getElementById("browser.display.use_document_fonts"); |
|
104 return preference.value == 1; |
|
105 }, |
|
106 |
|
107 writeUseDocumentFonts: function () |
|
108 { |
|
109 var useDocumentFonts = document.getElementById("useDocumentFonts"); |
|
110 return useDocumentFonts.checked ? 1 : 0; |
|
111 } |
|
112 }; |
|
113 |