browser/components/preferences/fonts.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/browser/components/preferences/fonts.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,113 @@
     1.4 +/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +// browser.display.languageList LOCK ALL when LOCKED
    1.10 +
    1.11 +const kDefaultFontType          = "font.default.%LANG%";
    1.12 +const kFontNameFmtSerif         = "font.name.serif.%LANG%";
    1.13 +const kFontNameFmtSansSerif     = "font.name.sans-serif.%LANG%";
    1.14 +const kFontNameFmtMonospace     = "font.name.monospace.%LANG%";
    1.15 +const kFontNameListFmtSerif     = "font.name-list.serif.%LANG%";
    1.16 +const kFontNameListFmtSansSerif = "font.name-list.sans-serif.%LANG%";
    1.17 +const kFontNameListFmtMonospace = "font.name-list.monospace.%LANG%";
    1.18 +const kFontSizeFmtVariable      = "font.size.variable.%LANG%";
    1.19 +const kFontSizeFmtFixed         = "font.size.fixed.%LANG%";
    1.20 +const kFontMinSizeFmt           = "font.minimum-size.%LANG%";
    1.21 +
    1.22 +var gFontsDialog = {
    1.23 +  _selectLanguageGroup: function (aLanguageGroup)
    1.24 +  {
    1.25 +    var prefs = [{ format: kDefaultFontType,          type: "string",   element: "defaultFontType", fonttype: null},
    1.26 +                 { format: kFontNameFmtSerif,         type: "fontname", element: "serif",      fonttype: "serif"       },
    1.27 +                 { format: kFontNameFmtSansSerif,     type: "fontname", element: "sans-serif", fonttype: "sans-serif"  },
    1.28 +                 { format: kFontNameFmtMonospace,     type: "fontname", element: "monospace",  fonttype: "monospace"   },
    1.29 +                 { format: kFontNameListFmtSerif,     type: "unichar",  element: null,         fonttype: "serif"       },
    1.30 +                 { format: kFontNameListFmtSansSerif, type: "unichar",  element: null,         fonttype: "sans-serif"  },
    1.31 +                 { format: kFontNameListFmtMonospace, type: "unichar",  element: null,         fonttype: "monospace"   },
    1.32 +                 { format: kFontSizeFmtVariable,      type: "int",      element: "sizeVar",    fonttype: null          },
    1.33 +                 { format: kFontSizeFmtFixed,         type: "int",      element: "sizeMono",   fonttype: null          },
    1.34 +                 { format: kFontMinSizeFmt,           type: "int",      element: "minSize",    fonttype: null          }];
    1.35 +    var preferences = document.getElementById("fontPreferences");
    1.36 +    for (var i = 0; i < prefs.length; ++i) {
    1.37 +      var preference = document.getElementById(prefs[i].format.replace(/%LANG%/, aLanguageGroup));
    1.38 +      if (!preference) {
    1.39 +        preference = document.createElement("preference");
    1.40 +        var name = prefs[i].format.replace(/%LANG%/, aLanguageGroup);
    1.41 +        preference.id = name;
    1.42 +        preference.setAttribute("name", name);
    1.43 +        preference.setAttribute("type", prefs[i].type);
    1.44 +        preferences.appendChild(preference);
    1.45 +      }
    1.46 +      
    1.47 +      if (!prefs[i].element)
    1.48 +        continue;
    1.49 +        
    1.50 +      var element = document.getElementById(prefs[i].element);
    1.51 +      if (element) {
    1.52 +        element.setAttribute("preference", preference.id);
    1.53 +      
    1.54 +        if (prefs[i].fonttype)
    1.55 +          FontBuilder.buildFontList(aLanguageGroup, prefs[i].fonttype, element);
    1.56 +
    1.57 +        preference.setElementValue(element);
    1.58 +      }
    1.59 +    }
    1.60 +  },
    1.61 +  
    1.62 +  readFontLanguageGroup: function ()
    1.63 +  {
    1.64 +    var languagePref = document.getElementById("font.language.group");
    1.65 +    this._selectLanguageGroup(languagePref.value);
    1.66 +    return undefined;
    1.67 +  },
    1.68 +  
    1.69 +  readFontSelection: function (aElement)
    1.70 +  {
    1.71 +    // Determine the appropriate value to select, for the following cases:
    1.72 +    // - there is no setting 
    1.73 +    // - the font selected by the user is no longer present (e.g. deleted from
    1.74 +    //   fonts folder)
    1.75 +    var preference = document.getElementById(aElement.getAttribute("preference"));
    1.76 +    if (preference.value) {
    1.77 +      var fontItems = aElement.getElementsByAttribute("value", preference.value);
    1.78 +    
    1.79 +      // There is a setting that actually is in the list. Respect it.
    1.80 +      if (fontItems.length > 0)
    1.81 +        return undefined;
    1.82 +    }
    1.83 +    
    1.84 +    var defaultValue = aElement.firstChild.firstChild.getAttribute("value");
    1.85 +    var languagePref = document.getElementById("font.language.group");
    1.86 +    preference = document.getElementById("font.name-list." + aElement.id + "." + languagePref.value);
    1.87 +    if (!preference || !preference.hasUserValue)
    1.88 +      return defaultValue;
    1.89 +    
    1.90 +    var fontNames = preference.value.split(",");
    1.91 +    var stripWhitespace = /^\s*(.*)\s*$/;
    1.92 +    
    1.93 +    for (var i = 0; i < fontNames.length; ++i) {
    1.94 +      var fontName = fontNames[i].replace(stripWhitespace, "$1");
    1.95 +      fontItems = aElement.getElementsByAttribute("value", fontName);
    1.96 +      if (fontItems.length)
    1.97 +        break;
    1.98 +    }
    1.99 +    if (fontItems.length)
   1.100 +      return fontItems[0].getAttribute("value");
   1.101 +    return defaultValue;
   1.102 +  },
   1.103 +  
   1.104 +  readUseDocumentFonts: function ()
   1.105 +  {
   1.106 +    var preference = document.getElementById("browser.display.use_document_fonts");
   1.107 +    return preference.value == 1;
   1.108 +  },
   1.109 +  
   1.110 +  writeUseDocumentFonts: function ()
   1.111 +  {
   1.112 +    var useDocumentFonts = document.getElementById("useDocumentFonts");
   1.113 +    return useDocumentFonts.checked ? 1 : 0;
   1.114 +  }
   1.115 +};
   1.116 +

mercurial