browser/components/preferences/fonts.js

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     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/. */
     6 // browser.display.languageList LOCK ALL when LOCKED
     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%";
    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       }
    44       if (!prefs[i].element)
    45         continue;
    47       var element = document.getElementById(prefs[i].element);
    48       if (element) {
    49         element.setAttribute("preference", preference.id);
    51         if (prefs[i].fonttype)
    52           FontBuilder.buildFontList(aLanguageGroup, prefs[i].fonttype, element);
    54         preference.setElementValue(element);
    55       }
    56     }
    57   },
    59   readFontLanguageGroup: function ()
    60   {
    61     var languagePref = document.getElementById("font.language.group");
    62     this._selectLanguageGroup(languagePref.value);
    63     return undefined;
    64   },
    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);
    76       // There is a setting that actually is in the list. Respect it.
    77       if (fontItems.length > 0)
    78         return undefined;
    79     }
    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;
    87     var fontNames = preference.value.split(",");
    88     var stripWhitespace = /^\s*(.*)\s*$/;
    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   },
   101   readUseDocumentFonts: function ()
   102   {
   103     var preference = document.getElementById("browser.display.use_document_fonts");
   104     return preference.value == 1;
   105   },
   107   writeUseDocumentFonts: function ()
   108   {
   109     var useDocumentFonts = document.getElementById("useDocumentFonts");
   110     return useDocumentFonts.checked ? 1 : 0;
   111   }
   112 };

mercurial