зеркало из https://github.com/mozilla/gecko-dev.git
enable pagesetup to use mertic mm when using page sizes with mm/cm
Bug 118954 r=dcone sr=alecf
This commit is contained in:
Родитель
cd8a03eb8a
Коммит
c1f4cb20c0
|
@ -323,6 +323,12 @@ SetPrintSettingsFromDevMode(nsIPrintSettings* aPrintSettings,
|
||||||
if (aDevMode->dmFields & DM_PAPERSIZE) {
|
if (aDevMode->dmFields & DM_PAPERSIZE) {
|
||||||
aPrintSettings->SetPaperSizeType(nsIPrintSettings::kPaperSizeNativeData);
|
aPrintSettings->SetPaperSizeType(nsIPrintSettings::kPaperSizeNativeData);
|
||||||
aPrintSettings->SetPaperData(aDevMode->dmPaperSize);
|
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) {
|
} else if (aDevMode->dmFields & DM_PAPERLENGTH && aDevMode->dmFields & DM_PAPERWIDTH) {
|
||||||
PRBool found = PR_FALSE;
|
PRBool found = PR_FALSE;
|
||||||
|
@ -331,7 +337,7 @@ SetPrintSettingsFromDevMode(nsIPrintSettings* aPrintSettings,
|
||||||
aPrintSettings->SetPaperSizeType(nsIPrintSettings::kPaperSizeDefined);
|
aPrintSettings->SetPaperSizeType(nsIPrintSettings::kPaperSizeDefined);
|
||||||
aPrintSettings->SetPaperWidth(kPaperSizes[i].mWidth);
|
aPrintSettings->SetPaperWidth(kPaperSizes[i].mWidth);
|
||||||
aPrintSettings->SetPaperHeight(kPaperSizes[i].mHeight);
|
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;
|
found = PR_TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ var gPrefs = null;
|
||||||
var gPrintService = null;
|
var gPrintService = null;
|
||||||
var gPrintSettings = null;
|
var gPrintSettings = null;
|
||||||
var gStringBundle = null;
|
var gStringBundle = null;
|
||||||
|
var gDoingMetric = false;
|
||||||
|
|
||||||
var gPrintSettingsInterface = Components.interfaces.nsIPrintSettings;
|
var gPrintSettingsInterface = Components.interfaces.nsIPrintSettings;
|
||||||
var gDoDebug = false;
|
var gDoDebug = false;
|
||||||
|
@ -136,7 +137,8 @@ function setOrientation()
|
||||||
gPageHeight = gPageWidth;
|
gPageHeight = gPageWidth;
|
||||||
gPageWidth = temp;
|
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 );
|
gDialog.marginPage.setAttribute( "style", style );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +180,8 @@ function changeMargin( node )
|
||||||
nodeToStyle = gDialog.marginRight;
|
nodeToStyle = gDialog.marginRight;
|
||||||
val = checkMargin( val, gPageWidth, gDialog.leftInput );
|
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 );
|
nodeToStyle.setAttribute( "style", style );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,11 +321,30 @@ function loadDialog()
|
||||||
|
|
||||||
setPrinterDefaultsForSelectedPrinter();
|
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_orientation = gPrintSettings.orientation;
|
||||||
print_margin_top = gPrintSettings.marginTop;
|
print_margin_top = convertMarginInchesToUnits(gPrintSettings.marginTop, gDoingMetric);
|
||||||
print_margin_left = gPrintSettings.marginLeft;
|
print_margin_left = convertMarginInchesToUnits(gPrintSettings.marginLeft, gDoingMetric);
|
||||||
print_margin_right = gPrintSettings.marginRight;
|
print_margin_right = convertMarginInchesToUnits(gPrintSettings.marginRight, gDoingMetric);
|
||||||
print_margin_bottom = gPrintSettings.marginBottom;
|
print_margin_bottom = convertMarginInchesToUnits(gPrintSettings.marginBottom, gDoingMetric);
|
||||||
|
|
||||||
if (gDoDebug) {
|
if (gDoDebug) {
|
||||||
dump("print_orientation "+print_orientation+"\n");
|
dump("print_orientation "+print_orientation+"\n");
|
||||||
|
@ -333,29 +355,12 @@ function loadDialog()
|
||||||
dump("print_margin_bottom "+print_margin_bottom+"\n");
|
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) {
|
if (print_orientation == gPrintSettingsInterface.kPortraitOrientation) {
|
||||||
gDialog.orientation.selectedItem = gDialog.portrait;
|
gDialog.orientation.selectedItem = gDialog.portrait;
|
||||||
} else if (print_orientation == gPrintSettingsInterface.kLandscapeOrientation) {
|
} else if (print_orientation == gPrintSettingsInterface.kLandscapeOrientation) {
|
||||||
gDialog.orientation.selectedItem = gDialog.landscape;
|
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
|
// 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
|
// maximum height specified in the .xul file. Otherwise, if the user switches
|
||||||
// from landscape to portrait, the content grows and the buttons are clipped.
|
// 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()
|
function onAccept()
|
||||||
{
|
{
|
||||||
|
@ -426,10 +449,10 @@ function onAccept()
|
||||||
}
|
}
|
||||||
|
|
||||||
// save these out so they can be picked up by the device spec
|
// save these out so they can be picked up by the device spec
|
||||||
gPrintSettings.marginTop = gDialog.topInput.value;
|
gPrintSettings.marginTop = convertUnitsMarginToInches(gDialog.topInput.value, gDoingMetric);
|
||||||
gPrintSettings.marginLeft = gDialog.leftInput.value;
|
gPrintSettings.marginLeft = convertUnitsMarginToInches(gDialog.leftInput.value, gDoingMetric);
|
||||||
gPrintSettings.marginBottom = gDialog.bottomInput.value;
|
gPrintSettings.marginBottom = convertUnitsMarginToInches(gDialog.bottomInput.value, gDoingMetric);
|
||||||
gPrintSettings.marginRight = gDialog.rightInput.value;
|
gPrintSettings.marginRight = convertUnitsMarginToInches(gDialog.rightInput.value, gDoingMetric);
|
||||||
|
|
||||||
gPrintSettings.headerStrLeft = hfIdToValue(gDialog.hLeftOption);
|
gPrintSettings.headerStrLeft = hfIdToValue(gDialog.hLeftOption);
|
||||||
gPrintSettings.headerStrCenter = hfIdToValue(gDialog.hCenterOption);
|
gPrintSettings.headerStrCenter = hfIdToValue(gDialog.hCenterOption);
|
||||||
|
|
|
@ -44,6 +44,7 @@ var gPrefs = null;
|
||||||
var gPrintService = null;
|
var gPrintService = null;
|
||||||
var gPrintSettings = null;
|
var gPrintSettings = null;
|
||||||
var gStringBundle = null;
|
var gStringBundle = null;
|
||||||
|
var gDoingMetric = false;
|
||||||
|
|
||||||
var gPrintSettingsInterface = Components.interfaces.nsIPrintSettings;
|
var gPrintSettingsInterface = Components.interfaces.nsIPrintSettings;
|
||||||
var gDoDebug = false;
|
var gDoDebug = false;
|
||||||
|
@ -136,7 +137,8 @@ function setOrientation()
|
||||||
gPageHeight = gPageWidth;
|
gPageHeight = gPageWidth;
|
||||||
gPageWidth = temp;
|
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 );
|
gDialog.marginPage.setAttribute( "style", style );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +180,8 @@ function changeMargin( node )
|
||||||
nodeToStyle = gDialog.marginRight;
|
nodeToStyle = gDialog.marginRight;
|
||||||
val = checkMargin( val, gPageWidth, gDialog.leftInput );
|
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 );
|
nodeToStyle.setAttribute( "style", style );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,11 +321,30 @@ function loadDialog()
|
||||||
|
|
||||||
setPrinterDefaultsForSelectedPrinter();
|
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_orientation = gPrintSettings.orientation;
|
||||||
print_margin_top = gPrintSettings.marginTop;
|
print_margin_top = convertMarginInchesToUnits(gPrintSettings.marginTop, gDoingMetric);
|
||||||
print_margin_left = gPrintSettings.marginLeft;
|
print_margin_left = convertMarginInchesToUnits(gPrintSettings.marginLeft, gDoingMetric);
|
||||||
print_margin_right = gPrintSettings.marginRight;
|
print_margin_right = convertMarginInchesToUnits(gPrintSettings.marginRight, gDoingMetric);
|
||||||
print_margin_bottom = gPrintSettings.marginBottom;
|
print_margin_bottom = convertMarginInchesToUnits(gPrintSettings.marginBottom, gDoingMetric);
|
||||||
|
|
||||||
if (gDoDebug) {
|
if (gDoDebug) {
|
||||||
dump("print_orientation "+print_orientation+"\n");
|
dump("print_orientation "+print_orientation+"\n");
|
||||||
|
@ -333,29 +355,12 @@ function loadDialog()
|
||||||
dump("print_margin_bottom "+print_margin_bottom+"\n");
|
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) {
|
if (print_orientation == gPrintSettingsInterface.kPortraitOrientation) {
|
||||||
gDialog.orientation.selectedItem = gDialog.portrait;
|
gDialog.orientation.selectedItem = gDialog.portrait;
|
||||||
} else if (print_orientation == gPrintSettingsInterface.kLandscapeOrientation) {
|
} else if (print_orientation == gPrintSettingsInterface.kLandscapeOrientation) {
|
||||||
gDialog.orientation.selectedItem = gDialog.landscape;
|
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
|
// 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
|
// maximum height specified in the .xul file. Otherwise, if the user switches
|
||||||
// from landscape to portrait, the content grows and the buttons are clipped.
|
// 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()
|
function onAccept()
|
||||||
{
|
{
|
||||||
|
@ -426,10 +449,10 @@ function onAccept()
|
||||||
}
|
}
|
||||||
|
|
||||||
// save these out so they can be picked up by the device spec
|
// save these out so they can be picked up by the device spec
|
||||||
gPrintSettings.marginTop = gDialog.topInput.value;
|
gPrintSettings.marginTop = convertUnitsMarginToInches(gDialog.topInput.value, gDoingMetric);
|
||||||
gPrintSettings.marginLeft = gDialog.leftInput.value;
|
gPrintSettings.marginLeft = convertUnitsMarginToInches(gDialog.leftInput.value, gDoingMetric);
|
||||||
gPrintSettings.marginBottom = gDialog.bottomInput.value;
|
gPrintSettings.marginBottom = convertUnitsMarginToInches(gDialog.bottomInput.value, gDoingMetric);
|
||||||
gPrintSettings.marginRight = gDialog.rightInput.value;
|
gPrintSettings.marginRight = convertUnitsMarginToInches(gDialog.rightInput.value, gDoingMetric);
|
||||||
|
|
||||||
gPrintSettings.headerStrLeft = hfIdToValue(gDialog.hLeftOption);
|
gPrintSettings.headerStrLeft = hfIdToValue(gDialog.hLeftOption);
|
||||||
gPrintSettings.headerStrCenter = hfIdToValue(gDialog.hCenterOption);
|
gPrintSettings.headerStrCenter = hfIdToValue(gDialog.hCenterOption);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче