enable pagesetup to use mertic mm when using page sizes with mm/cm

Bug 118954 r=dcone sr=alecf
This commit is contained in:
rods%netscape.com 2002-11-13 12:35:15 +00:00
Родитель cd8a03eb8a
Коммит c1f4cb20c0
3 изменённых файлов: 107 добавлений и 55 удалений

Просмотреть файл

@ -323,6 +323,12 @@ SetPrintSettingsFromDevMode(nsIPrintSettings* aPrintSettings,
if (aDevMode->dmFields & DM_PAPERSIZE) {
aPrintSettings->SetPaperSizeType(nsIPrintSettings::kPaperSizeNativeData);
aPrintSettings->SetPaperData(aDevMode->dmPaperSize);
for (PRInt32 i=0;i<kNumPaperSizes;i++) {
if (kPaperSizes[i].mPaperSize == aDevMode->dmPaperSize) {
aPrintSettings->SetPaperSizeUnit(kPaperSizes[i].mIsInches?nsIPrintSettings::kPaperSizeInches:nsIPrintSettings::kPaperSizeMillimeters);
break;
}
}
} else if (aDevMode->dmFields & DM_PAPERLENGTH && aDevMode->dmFields & DM_PAPERWIDTH) {
PRBool found = PR_FALSE;
@ -331,7 +337,7 @@ SetPrintSettingsFromDevMode(nsIPrintSettings* aPrintSettings,
aPrintSettings->SetPaperSizeType(nsIPrintSettings::kPaperSizeDefined);
aPrintSettings->SetPaperWidth(kPaperSizes[i].mWidth);
aPrintSettings->SetPaperHeight(kPaperSizes[i].mHeight);
aPrintSettings->SetPaperSizeUnit(kPaperSizes[i].mIsInches?nsIPrintSettings::kPaperSizeInches:nsIPrintSettings::kPaperSizeInches);
aPrintSettings->SetPaperSizeUnit(kPaperSizes[i].mIsInches?nsIPrintSettings::kPaperSizeInches:nsIPrintSettings::kPaperSizeMillimeters);
found = PR_TRUE;
break;
}

Просмотреть файл

@ -44,6 +44,7 @@ var gPrefs = null;
var gPrintService = null;
var gPrintSettings = null;
var gStringBundle = null;
var gDoingMetric = false;
var gPrintSettingsInterface = Components.interfaces.nsIPrintSettings;
var gDoDebug = false;
@ -136,7 +137,8 @@ function setOrientation()
gPageHeight = gPageWidth;
gPageWidth = temp;
}
style += "width:" + gPageWidth/10 + unitString() + ";height:" + gPageHeight/10 + unitString() + ";";
var div = gDoingMetric ? 100 : 10;
style += "width:" + gPageWidth/div + unitString() + ";height:" + gPageHeight/div + unitString() + ";";
gDialog.marginPage.setAttribute( "style", style );
}
@ -178,7 +180,8 @@ function changeMargin( node )
nodeToStyle = gDialog.marginRight;
val = checkMargin( val, gPageWidth, gDialog.leftInput );
}
var style = attr + ":" + val/10 + unitString() + ";";
val /= gDoingMetric ? 100 : 10;
var style = attr + ":" + val + unitString() + ";";
nodeToStyle.setAttribute( "style", style );
}
@ -318,11 +321,30 @@ function loadDialog()
setPrinterDefaultsForSelectedPrinter();
gDialog.printBG.checked = gPrintSettings.printBGColors || gPrintSettings.printBGImages;
gDialog.shrinkToFit.checked = gPrintSettings.shrinkToFit;
gDialog.scalingLabel.disabled = gDialog.scalingInput.disabled = gDialog.shrinkToFit.checked;
var marginGroupLabel = gDialog.marginGroup.label;
if (gPrintSettings.paperSizeUnit == gPrintSettingsInterface.kPaperSizeInches) {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.inches"]);
gDoingMetric = false;
} else {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.metric"]);
// Also, set global page dimensions for A4 paper, in millimeters (assumes portrait at this point).
gPageWidth = 2100;
gPageHeight = 2970;
gDoingMetric = true;
}
gDialog.marginGroup.label = marginGroupLabel;
print_orientation = gPrintSettings.orientation;
print_margin_top = gPrintSettings.marginTop;
print_margin_left = gPrintSettings.marginLeft;
print_margin_right = gPrintSettings.marginRight;
print_margin_bottom = gPrintSettings.marginBottom;
print_margin_top = convertMarginInchesToUnits(gPrintSettings.marginTop, gDoingMetric);
print_margin_left = convertMarginInchesToUnits(gPrintSettings.marginLeft, gDoingMetric);
print_margin_right = convertMarginInchesToUnits(gPrintSettings.marginRight, gDoingMetric);
print_margin_bottom = convertMarginInchesToUnits(gPrintSettings.marginBottom, gDoingMetric);
if (gDoDebug) {
dump("print_orientation "+print_orientation+"\n");
@ -333,29 +355,12 @@ function loadDialog()
dump("print_margin_bottom "+print_margin_bottom+"\n");
}
gDialog.printBG.checked = gPrintSettings.printBGColors || gPrintSettings.printBGImages;
gDialog.shrinkToFit.checked = gPrintSettings.shrinkToFit;
gDialog.scalingLabel.disabled = gDialog.scalingInput.disabled = gDialog.shrinkToFit.checked;
if (print_orientation == gPrintSettingsInterface.kPortraitOrientation) {
gDialog.orientation.selectedItem = gDialog.portrait;
} else if (print_orientation == gPrintSettingsInterface.kLandscapeOrientation) {
gDialog.orientation.selectedItem = gDialog.landscape;
}
var marginGroupLabel = gDialog.marginGroup.label;
if (gPrintSettings.paperSizeUnit == gPrintSettingsInterface.kPaperSizeInches) {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.inches"]);
} else {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.metric"]);
// Also, set global page dimensions for A4 paper, in millimeters (assumes portrait at this point).
gPageWidth = 210;
gPageHeight = 297;
}
gDialog.marginGroup.label = marginGroupLabel;
// Set orientation the first time on a timeout so the dialog sizes to the
// maximum height specified in the .xul file. Otherwise, if the user switches
// from landscape to portrait, the content grows and the buttons are clipped.
@ -414,6 +419,24 @@ function onLoad()
}
}
function convertUnitsMarginToInches(aVal, aIsMetric)
{
if (aIsMetric) {
return aVal / 254;
} else {
return aVal;
}
}
function convertMarginInchesToUnits(aVal, aIsMetric)
{
if (aIsMetric) {
return aVal * 254;
} else {
return aVal;
}
}
//---------------------------------------------------
function onAccept()
{
@ -426,10 +449,10 @@ function onAccept()
}
// save these out so they can be picked up by the device spec
gPrintSettings.marginTop = gDialog.topInput.value;
gPrintSettings.marginLeft = gDialog.leftInput.value;
gPrintSettings.marginBottom = gDialog.bottomInput.value;
gPrintSettings.marginRight = gDialog.rightInput.value;
gPrintSettings.marginTop = convertUnitsMarginToInches(gDialog.topInput.value, gDoingMetric);
gPrintSettings.marginLeft = convertUnitsMarginToInches(gDialog.leftInput.value, gDoingMetric);
gPrintSettings.marginBottom = convertUnitsMarginToInches(gDialog.bottomInput.value, gDoingMetric);
gPrintSettings.marginRight = convertUnitsMarginToInches(gDialog.rightInput.value, gDoingMetric);
gPrintSettings.headerStrLeft = hfIdToValue(gDialog.hLeftOption);
gPrintSettings.headerStrCenter = hfIdToValue(gDialog.hCenterOption);

