зеркало из https://github.com/mozilla/pjs.git
Bug 394522: fix browser pane issues; r=Callek, sr=neil
This commit is contained in:
Родитель
041c4d012c
Коммит
06fd99065e
|
@ -109,13 +109,7 @@
|
|||
<content dlgbuttons="accept,cancel" persist="lastSelected screenX screenY"
|
||||
closebuttonlabel="&preferencesCloseButton.label;"
|
||||
closebuttonaccesskey="&preferencesCloseButton.accesskey;"
|
||||
role="dialog"
|
||||
#ifdef XP_WIN
|
||||
title="&preferencesDefaultTitleWin.title;"
|
||||
#else
|
||||
title="&preferencesDefaultTitleMac.title;"
|
||||
#endif
|
||||
>
|
||||
role="dialog">
|
||||
<xul:radiogroup anonid="selector" orient="horizontal" class="paneSelector chromeclass-toolbar"
|
||||
role="listbox"/> <!-- Expose to accessibility APIs as a listbox -->
|
||||
<xul:hbox flex="1" class="paneDeckContainer">
|
||||
|
|
|
@ -192,15 +192,6 @@ comm.jar:
|
|||
content/communicator/pref/pref-tabs.xul (pref/pref-tabs.xul)
|
||||
content/communicator/pref/pref-winhooks.js (pref/pref-winhooks.js)
|
||||
content/communicator/pref/pref-winhooks.xul (pref/pref-winhooks.xul)
|
||||
#ifdef XP_MACOSX
|
||||
content/communicator/pref/platformPrefOverlay.xul (pref/mac/platformPrefOverlay.xul)
|
||||
#else
|
||||
#ifdef XP_WIN32
|
||||
content/communicator/pref/platformPrefOverlay.xul (pref/win/platformPrefOverlay.xul)
|
||||
#else
|
||||
content/communicator/pref/platformPrefOverlay.xul (pref/unix/platformPrefOverlay.xul)
|
||||
#endif
|
||||
#endif
|
||||
content/communicator/profile/profileSelection.js (profile/profileSelection.js)
|
||||
content/communicator/profile/profileSelection.xul (profile/profileSelection.xul)
|
||||
content/communicator/related/related-panel.js (related/related-panel.js)
|
||||
|
|
|
@ -44,13 +44,57 @@
|
|||
// The contents of this file will be loaded into the scope of the object
|
||||
// <prefpane id="navigator_pane">!
|
||||
|
||||
// platform integration
|
||||
const PFINT_NOT_DEFAULT = 0;
|
||||
const PFINT_DEFAULT = 1;
|
||||
const PFINT_PENDING = 2;
|
||||
|
||||
|
||||
// put "global" definitions here for easy reference
|
||||
var gHomePageGroupIsSet = "";
|
||||
var gDefaultPage = "";
|
||||
var gHomePages = [];
|
||||
var gDefaultHomePage = "";
|
||||
var gHomePagePrefPeak = 0;
|
||||
var gPreferences = null;
|
||||
|
||||
|
||||
function GetHomePageValue()
|
||||
// <preferences> access helper methods
|
||||
function GetHomePagePrefCount()
|
||||
{
|
||||
return document.getElementById("browser.startup.homepage.count").value;
|
||||
}
|
||||
|
||||
function SetHomePagePrefCount(aCount)
|
||||
{
|
||||
document.getElementById("browser.startup.homepage.count").value = aCount;
|
||||
}
|
||||
|
||||
function GetHomePagePrefName(aIndex)
|
||||
{
|
||||
var prefname = "browser.startup.homepage";
|
||||
if (aIndex > 0)
|
||||
prefname += "." + aIndex;
|
||||
return prefname;
|
||||
}
|
||||
|
||||
function GetHomePagePref(aIndex)
|
||||
{
|
||||
// return the <preference> at aIndex
|
||||
return document.getElementById(GetHomePagePrefName(aIndex));
|
||||
}
|
||||
|
||||
function AddHomePagePref(aIndex)
|
||||
{
|
||||
// create new <preference> for aIndex
|
||||
var pref = document.createElement("preference");
|
||||
var prefname = GetHomePagePrefName(aIndex);
|
||||
pref.setAttribute("id", prefname);
|
||||
pref.setAttribute("name", prefname);
|
||||
pref.setAttribute("type", "wstring");
|
||||
gPreferences.appendChild(pref);
|
||||
return pref;
|
||||
}
|
||||
|
||||
// homepage group textbox helper methods
|
||||
function GetHomePageGroup()
|
||||
{
|
||||
return document.getElementById("browserStartupHomepage").value;
|
||||
}
|
||||
|
@ -60,21 +104,22 @@ function SetHomePageValue(aValue)
|
|||
document.getElementById("browserStartupHomepage").value = aValue;
|
||||
}
|
||||
|
||||
// helper methods for reading current page URIs
|
||||
function GetMostRecentBrowser()
|
||||
{
|
||||
var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||
.getService(Components.interfaces.nsIWindowMediator);
|
||||
var browserWindow = windowManager.getMostRecentWindow("navigator:browser");
|
||||
return browserWindow && browserWindow.document.getElementById("content");
|
||||
return browserWindow && browserWindow.getBrowser();
|
||||
}
|
||||
|
||||
function GetCurrentPage()
|
||||
{
|
||||
var tabbrowser = GetMostRecentBrowser();
|
||||
return tabbrowser && tabbrowser.currentURI.spec;
|
||||
return tabbrowser && tabbrowser.currentURI.spec || ""; // ensure string
|
||||
}
|
||||
|
||||
function GetCurrentPageGroup()
|
||||
function GetCurrentGroup()
|
||||
{
|
||||
var uris = [];
|
||||
var tabbrowser = GetMostRecentBrowser();
|
||||
|
@ -85,63 +130,103 @@ function GetCurrentPageGroup()
|
|||
for (var i = 0; i < browsersLen; ++i)
|
||||
uris[i] = browsers[i].currentURI.spec;
|
||||
}
|
||||
return uris;
|
||||
return uris.join("\n");
|
||||
}
|
||||
|
||||
// synchronize button states with current input
|
||||
function CanonifyURLList(aList)
|
||||
{
|
||||
return (aList + "\n").replace(/\n+/g, "\n");
|
||||
}
|
||||
|
||||
function UpdateHomePageButtons()
|
||||
{
|
||||
var homepage = GetHomePageValue();
|
||||
var homePageGroup = CanonifyURLList(GetHomePageGroup());
|
||||
var currentPage = CanonifyURLList(GetCurrentPage());
|
||||
var currentGroup = CanonifyURLList(GetCurrentGroup());
|
||||
|
||||
// disable "current page" button if current page is already the homepage
|
||||
var currentPageButton = document.getElementById("browserUseCurrent");
|
||||
currentPageButton.disabled = (homepage == GetCurrentPage());
|
||||
currentPageButton.disabled = (homePageGroup == currentPage) ||
|
||||
(currentPage == "\n");
|
||||
|
||||
// disable "default page" button if default page is already the homepage
|
||||
var defaultPageButton = document.getElementById("browserUseDefault");
|
||||
defaultPageButton.disabled = (homepage == gDefaultPage);
|
||||
// disable "current group" button if current group already set or no group
|
||||
var currentGroupButton = document.getElementById("browserUseCurrentGroup");
|
||||
currentGroupButton.disabled = (homePageGroup == currentGroup) ||
|
||||
(currentGroup == currentPage);
|
||||
|
||||
// homePages.length == 1 if:
|
||||
// - we're called from startup and there's one homepage
|
||||
// - we're called from "current page" or "choose file"
|
||||
// - the user typed something in the location field
|
||||
// in those cases we only want to enable the button if:
|
||||
// - there's more than one tab in the most recent browser
|
||||
// otherwise we have a group of homepages:
|
||||
// - we're called from startup and there's a group of homepages
|
||||
// - we're called from "current group"
|
||||
// in those cases we only want to enable the button if:
|
||||
// - there's more than one tab in the most recent browser and
|
||||
// the current group doesn't match the group of homepages
|
||||
var enabled = false;
|
||||
if (gHomePages.length == 1)
|
||||
// disable "restore" button if homepage hasn't changed
|
||||
var restoreButton = document.getElementById("browserUseDefault");
|
||||
restoreButton.disabled = (homePageGroup == gDefaultHomePage);
|
||||
}
|
||||
|
||||
function UpdateHomePagePrefs()
|
||||
{
|
||||
// update the list of <preference>s to the current settings
|
||||
var newCount = 0; // current number of homepages
|
||||
var homePageGroup = CanonifyURLList(GetHomePageGroup()).split("\n");
|
||||
if (homePageGroup[0])
|
||||
{
|
||||
var browser = GetMostRecentBrowser();
|
||||
enabled = !!browser && (browser.browsers.length > 1);
|
||||
// we have at least one homepage
|
||||
// (the last index is always empty due to canonification)
|
||||
newCount = homePageGroup.length - 1
|
||||
for (var i = 0; i < newCount; ++i)
|
||||
{
|
||||
var pref = GetHomePagePref(i) || AddHomePagePref(i);
|
||||
pref.value = homePageGroup[i];
|
||||
}
|
||||
}
|
||||
|
||||
// work around bug 410562:
|
||||
// reset unneeded preferences on dialogaccept only
|
||||
|
||||
// update pref count watermark before setting new number of homepages
|
||||
var alreadyRequested = (gHomePagePrefPeak > 0);
|
||||
var oldCount = GetHomePagePrefCount();
|
||||
if (gHomePagePrefPeak < oldCount)
|
||||
gHomePagePrefPeak = oldCount;
|
||||
SetHomePagePrefCount(newCount);
|
||||
|
||||
var needCleanup = (newCount < gHomePagePrefPeak);
|
||||
if (document.documentElement.instantApply)
|
||||
{
|
||||
// throw away unneeded preferences now
|
||||
if (needCleanup)
|
||||
HomePagePrefCleanup();
|
||||
}
|
||||
else if (needCleanup != alreadyRequested)
|
||||
{
|
||||
// cleanup necessity changed
|
||||
if (needCleanup)
|
||||
{
|
||||
// register OK handler for the capturing phase
|
||||
window.addEventListener("dialogaccept", this.HomePagePrefCleanup, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
var currentURIs = GetCurrentPageGroup();
|
||||
if (currentURIs.length == gHomePages.length)
|
||||
{
|
||||
for (var i = 0; !enabled && (i < gHomePages.length); ++i)
|
||||
{
|
||||
if (gHomePages[i] != currentURIs[i])
|
||||
enabled = true;
|
||||
}
|
||||
}
|
||||
else if (currentURIs.length > 1)
|
||||
{
|
||||
enabled = true;
|
||||
// no cleanup necessary, remove OK handler
|
||||
window.removeEventListener("dialogaccept", this.HomePagePrefCleanup, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var currentPageGroupButton = document.getElementById("browserUseCurrentGroup");
|
||||
currentPageGroupButton.disabled = !enabled;
|
||||
function HomePagePrefCleanup()
|
||||
{
|
||||
// remove the old user prefs values that we didn't overwrite
|
||||
var count = GetHomePagePrefCount();
|
||||
for (var j = count; j < gHomePagePrefPeak; ++j)
|
||||
{
|
||||
// clear <preference>
|
||||
var pref = GetHomePagePref(j);
|
||||
pref.reset();
|
||||
pref.parentNode.removeChild(pref);
|
||||
}
|
||||
gHomePagePrefPeak = 0; // cleanup done
|
||||
}
|
||||
|
||||
function UpdateHomePageListFromInput()
|
||||
{
|
||||
gHomePages = [GetHomePageValue()];
|
||||
UpdateHomePagePrefs();
|
||||
UpdateHomePageButtons();
|
||||
}
|
||||
|
||||
|
@ -175,134 +260,155 @@ function SetHomePageToCurrentPage()
|
|||
UpdateHomePageList(GetCurrentPage());
|
||||
}
|
||||
|
||||
function SetHomePageToDefaultPage()
|
||||
{
|
||||
UpdateHomePageList(gDefaultPage);
|
||||
}
|
||||
|
||||
function SetHomePageToCurrentGroup()
|
||||
{
|
||||
var uris = GetCurrentPageGroup();
|
||||
if (uris.length > 0)
|
||||
{
|
||||
SetHomePageValue(gHomePageGroupIsSet);
|
||||
gHomePages = uris;
|
||||
UpdateHomePageButtons();
|
||||
}
|
||||
UpdateHomePageList(GetCurrentGroup());
|
||||
}
|
||||
|
||||
function SetHomePageToDefaultPage()
|
||||
{
|
||||
UpdateHomePageList(gDefaultHomePage);
|
||||
}
|
||||
|
||||
function Startup()
|
||||
{
|
||||
// initialize global strings
|
||||
gHomePageGroupIsSet = document.getElementById("bundle_prefutilities")
|
||||
.getString("groupIsSet");
|
||||
gDefaultPage = document.getElementById("browser.startup.homepage").value;
|
||||
|
||||
// initialize behaviourDeck
|
||||
SetPageAccessKeys(document.getElementById("behaviourDeck").firstChild);
|
||||
|
||||
// homepage groups can have an arbitrary number of preferences,
|
||||
// homepage groups can have an arbitrary number of <preference>s,
|
||||
// thus we create them manually here
|
||||
var uris = [];
|
||||
var preferences = document.getElementById("navigator_preferences");
|
||||
var count = document.getElementById("browser.startup.homepage.count").value;
|
||||
|
||||
uris[0] = gDefaultPage;
|
||||
for (var i = 1; i < count; ++i)
|
||||
gPreferences = document.getElementById("navigator_preferences");
|
||||
var homePageGroup = "";
|
||||
var count = GetHomePagePrefCount();
|
||||
for (var i = 0; i < count; ++i)
|
||||
{
|
||||
// add new <preference>
|
||||
var pref = document.createElement("preference");
|
||||
var prefname = "browser.startup.homepage." + i;
|
||||
pref.setAttribute("id", prefname);
|
||||
pref.setAttribute("name", prefname);
|
||||
pref.setAttribute("type", "string");
|
||||
preferences.appendChild(pref);
|
||||
|
||||
// remember its URIs
|
||||
try
|
||||
{
|
||||
uris[i] = pref.value;
|
||||
var pref = AddHomePagePref(i);
|
||||
homePageGroup += pref.value + "\n";
|
||||
}
|
||||
catch(e) {}
|
||||
}
|
||||
gHomePages = uris;
|
||||
|
||||
if (uris.length == 1)
|
||||
SetHomePageValue(uris[0]);
|
||||
else
|
||||
SetHomePageValue(gHomePageGroupIsSet);
|
||||
gDefaultHomePage = CanonifyURLList(GetHomePagePref(0).defaultValue);
|
||||
SetHomePageValue(homePageGroup);
|
||||
UpdateHomePageButtons();
|
||||
|
||||
// register our OK handler for the capturing(!) phase
|
||||
window.addEventListener("dialogaccept", this.OnDialogAccept, true);
|
||||
}
|
||||
|
||||
function OnDialogAccept()
|
||||
{
|
||||
// OK could have been hit from another pane,
|
||||
// so we need to get at our data the long but safer way
|
||||
var navigator_pane = document.getElementById("navigator_pane");
|
||||
|
||||
// toolkit will save all our data for, we just need to make sure it's set
|
||||
var preferences = document.getElementById("navigator_preferences");
|
||||
var uris = navigator_pane.gHomePages;
|
||||
var uriCount = uris.length;
|
||||
if (uriCount > 0)
|
||||
document.getElementById("browser.startup.homepage").value = uris[0];
|
||||
var i = 1;
|
||||
for (; i < uriCount; ++i)
|
||||
{
|
||||
// store current value
|
||||
var prefname = "browser.startup.homepage." + i;
|
||||
var pref = document.getElementById(prefname);
|
||||
if (!pref)
|
||||
{
|
||||
pref = document.createElement("preference");
|
||||
pref.setAttribute("id", prefname);
|
||||
pref.setAttribute("name", prefname);
|
||||
pref.setAttribute("type", "string");
|
||||
preferences.appendChild(pref);
|
||||
}
|
||||
pref.value = uris[i];
|
||||
}
|
||||
|
||||
// remove the old user prefs values that we didn't overwrite
|
||||
var countPref = document.getElementById("browser.startup.homepage.count");
|
||||
var oldCount = countPref.value;
|
||||
for (; i < oldCount; ++i)
|
||||
{
|
||||
// clear old pref
|
||||
var prefname = "browser.startup.homepage." + i;
|
||||
var pref = document.getElementById(prefname);
|
||||
if (pref)
|
||||
{
|
||||
pref.reset();
|
||||
pref.parentNode.removeChild(pref);
|
||||
}
|
||||
}
|
||||
countPref.value = uris.length;
|
||||
}
|
||||
|
||||
// the following functions may seem weird, but they are needed to avoid
|
||||
// accesskey clashes with hidden deck panes
|
||||
function SetPageAccessKeys(aGroup)
|
||||
{
|
||||
var nodes = aGroup.childNodes;
|
||||
for (var i = 0; i < nodes.length; ++i)
|
||||
nodes[i].accessKey = nodes[i].getAttribute("ak");
|
||||
}
|
||||
|
||||
function RemovePageAccessKeys(aGroup)
|
||||
{
|
||||
var nodes = aGroup.childNodes;
|
||||
for (var i = 0; i < nodes.length; ++i)
|
||||
nodes[i].accessKey = '';
|
||||
// platform integration
|
||||
InitPlatformIntegration();
|
||||
}
|
||||
|
||||
function SwitchPage(aIndex)
|
||||
{
|
||||
var deck = document.getElementById("behaviourDeck");
|
||||
RemovePageAccessKeys(deck.selectedPanel);
|
||||
deck.selectedIndex = aIndex;
|
||||
SetPageAccessKeys(deck.selectedPanel);
|
||||
document.getElementById("behaviourDeck").selectedIndex = aIndex;
|
||||
}
|
||||
|
||||
|
||||
// platform integration
|
||||
|
||||
function ApplySetAsDefaultBrowser()
|
||||
{
|
||||
// In future, we will use the Shell Service here,
|
||||
// for now, just use WinHooks.
|
||||
window.gWinHooks.winhooks.settings = window.gWinHooks.prefs;
|
||||
}
|
||||
|
||||
function UpdateDefaultBrowserGroup()
|
||||
{
|
||||
// set description and button state according to integration setting
|
||||
var state = window.gWinHooks.state;
|
||||
var desc = document.getElementById("defaultBrowserDesc");
|
||||
desc.textContent = desc.getAttribute("desc" + state);
|
||||
document.getElementById("defaultBrowserButton").disabled = (state != PFINT_NOT_DEFAULT);
|
||||
}
|
||||
|
||||
function InitPlatformIntegration()
|
||||
{
|
||||
// In future, we will ask the Shell Service about platform integration here,
|
||||
// for now, just check WinHooks.
|
||||
var showDefaultBrowserGroup = /Win/.test(navigator.platform);
|
||||
document.getElementById("defaultBrowserGroup").hidden = !showDefaultBrowserGroup;
|
||||
if (!showDefaultBrowserGroup)
|
||||
return;
|
||||
|
||||
// Determine if we have been selected as the default browser already, and
|
||||
// enable/disable the "Set As Default" button accordingly.
|
||||
|
||||
// We store our state info in the same place as the code in pref-winhooks.js
|
||||
// uses so that this panel and the Advanced/System panel are kept in sync.
|
||||
if (!("gWinHooks" in window))
|
||||
{
|
||||
// Neither the Advanced/System panel nor this panel has appeared.
|
||||
// Initialize the state information.
|
||||
window.gWinHooks = {};
|
||||
|
||||
// Get winhooks service.
|
||||
window.gWinHooks.winhooks = Components.classes["@mozilla.org/winhooks;1"]
|
||||
.getService(Components.interfaces.nsIWindowsHooks);
|
||||
|
||||
// Extract current settings (these are what the user has checked on
|
||||
// the Advanced/System panel).
|
||||
window.gWinHooks.prefs = window.gWinHooks.winhooks.settings;
|
||||
}
|
||||
var winHooks = window.gWinHooks;
|
||||
winHooks.state = PFINT_NOT_DEFAULT;
|
||||
|
||||
// Start by checking http/https/ftp and html/xhtml/xml.
|
||||
var prefs = winHooks.prefs;
|
||||
if (prefs.isHandlingHTTP &&
|
||||
prefs.isHandlingHTTPS &&
|
||||
prefs.isHandlingFTP &&
|
||||
prefs.isHandlingHTML &&
|
||||
prefs.isHandlingXHTML &&
|
||||
prefs.isHandlingXML)
|
||||
{
|
||||
// The user *wants* us to be the default, so look if the registry matches.
|
||||
// We test the registry settings using a scratch copy of the settings
|
||||
// because we don't care about some of them, but we don't want to mess up
|
||||
// the user's choices from the Advanced/System panel.
|
||||
var testSettings = winHooks.winhooks.settings;
|
||||
// Test that these are set.
|
||||
testSettings.isHandlingHTTP = true;
|
||||
testSettings.isHandlingHTTPS = true;
|
||||
testSettings.isHandlingFTP = true;
|
||||
testSettings.isHandlingHTML = true;
|
||||
testSettings.isHandlingXHTML = true;
|
||||
testSettings.isHandlingXML = true;
|
||||
// Ignore the rest.
|
||||
testSettings.isHandlingCHROME = false;
|
||||
testSettings.isHandlingGOPHER = false;
|
||||
testSettings.isHandlingJPEG = false;
|
||||
testSettings.isHandlingGIF = false;
|
||||
testSettings.isHandlingPNG = false;
|
||||
testSettings.isHandlingBMP = false;
|
||||
testSettings.isHandlingICO = false;
|
||||
testSettings.isHandlingXUL = false;
|
||||
// Now test whether the registry matches that.
|
||||
if (testSettings.registryMatches)
|
||||
winHooks.state = PFINT_DEFAULT;
|
||||
}
|
||||
UpdateDefaultBrowserGroup();
|
||||
}
|
||||
|
||||
function SetAsDefaultBrowser()
|
||||
{
|
||||
// In future, we will use the Shell Service here,
|
||||
// for now, just process WinHooks.
|
||||
|
||||
// Extract current settings (these are what the
|
||||
// user has checked on the Advanced/System panel).
|
||||
var settings = window.gWinHooks.prefs;
|
||||
|
||||
// Turn on all "default browser" settings.
|
||||
settings.isHandlingHTTP = true;
|
||||
settings.isHandlingHTTPS = true;
|
||||
settings.isHandlingFTP = true;
|
||||
settings.isHandlingHTML = true;
|
||||
settings.isHandlingXHTML = true;
|
||||
settings.isHandlingXML = true;
|
||||
|
||||
if (document.documentElement.instantApply)
|
||||
{
|
||||
window.gWinHooks.state = PFINT_DEFAULT;
|
||||
ApplySetAsDefaultBrowser();
|
||||
}
|
||||
else
|
||||
{
|
||||
// register OK handler for the capturing phase
|
||||
window.gWinHooks.state = PFINT_PENDING;
|
||||
window.addEventListener("dialogaccept", this.ApplySetAsDefaultBrowser, true);
|
||||
}
|
||||
UpdateDefaultBrowserGroup();
|
||||
}
|
||||
|
|
|
@ -39,7 +39,10 @@
|
|||
-
|
||||
- ***** END LICENSE BLOCK ***** -->
|
||||
|
||||
<!DOCTYPE page SYSTEM "chrome://communicator/locale/pref/pref-navigator.dtd" >
|
||||
<!DOCTYPE overlay [
|
||||
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd"> %brandDTD;
|
||||
<!ENTITY % navigatorDTD SYSTEM "chrome://communicator/locale/pref/pref-navigator.dtd"> %navigatorDTD;
|
||||
]>
|
||||
|
||||
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
<prefpane id="navigator_pane"
|
||||
|
@ -56,12 +59,12 @@
|
|||
<preference id="browser.tabs.loadOnNewTab"
|
||||
name="browser.tabs.loadOnNewTab"
|
||||
type="int"/>
|
||||
<preference id="browser.startup.homepage"
|
||||
name="browser.startup.homepage"
|
||||
type="wstring"/>
|
||||
<preference id="browser.startup.homepage.count"
|
||||
name="browser.startup.homepage.count"
|
||||
type="int"/>
|
||||
<preference id="pref.browser.disable_button.default_browser"
|
||||
name="pref.browser.disable_button.default_browser"
|
||||
type="bool"/>
|
||||
<preference id="pref.browser.homepage.disable_button.select_file"
|
||||
name="pref.browser.homepage.disable_button.select_file"
|
||||
type="bool"/>
|
||||
|
@ -106,45 +109,76 @@
|
|||
</caption>
|
||||
<deck id="behaviourDeck" flex="1">
|
||||
<radiogroup id="startupPage" preference="browser.startup.page">
|
||||
<radio value="0" label="&blankPageRadio.label;" ak="&blankPageRadio.accesskey;"/>
|
||||
<radio value="1" label="&homePageRadio.label;" ak="&homePageRadio.accesskey;"/>
|
||||
<radio value="2" label="&lastPageRadio.label;" ak="&lastPageRadio.accesskey;"/>
|
||||
<radio value="0"
|
||||
label="&blankPageRadio.label;"
|
||||
accesskey="&blankPageRadio.accesskey;"/>
|
||||
<radio value="1"
|
||||
label="&homePageRadio.label;"
|
||||
accesskey="&homePageRadio.accesskey;"/>
|
||||
<radio value="2"
|
||||
label="&lastPageRadio.label;"
|
||||
accesskey="&lastPageRadio.accesskey;"/>
|
||||
</radiogroup>
|
||||
<radiogroup id="newWinPage" preference="browser.windows.loadOnNewWindow">
|
||||
<radio value="0" label="&blankPageRadio.label;" ak="&blankPageRadio.accesskey;"/>
|
||||
<radio value="1" label="&homePageRadio.label;" ak="&homePageRadio.accesskey;"/>
|
||||
<radio value="2" label="&lastPageRadio.label;" ak="&lastPageRadio.accesskey;"/>
|
||||
<radio value="0"
|
||||
label="&blankPageRadio.label;"
|
||||
accesskey="&blankPageRadio.accesskey;"/>
|
||||
<radio value="1"
|
||||
label="&homePageRadio.label;"
|
||||
accesskey="&homePageRadio.accesskey;"/>
|
||||
<radio value="2"
|
||||
label="&lastPageRadio.label;"
|
||||
accesskey="&lastPageRadio.accesskey;"/>
|
||||
</radiogroup>
|
||||
<radiogroup id="newTabPage" preference="browser.tabs.loadOnNewTab">
|
||||
<radio value="0" label="&blankPageRadio.label;" ak="&blankPageRadio.accesskey;"/>
|
||||
<radio value="1" label="&homePageRadio.label;" ak="&homePageRadio.accesskey;"/>
|
||||
<radio value="2" label="&lastPageRadio.label;" ak="&lastPageRadio.accesskey;"/>
|
||||
<radio value="0"
|
||||
label="&blankPageRadio.label;"
|
||||
accesskey="&blankPageRadio.accesskey;"/>
|
||||
<radio value="1"
|
||||
label="&homePageRadio.label;"
|
||||
accesskey="&homePageRadio.accesskey;"/>
|
||||
<radio value="2"
|
||||
label="&lastPageRadio.label;"
|
||||
accesskey="&lastPageRadio.accesskey;"/>
|
||||
</radiogroup>
|
||||
</deck>
|
||||
</groupbox>
|
||||
|
||||
<!-- default browser settings are shown only if supported by the platform -->
|
||||
<groupbox id="defaultBrowserGroup" flex="1000" align="center" hidden="true">
|
||||
<caption label="&defaultBrowserGroup.label;"/>
|
||||
<!-- We have three use cases, identified by their index:
|
||||
0: not already the default => button enabled
|
||||
1: already the default => button disabled
|
||||
2: user pushed button => button disabled with different text
|
||||
-->
|
||||
<description id="defaultBrowserDesc"
|
||||
desc0="&makeDefaultText;"
|
||||
desc1="&alreadyDefaultText;"
|
||||
desc2="&defaultPendingText;"/>
|
||||
<button id="defaultBrowserButton"
|
||||
label="&defaultBrowserButton.label;"
|
||||
accesskey="&defaultBrowserButton.accesskey;"
|
||||
oncommand="SetAsDefaultBrowser()"
|
||||
disabled="true"
|
||||
preference="pref.browser.disable_button.default_browser"/>
|
||||
</groupbox>
|
||||
</hbox>
|
||||
|
||||
<!-- homepage specification -->
|
||||
<groupbox>
|
||||
<groupbox orient="horizontal">
|
||||
<caption label="&header2.label;"/>
|
||||
<vbox flex="1">
|
||||
<description>&homePageIntro.label;</description>
|
||||
<hbox align="center">
|
||||
<label value="&location.label;"
|
||||
accesskey="&location.accesskey;"
|
||||
control="browserStartupHomepage"/>
|
||||
<textbox id="browserStartupHomepage"
|
||||
type="autocomplete" flex="1" class="uri-element"
|
||||
autocompletesearch="history" timeout="50" maxrows="6"
|
||||
<textbox id="browserStartupHomepage" class="uri-element" flex="1"
|
||||
multiline="true" wrap="off" timeout="500"
|
||||
oninput="UpdateHomePageListFromInput();"/>
|
||||
<button label="&browseFile.label;"
|
||||
accesskey="&browseFile.accesskey;"
|
||||
</vbox>
|
||||
<vbox>
|
||||
<button label="&browseFile.label;" accesskey="&browseFile.accesskey;"
|
||||
oncommand="SelectFile();"
|
||||
id="browserChooseFile"
|
||||
preference="pref.browser.homepage.disable_button.select_file"/>
|
||||
</hbox>
|
||||
<hbox align="center" pack="end">
|
||||
<button label="&useCurrent.label;" accesskey="&useCurrent.accesskey;"
|
||||
oncommand="SetHomePageToCurrentPage();"
|
||||
id="browserUseCurrent"
|
||||
|
@ -157,19 +191,15 @@
|
|||
oncommand="SetHomePageToDefaultPage();"
|
||||
id="browserUseDefault"
|
||||
preference="pref.browser.homepage.disable_button.default_page"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
|
||||
<!-- toolbar buttons customization -->
|
||||
<description value="&toolbarIntro.label;"/>
|
||||
<hbox id="prefShowButtons" flex="1" equalsize="true">
|
||||
<groupbox id="prefShowButtonsBox1" flex="1">
|
||||
<groupbox id="prefShowButtonsBox1" flex="1" orient="horizontal">
|
||||
<caption label="&navToolbarIntro.label;"/>
|
||||
<checkbox id="goButton"
|
||||
label="&goButton.label;"
|
||||
accesskey="&goButton.accesskey;"
|
||||
preference="browser.toolbars.showbutton.go"/>
|
||||
<vbox flex="1">
|
||||
<checkbox id="searchButton"
|
||||
label="&searchButton.label;"
|
||||
accesskey="&searchButton.accesskey;"
|
||||
|
@ -178,6 +208,13 @@
|
|||
label="&printButton.label;"
|
||||
accesskey="&printButton.accesskey;"
|
||||
preference="browser.toolbars.showbutton.print"/>
|
||||
</vbox>
|
||||
<vbox flex="1">
|
||||
<checkbox id="goButton"
|
||||
label="&goButton.label;"
|
||||
accesskey="&goButton.accesskey;"
|
||||
preference="browser.toolbars.showbutton.go"/>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
<groupbox id="prefShowButtonsBox" flex="1">
|
||||
<caption label="&persToolbarIntro.label;"/>
|
||||
|
|
|
@ -39,8 +39,6 @@
|
|||
<?xml-stylesheet type="text/css" href="chrome://communicator/skin/"?>
|
||||
<?xml-stylesheet type="text/css" href="chrome://communicator/content/communicator.css"?>
|
||||
|
||||
<?xul-overlay href="chrome://communicator/content/pref/platformPrefOverlay.xul"?>
|
||||
|
||||
<!DOCTYPE prefwindow [
|
||||
<!ENTITY % dtd1 SYSTEM "chrome://communicator/locale/pref/pref.dtd" > %dtd1;
|
||||
<!ENTITY % dtd2 SYSTEM "chrome://communicator/locale/pref/preftree.dtd" > %dtd2;
|
||||
|
|
|
@ -38,8 +38,6 @@
|
|||
|
||||
***** END LICENSE BLOCK ***** -->
|
||||
|
||||
<?xul-overlay href="chrome://communicator/content/pref/platformPrefOverlay.xul"?>
|
||||
|
||||
<!DOCTYPE overlay SYSTEM "chrome://communicator/locale/pref/preftree.dtd">
|
||||
|
||||
<overlay id="prefTreeOverlay"
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
<!ENTITY urlbar.label "⌘+Return in the Location bar">
|
||||
<!ENTITY urlbar.accesskey "L">
|
||||
<!ENTITY middleClick.label "Middle-click, ⌘+click or ⌘+Return on links in a Web page">
|
||||
<!ENTITY middleClick.accesskey "M">
|
||||
|
||||
<!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
|
||||
preference dialog's <window> node, which specifies the width and height
|
||||
in em units of the dialog. Localizers ONLY can increase these widths
|
||||
|
@ -11,3 +6,9 @@
|
|||
XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
|
||||
size of this window for en-US. -->
|
||||
<!ENTITY prefWindow.size "width: 58em; height: 41em;">
|
||||
|
||||
<!-- pref-tabs.xul -->
|
||||
<!ENTITY urlbar.label "⌘+Return in the Location bar">
|
||||
<!ENTITY urlbar.accesskey "L">
|
||||
<!ENTITY middleClick.label "Middle-click, ⌘+click or ⌘+Return on links in a Web page">
|
||||
<!ENTITY middleClick.accesskey "M">
|
||||
|
|
|
@ -13,9 +13,7 @@
|
|||
<!ENTITY lastPageRadio.accesskey "L">
|
||||
|
||||
<!ENTITY header2.label "Home Page">
|
||||
<!ENTITY homePageIntro.label "Clicking the Home button takes you to this page or group of pages.">
|
||||
<!ENTITY location.label "Location:">
|
||||
<!ENTITY location.accesskey "a">
|
||||
<!ENTITY homePageIntro.label "Clicking the Home button takes you to this group of pages:">
|
||||
<!ENTITY useCurrent.label "Use Current Page">
|
||||
<!ENTITY useCurrent.accesskey "U">
|
||||
<!ENTITY useCurrentGroup.label "Use Current Group">
|
||||
|
@ -40,3 +38,10 @@
|
|||
<!ENTITY homeButton.accesskey "e">
|
||||
<!ENTITY bookmarksButton.label "Bookmarks">
|
||||
<!ENTITY bookmarksButton.accesskey "k">
|
||||
|
||||
<!ENTITY defaultBrowserGroup.label "Default Browser">
|
||||
<!ENTITY defaultBrowserButton.label "Set Default Browser">
|
||||
<!ENTITY defaultBrowserButton.accesskey "D">
|
||||
<!ENTITY alreadyDefaultText "&brandShortName; is already your default browser.">
|
||||
<!ENTITY defaultPendingText "&brandShortName; will be set as your default browser when you click OK.">
|
||||
<!ENTITY makeDefaultText "Set &brandShortName; as your default browser.">
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
<!-- extracted from content/PrefsWindow.xul -->
|
||||
|
||||
<!-- LOCALIZATION NOTE : FILE UI for the outer parts of the Prefs dialog -->
|
||||
<!ENTITY prefWindow.title "Preferences">
|
||||
<!ENTITY categoryHeader "Category">
|
||||
|
||||
|
|
|
@ -16,6 +16,4 @@ languageTitle=Change Language
|
|||
prefSaveFailedAlert=Failed to save the preferences file. Any preference changes will be lost at the end of this session.
|
||||
prefSaveFailedTitle=Save Error
|
||||
|
||||
groupIsSet=-- Home Page Group is Set --
|
||||
|
||||
labelDefaultFont=Default (%font_family%)
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
<!ENTITY urlbar.label "Ctrl+Enter in the Location bar">
|
||||
<!ENTITY urlbar.accesskey "L">
|
||||
<!ENTITY middleClick.label "Middle-click, Ctrl+click or Ctrl+Enter on links in a Web page">
|
||||
<!ENTITY middleClick.accesskey "M">
|
||||
|
||||
<!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
|
||||
preference dialog's <window> node, which specifies the width and height
|
||||
in em units of the dialog. Localizers ONLY can increase these widths
|
||||
|
@ -11,3 +6,9 @@
|
|||
XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
|
||||
size of this window for en-US. -->
|
||||
<!ENTITY prefWindow.size "width: 52em; height: 41em;">
|
||||
|
||||
<!-- pref-tabs.xul -->
|
||||
<!ENTITY urlbar.label "Ctrl+Enter in the Location bar">
|
||||
<!ENTITY urlbar.accesskey "L">
|
||||
<!ENTITY middleClick.label "Middle-click, Ctrl+click or Ctrl+Enter on links in a Web page">
|
||||
<!ENTITY middleClick.accesskey "M">
|
||||
|
|
|
@ -1,16 +1,3 @@
|
|||
<!ENTITY winhooks.label "System">
|
||||
|
||||
<!ENTITY defaultBrowserGroup.label "Default Browser">
|
||||
<!ENTITY defaultBrowserButton.label "Set Default Browser">
|
||||
<!ENTITY alreadyDefaultText "&brandShortName; is already your default browser.">
|
||||
<!ENTITY defaultPendingText "&brandShortName; will be set as your default browser when you click OK.">
|
||||
<!ENTITY makeDefaultText "Set &brandShortName; as your default browser.">
|
||||
|
||||
<!ENTITY urlbar.label "Ctrl+Enter in the Location bar">
|
||||
<!ENTITY urlbar.accesskey "L">
|
||||
<!ENTITY middleClick.label "Middle-click, Ctrl+click or Ctrl+Enter on links in a Web page">
|
||||
<!ENTITY middleClick.accesskey "M">
|
||||
|
||||
<!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
|
||||
preference dialog's <window> node, which specifies the width and height
|
||||
in em units of the dialog. Localizers ONLY can increase these widths
|
||||
|
@ -19,3 +6,9 @@
|
|||
XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
|
||||
size of this window for en-US. -->
|
||||
<!ENTITY prefWindow.size "width: 52em; height: 41em;">
|
||||
|
||||
<!-- pref-tabs.xul -->
|
||||
<!ENTITY urlbar.label "Ctrl+Enter in the Location bar">
|
||||
<!ENTITY urlbar.accesskey "L">
|
||||
<!ENTITY middleClick.label "Middle-click, Ctrl+click or Ctrl+Enter on links in a Web page">
|
||||
<!ENTITY middleClick.accesskey "M">
|
||||
|
|
Загрузка…
Ссылка в новой задаче