From ed4dbde49934aeffcd7acc590cfa33fc7b4db8d0 Mon Sep 17 00:00:00 2001 From: "disttsc%bart.nl" Date: Fri, 15 Sep 2000 06:59:30 +0000 Subject: [PATCH] Better version of View -> Text Size submenu. bug=37940, r=mj@digicool.com, a=brendan --- xpfe/browser/resources/content/Makefile.in | 2 + xpfe/browser/resources/content/Manifest | 19 - xpfe/browser/resources/content/askViewZoom.js | 0 .../browser/resources/content/askViewZoom.xul | 0 xpfe/browser/resources/content/makefile.win | 2 + xpfe/browser/resources/content/navigator.js | 335 +++++++++++++++++- .../resources/content/navigatorOverlay.xul | 121 +++---- .../resources/locale/en-US/Makefile.in | 1 + xpfe/browser/resources/locale/en-US/Manifest | 1 + .../resources/locale/en-US/askViewZoom.dtd | 0 .../resources/locale/en-US/makefile.win | 1 + .../resources/locale/en-US/navigator.dtd | 30 +- .../locale/en-US/navigator.properties | 14 + 13 files changed, 405 insertions(+), 121 deletions(-) create mode 100644 xpfe/browser/resources/content/askViewZoom.js create mode 100644 xpfe/browser/resources/content/askViewZoom.xul create mode 100644 xpfe/browser/resources/locale/en-US/askViewZoom.dtd diff --git a/xpfe/browser/resources/content/Makefile.in b/xpfe/browser/resources/content/Makefile.in index 1e355da693e..b300c8aac90 100644 --- a/xpfe/browser/resources/content/Makefile.in +++ b/xpfe/browser/resources/content/Makefile.in @@ -49,6 +49,8 @@ CHROME_CONTENT = \ NetSupportConfirmCheckYN.xul \ pageInfo.xul \ pageInfo.js \ + askViewZoom.xul \ + askViewZoom.js \ viewSource.xul \ $(NULL) diff --git a/xpfe/browser/resources/content/Manifest b/xpfe/browser/resources/content/Manifest index 57cf75336df..e69de29bb2d 100644 --- a/xpfe/browser/resources/content/Manifest +++ b/xpfe/browser/resources/content/Manifest @@ -1,19 +0,0 @@ -contentframe.js -openLocation.js -navigator.xul -navigatorOverlay.xul -navExtraOverlay.xul -navigator.js -openLocation.xul -viewSource.xul -viewsource.js -viewSourceDD.js -pageInfo.xul -pageInfo.js -NetSupportConfirmYN.xul -NetSupportConfirmCheckYN.xul -tooltip.js -nsContextMenu.js -navigatorDD.js -sessionHistoryUI.js -keywords.js diff --git a/xpfe/browser/resources/content/askViewZoom.js b/xpfe/browser/resources/content/askViewZoom.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/xpfe/browser/resources/content/askViewZoom.xul b/xpfe/browser/resources/content/askViewZoom.xul new file mode 100644 index 00000000000..e69de29bb2d diff --git a/xpfe/browser/resources/content/makefile.win b/xpfe/browser/resources/content/makefile.win index cd6cae55f50..6e1331fc7d9 100644 --- a/xpfe/browser/resources/content/makefile.win +++ b/xpfe/browser/resources/content/makefile.win @@ -45,6 +45,8 @@ CHROME_CONTENT = \ .\NetSupportConfirmCheckYN.xul \ .\tooltip.js \ .\nsContextMenu.js \ + .\askViewZoom.xul \ + .\askViewZoom.js \ $(NULL) include <$(DEPTH)\config\rules.mak> diff --git a/xpfe/browser/resources/content/navigator.js b/xpfe/browser/resources/content/navigator.js index 3734809e343..6d584a7e297 100644 --- a/xpfe/browser/resources/content/navigator.js +++ b/xpfe/browser/resources/content/navigator.js @@ -47,7 +47,6 @@ catch (ex) var appCore = null; var explicitURL = false; - var textZoom = 1.0; // Stored Status, Link and Loading values var defaultStatus = bundle.GetStringFromName( "defaultStatus" ); @@ -1030,27 +1029,331 @@ function BrowserEditBookmarks() } } - function BrowserChangeTextZoom(aChange) + function initViewMenu() { - if (appCore != null) { - textZoom += (aChange * 0.1); - if (textZoom < 0.1) { - textZoom = 0.1; + updateTextSizeMenuLabel(); + } + + { + var zoomFactors; // array with factors + var zoomAccessKeys; // array with access keys + var zoomFactor = 100; // start value + var zoomLevel; + var zoomStep; + var zoomOther; + var zoomAnchor; + var zoomSteps = 0; + var zoomMenuLabel; + var zoomLabel; + var zoomLabelOther; + var zoomLabelOriginal; + + try { + zoomMenuLabel = bundle.GetStringFromName("textZoomMenuLabel"); + } catch (exception) { + zoomMenuLabel = "Text Size (%zoom% %)"; // better suggestion? + } + + try { + zoomLabel = bundle.GetStringFromName("textZoomLabel"); + } catch (exception) { + zoomLabel = "%zoom% %"; // better suggestion? + } + + try { + zoomLabelOther = bundle.GetStringFromName("textZoomLabelOther"); + } catch (exception) { + zoomLabelOther = "%zoom% % ..."; // better suggestion? + } + + try { + var zoomFactorsString = bundle.GetStringFromName("textZoomValues"); + var zoomAccessKeysString = bundle.GetStringFromName("textZoomAccessKeys"); + var zoomStepString = bundle.GetStringFromName("textZoomStepFactor"); + zoomLabelOriginal = bundle.GetStringFromName("textZoomLabelOriginal"); + zoomOther = bundle.GetStringFromName("textZoomValueOther"); + zoomOther = parseInt(zoomOther); + zoomStep = parseFloat(zoomStepString); + zoomFactors = zoomFactorsString.split(","); + for (var i=0; i=0 && aZoomLevel<=zoomFactors.length-1; + } + + function isZoomFactorInRange(aZoomFactor) { + return aZoomFactor>=zoomFactors[0] && aZoomFactor<=zoomFactors[zoomFactors.length-1]; + } + + function findZoomLevel(aZoomFactor) { + var aZoomLevel = -1; + for (var i=0; i 5000) + return; + + if (aZoomFactor == zoomFactor) + return; + + zoomFactor = aZoomFactor; + + if (isZoomFactorInRange(zoomFactor)) { + zoomLevel = findZoomLevel(zoomFactor); + } else { + zoomLevel = -1; + } + setTextZoom(); + updateTextZoomMenu(); + } + + function textZoomSnap() { + zoomLevel = 0; + while (zoomFactors[zoomLevel](zoomFactors[zoomLevel+1]-zoomFactor)) { + zoomLevel++; + } + zoomFactor = zoomFactors[zoomLevel]; + } + } + + function enlargeTextZoom() { + if (isZoomLevelInRange(zoomLevel) || isZoomFactorInRange(zoomOther)) { + var insertLevel = -1; + if (isZoomFactorInRange(zoomOther)) { // add current zoom factor as step + insertLevel = 0; + while (zoomFactors[insertLevel]= insertLevel) { + zoomLevel++; + } + } + } + zoomLevel++; + if (zoomLevel==zoomFactors.length) { + zoomAnchor = zoomFactors[zoomFactors.length - 1]; + zoomSteps = 1; + zoomFactor = Math.round(zoomAnchor * zoomStep); + zoomOther = zoomFactor; + } else { + zoomFactor = zoomFactors[zoomLevel]; + } + if (insertLevel != -1) { + if (zoomLevel > insertLevel) { + zoomLevel--; + } else if (zoomLevel == insertLevel) { + zoomLevel = -1; + } + zoomFactors.splice(insertLevel, 1); + } + } else { + zoomSteps++; + zoomFactor = zoomAnchor * Math.pow(zoomStep,zoomSteps); + if (zoomFactor>5000) { // 5,000% zoom, get real + zoomSteps--; + zoomFactor = zoomAnchor * Math.pow(zoomStep,zoomSteps); + } + zoomFactor = Math.round(zoomFactor); + if (isZoomFactorInRange(zoomFactor)) { + textZoomSnap(); + } else { + zoomOther = zoomFactor; + } + } + setTextZoom(); + updateTextZoomMenu(); + updateTextZoomOtherMenu(); + } + + function reduceTextZoom() { + if (isZoomLevelInRange(zoomLevel) || isZoomFactorInRange(zoomOther)) { + var insertLevel = -1; + if (isZoomFactorInRange(zoomOther)) { // add current zoom factor as step + insertLevel = 0; + while (zoomFactors[insertLevel]= insertLevel) { + zoomLevel++; + } + } + } + zoomLevel--; + if (zoomLevel==-1) { + zoomAnchor = zoomFactors[0]; + zoomSteps = -1; + zoomFactor = Math.round(zoomAnchor / zoomStep); + zoomOther = zoomFactor; + } else { + zoomFactor = zoomFactors[zoomLevel]; + } + if (insertLevel != -1) { // remove current zoom factor as step + if (zoomLevel > insertLevel) { + zoomLevel--; + } else if (zoomLevel == insertLevel) { + zoomLevel = -1; + } + zoomFactors.splice(insertLevel, 1); + } + } else { + zoomSteps--; + zoomFactor = zoomAnchor * Math.pow(zoomStep,zoomSteps); + if (zoomFactor<1) { + zoomSteps++; + zoomFactor = zoomAnchor * Math.pow(zoomStep,zoomSteps); + } + zoomFactor = Math.round(zoomFactor); + if (isZoomFactorInRange(zoomFactor)) { + textZoomSnap(); + } else { + zoomOther = zoomFactor; + } + } + setTextZoom(); + updateTextZoomMenu(); + updateTextZoomOtherMenu(); + } + function BrowserSetDefaultCharacterSet(aCharset) { if (appCore != null) { diff --git a/xpfe/browser/resources/content/navigatorOverlay.xul b/xpfe/browser/resources/content/navigatorOverlay.xul index f038ea0f24b..9cfa937abf6 100644 --- a/xpfe/browser/resources/content/navigatorOverlay.xul +++ b/xpfe/browser/resources/content/navigatorOverlay.xul @@ -1,23 +1,26 @@ + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/NPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + - + - The Original Code is Mozilla Communicator client code, released + - March 31, 1998. + - + - The Initial Developer of the Original Code is Netscape + - Communications Corporation. Portions created by Netscape are + - Copyright (C) 1998-1999 Netscape Communications Corporation. All + - Rights Reserved. + - + - Contributor(s): + - Blake Ross + - Peter Annema + --> @@ -63,16 +66,10 @@ Contributor(s): Blake Ross . --> - + + @@ -83,7 +80,7 @@ Contributor(s): Blake Ross . --> - + @@ -102,6 +99,14 @@ Contributor(s): Blake Ross . --> + + + + + + + + @@ -117,19 +122,8 @@ Contributor(s): Blake Ross . --> - - - - - - - + + @@ -139,32 +133,21 @@ Contributor(s): Blake Ross . --> - - - - - - - - - - - - + + + + + - - - - + + - - @@ -218,7 +201,7 @@ Contributor(s): Blake Ross . --> - + @@ -227,16 +210,16 @@ Contributor(s): Blake Ross . --> - - - - - - - - - - + + + + + + + + + + diff --git a/xpfe/browser/resources/locale/en-US/Makefile.in b/xpfe/browser/resources/locale/en-US/Makefile.in index 37556624f58..d25accc8dac 100644 --- a/xpfe/browser/resources/locale/en-US/Makefile.in +++ b/xpfe/browser/resources/locale/en-US/Makefile.in @@ -38,6 +38,7 @@ CHROME_L10N = \ pageInfo.dtd \ NetSupportConfirmCheckYN.dtd \ navigator.properties \ + askViewZoom.dtd \ $(NULL) # navigator.dtd \ diff --git a/xpfe/browser/resources/locale/en-US/Manifest b/xpfe/browser/resources/locale/en-US/Manifest index fc2ed1d968e..e4b2793e671 100644 --- a/xpfe/browser/resources/locale/en-US/Manifest +++ b/xpfe/browser/resources/locale/en-US/Manifest @@ -5,3 +5,4 @@ viewSource.dtd pageInfo.dtd NetSupportConfirmCheckYN.dtd navigator.properties +askViewZoom.dtd diff --git a/xpfe/browser/resources/locale/en-US/askViewZoom.dtd b/xpfe/browser/resources/locale/en-US/askViewZoom.dtd new file mode 100644 index 00000000000..e69de29bb2d diff --git a/xpfe/browser/resources/locale/en-US/makefile.win b/xpfe/browser/resources/locale/en-US/makefile.win index 340b2f280af..c3d37a34787 100644 --- a/xpfe/browser/resources/locale/en-US/makefile.win +++ b/xpfe/browser/resources/locale/en-US/makefile.win @@ -32,6 +32,7 @@ CHROME_L10N = \ .\navigator.dtd \ .\NetSupportConfirmCheckYN.dtd \ .\navigator.properties \ + .\askViewZoom.dtd \ $(NULL) diff --git a/xpfe/browser/resources/locale/en-US/navigator.dtd b/xpfe/browser/resources/locale/en-US/navigator.dtd index 10178c4d2bf..e68515e5875 100644 --- a/xpfe/browser/resources/locale/en-US/navigator.dtd +++ b/xpfe/browser/resources/locale/en-US/navigator.dtd @@ -53,22 +53,18 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -353,7 +349,7 @@ - + diff --git a/xpfe/browser/resources/locale/en-US/navigator.properties b/xpfe/browser/resources/locale/en-US/navigator.properties index f94f1fa5d38..24cc483b30c 100644 --- a/xpfe/browser/resources/locale/en-US/navigator.properties +++ b/xpfe/browser/resources/locale/en-US/navigator.properties @@ -19,6 +19,20 @@ droponhomemsg2=to be your new home page? dontremindme=Always check when I drag an address to the Home button (This can also be set in the 'Navigator' category of Preferences) droponhomeokbutton=Set Home Page +# navigator.js, font size submenu +# +# don't translate %zoom% +# textZoomValues must be in greater than 0, include 100 and be in natural order +# textZoomOtherValue must be greater than the largest in textZoomValues +textZoomMenuLabel=Text Size (%zoom% %) +textZoomValues=50,75,90,100,120,150,200 +textZoomAccessKeys=5,7,9,z,1,0,2 +textZoomStepFactor=1.5 +textZoomLabel=%zoom% % +textZoomLabelOriginal=%zoom% % (Original size) +textZoomLabelOther=Other (%zoom% %) ... +textZoomValueOther=300 + jserror=An error has occurred on this page. Double click here for details. #