Просмотреть файл

@ -44,6 +44,7 @@ var gPrefs = null;
var gPrintService = null;
var gPrintSettings = null;
var gStringBundle = null;
var gDoingMetric = false;
var gPrintSettingsInterface = Components.interfaces.nsIPrintSettings;
var gDoDebug = false;
@ -136,7 +137,8 @@ function setOrientation()
gPageHeight = gPageWidth;
gPageWidth = temp;
}
style += "width:" + gPageWidth/10 + unitString() + ";height:" + gPageHeight/10 + unitString() + ";";
var div = gDoingMetric ? 100 : 10;
style += "width:" + gPageWidth/div + unitString() + ";height:" + gPageHeight/div + unitString() + ";";
gDialog.marginPage.setAttribute( "style", style );
}
@ -178,7 +180,8 @@ function changeMargin( node )
nodeToStyle = gDialog.marginRight;
val = checkMargin( val, gPageWidth, gDialog.leftInput );
}
var style = attr + ":" + val/10 + unitString() + ";";
val /= gDoingMetric ? 100 : 10;
var style = attr + ":" + val + unitString() + ";";
nodeToStyle.setAttribute( "style", style );
}
@ -318,11 +321,30 @@ function loadDialog()
setPrinterDefaultsForSelectedPrinter();
gDialog.printBG.checked = gPrintSettings.printBGColors || gPrintSettings.printBGImages;
gDialog.shrinkToFit.checked = gPrintSettings.shrinkToFit;
gDialog.scalingLabel.disabled = gDialog.scalingInput.disabled = gDialog.shrinkToFit.checked;
var marginGroupLabel = gDialog.marginGroup.label;
if (gPrintSettings.paperSizeUnit == gPrintSettingsInterface.kPaperSizeInches) {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.inches"]);
gDoingMetric = false;
} else {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.metric"]);
// Also, set global page dimensions for A4 paper, in millimeters (assumes portrait at this point).
gPageWidth = 2100;
gPageHeight = 2970;
gDoingMetric = true;
}
gDialog.marginGroup.label = marginGroupLabel;
print_orientation = gPrintSettings.orientation;
print_margin_top = gPrintSettings.marginTop;
print_margin_left = gPrintSettings.marginLeft;
print_margin_right = gPrintSettings.marginRight;
print_margin_bottom = gPrintSettings.marginBottom;
print_margin_top = convertMarginInchesToUnits(gPrintSettings.marginTop, gDoingMetric);
print_margin_left = convertMarginInchesToUnits(gPrintSettings.marginLeft, gDoingMetric);
print_margin_right = convertMarginInchesToUnits(gPrintSettings.marginRight, gDoingMetric);
print_margin_bottom = convertMarginInchesToUnits(gPrintSettings.marginBottom, gDoingMetric);
if (gDoDebug) {
dump("print_orientation "+print_orientation+"\n");
@ -333,29 +355,12 @@ function loadDialog()
dump("print_margin_bottom "+print_margin_bottom+"\n");
}
gDialog.printBG.checked = gPrintSettings.printBGColors || gPrintSettings.printBGImages;
gDialog.shrinkToFit.checked = gPrintSettings.shrinkToFit;
gDialog.scalingLabel.disabled = gDialog.scalingInput.disabled = gDialog.shrinkToFit.checked;
if (print_orientation == gPrintSettingsInterface.kPortraitOrientation) {
gDialog.orientation.selectedItem = gDialog.portrait;
} else if (print_orientation == gPrintSettingsInterface.kLandscapeOrientation) {
gDialog.orientation.selectedItem = gDialog.landscape;
}
var marginGroupLabel = gDialog.marginGroup.label;
if (gPrintSettings.paperSizeUnit == gPrintSettingsInterface.kPaperSizeInches) {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.inches"]);
} else {
marginGroupLabel = marginGroupLabel.replace(/#1/, gDialog.strings["marginUnits.metric"]);
// Also, set global page dimensions for A4 paper, in millimeters (assumes portrait at this point).
gPageWidth = 210;
gPageHeight = 297;
}
gDialog.marginGroup.label = marginGroupLabel;
// Set orientation the first time on a timeout so the dialog sizes to the
// maximum height specified in the .xul file. Otherwise, if the user switches
// from landscape to portrait, the content grows and the buttons are clipped.
@ -414,6 +419,24 @@ function onLoad()
}
}
function convertUnitsMarginToInches(aVal, aIsMetric)
{
if (aIsMetric) {
return aVal / 254;
} else {
return aVal;
}
}
function convertMarginInchesToUnits(aVal, aIsMetric)
{
if (aIsMetric) {
return aVal * 254;
} else {
return aVal;
}
}
//---------------------------------------------------
function onAccept()
{
@ -426,10 +449,10 @@ function onAccept()
}
// save these out so they can be picked up by the device spec
gPrintSettings.marginTop = gDialog.topInput.value;
gPrintSettings.marginLeft = gDialog.leftInput.value;
gPrintSettings.marginBottom = gDialog.bottomInput.value;
gPrintSettings.marginRight = gDialog.rightInput.value;
gPrintSettings.marginTop = convertUnitsMarginToInches(gDialog.topInput.value, gDoingMetric);
gPrintSettings.marginLeft = convertUnitsMarginToInches(gDialog.leftInput.value, gDoingMetric);
gPrintSettings.marginBottom = convertUnitsMarginToInches(gDialog.bottomInput.value, gDoingMetric);
gPrintSettings.marginRight = convertUnitsMarginToInches(gDialog.rightInput.value, gDoingMetric);
gPrintSettings.headerStrLeft = hfIdToValue(gDialog.hLeftOption);
gPrintSettings.headerStrCenter = hfIdToValue(gDialog.hCenterOption);