From 58cfbb8ad212292456a70fd8a2d5ac601a567d1f Mon Sep 17 00:00:00 2001 From: "rods%netscape.com" Date: Fri, 15 Mar 2002 13:55:54 +0000 Subject: [PATCH] 1) Removes most all the unneeded data from nsPrintOptions service. All data should be in the PrintSettings. 2) Removed unneeded methods from PrintOptions 3) PrintOption can now read and write (most) all the data in a PrintSettings object. The items not saved are those used during the printing process and it wouldn't make any sense to save them. 4) Adds a prefs for turning on and off the automatic saving of PrintSettings. If this is turned on it is almost the same as using the global PS. 5) On Linux it turns on the saving of PS prefs and turns on the global PS. Meaning it will always use a single Global PS object. 6) The PrintSettings can be initialized from a generic non-printer specific set of prefs. Then if a printer name is available in the PS then it tries to initialize itself from the printer specific prefs. This enables to define "back stop" prefs for picking up first. Then the printer specific prefs can override those settings. For example, we may define in prefs that the default paper size 8.5x11, then if if the "save PS prefs" is turned on, for a given printer it might save 8.5x16 as the size. 7) A "flags" arg has been added so you can indicate which prefs you want read or written. git-svn-id: svn://10.0.0.236/trunk@116641 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/base/src/nsDocumentViewer.cpp | 57 +- .../activex/src/control/MozillaBrowser.cpp | 29 +- .../browser/webBrowser/nsIWebBrowserPrint.idl | 45 +- mozilla/gfx/idl/nsIPrintOptions.idl | 184 +- mozilla/gfx/idl/nsIPrintSettings.idl | 31 + mozilla/gfx/src/nsPrintOptionsImpl.cpp | 1683 +++++++---------- mozilla/gfx/src/nsPrintOptionsImpl.h | 50 +- mozilla/gfx/src/nsPrintSettingsImpl.cpp | 40 +- mozilla/gfx/src/nsPrintSettingsImpl.h | 3 +- .../src/windows/nsDeviceContextSpecWin.cpp | 5 +- mozilla/layout/base/nsDocumentViewer.cpp | 57 +- mozilla/modules/libpref/src/init/all.js | 7 +- mozilla/modules/libpref/src/unix/unix.js | 1 - .../plugin/base/src/nsPluginViewer.cpp | 26 +- .../global/resources/content/printdialog.js | 34 +- .../resources/content/unix/printjoboptions.js | 29 +- 16 files changed, 936 insertions(+), 1345 deletions(-) diff --git a/mozilla/content/base/src/nsDocumentViewer.cpp b/mozilla/content/base/src/nsDocumentViewer.cpp index af04ece56b0..d27d54b3e0f 100644 --- a/mozilla/content/base/src/nsDocumentViewer.cpp +++ b/mozilla/content/base/src/nsDocumentViewer.cpp @@ -3828,7 +3828,7 @@ DocumentViewerImpl::FindXMostFrameInList(nsIPresContext* aPresContext, rect.y += aY; nscoord xMost = rect.XMost(); -#ifdef DEBUG_PRINTING_X // keep this here but leave it turned off +#ifdef DEBUG_PRINTING // keep this here but leave it turned off nsAutoString tmp; nsIFrameDebug* frameDebug; if (NS_SUCCEEDED(CallQueryInterface(child, &frameDebug))) { @@ -3839,7 +3839,7 @@ DocumentViewerImpl::FindXMostFrameInList(nsIPresContext* aPresContext, if (xMost > aMaxWidth) { aMaxWidth = xMost; -#ifdef DEBUG_PRINTING_X // keep this here but leave it turned off +#ifdef DEBUG_PRINTING // keep this here but leave it turned off printf("%p - %d %s ", child, aMaxWidth, NS_LossyConvertUCS2toASCII(tmp).get()); if (aList == nsLayoutAtoms::overflowList) printf(" nsLayoutAtoms::overflowList\n"); if (aList == nsLayoutAtoms::floaterList) printf(" nsLayoutAtoms::floaterList\n"); @@ -7354,36 +7354,6 @@ DocumentViewerImpl::GetCurrentPrintSettings(nsIPrintSettings * *aCurrentPrintSet return NS_OK; } -/* attribute nsIPrintSettings globalPrintSettingsValues; */ -NS_IMETHODIMP -DocumentViewerImpl::GetGlobalPrintSettingsValues(nsIPrintSettings * *aGlobalPrintSettingsValues) -{ - NS_ENSURE_ARG_POINTER(aGlobalPrintSettingsValues); - NS_ENSURE_ARG_POINTER(*aGlobalPrintSettingsValues); - - nsresult rv = NS_ERROR_FAILURE; - if (aGlobalPrintSettingsValues && *aGlobalPrintSettingsValues) { - nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = printService->GetPrintSettingsValues(aGlobalPrintSettingsValues); - } - } - return rv; -} - -NS_IMETHODIMP -DocumentViewerImpl::SetGlobalPrintSettingsValues(nsIPrintSettings * aGlobalPrintSettingsValues) -{ - NS_ENSURE_ARG_POINTER(aGlobalPrintSettingsValues); - - nsresult rv = NS_ERROR_FAILURE; - nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = printService->SetPrintSettingsValues(aGlobalPrintSettingsValues); - } - return rv; -} - /* void cancel (); */ NS_IMETHODIMP DocumentViewerImpl::Cancel() @@ -7396,6 +7366,29 @@ DocumentViewerImpl::Cancel() return NS_OK; } +/* void initPrintSettingsFromPrefs (in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); */ +NS_IMETHODIMP +DocumentViewerImpl::InitPrintSettingsFromPrefs(nsIPrintSettings *aPrintSettings, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + nsresult rv; + nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); + if (NS_SUCCEEDED(rv) && printService) { + return printService->InitPrintSettingsFromPrefs(aPrintSettings, aUsePrinterNamePrefix, aFlags); + } + return NS_OK; +} + +/* void savePrintSettingsToPrefs (in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); */ +NS_IMETHODIMP +DocumentViewerImpl::SavePrintSettingsToPrefs(nsIPrintSettings *aPrintSettings, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + nsresult rv; + nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); + if (NS_SUCCEEDED(rv) && printService) { + return printService->SavePrintSettingsToPrefs(aPrintSettings, aUsePrinterNamePrefix, aFlags); + } + return NS_OK; +} /** --------------------------------------------------- * Get the Focused Frame for a documentviewer diff --git a/mozilla/embedding/browser/activex/src/control/MozillaBrowser.cpp b/mozilla/embedding/browser/activex/src/control/MozillaBrowser.cpp index 20f4cab4037..4ed4537787c 100644 --- a/mozilla/embedding/browser/activex/src/control/MozillaBrowser.cpp +++ b/mozilla/embedding/browser/activex/src/control/MozillaBrowser.cpp @@ -76,7 +76,6 @@ static HANDLE s_hHackedNonReentrancy = NULL; {0xa2112d6a, 0x0e28, 0x421f, {0xb4, 0x6a, 0x25, 0xc0, 0xb3, 0x8, 0xcb, 0xd0}} static NS_DEFINE_CID(kPromptServiceCID, NS_PROMPTSERVICE_CID); -static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID); // Macros to return errors from bad calls to the automation // interfaces and sets a descriptive string on IErrorInfo so VB programmers @@ -1434,27 +1433,27 @@ HRESULT CMozillaBrowser::UnloadBrowserHelpers() // Print document HRESULT CMozillaBrowser::PrintDocument(BOOL promptUser) { - nsresult rv; - - PRBool oldPrintSilent = PR_FALSE; - nsCOMPtr printService = - do_GetService(kPrintOptionsCID, &rv); - if (printService) - { - printService->GetPrintSilent(&oldPrintSilent); - printService->SetPrintSilent(promptUser ? PR_FALSE : PR_TRUE); - } - // Print the contents nsCOMPtr browserAsPrint = do_GetInterface(mWebBrowser); + NS_ASSERTION(browserAsPrint, "No nsIWebBrowserPrint!"); + + PRBool oldPrintSilent = PR_FALSE; + nsCOMPtr printSettings; + browserAsPrint->GetGlobalPrintSettings(getter_AddRefs(printSettings)); + if (printSettings) + { + printSettings->GetPrintSilent(&oldPrintSilent); + printSettings->SetPrintSilent(promptUser ? PR_FALSE : PR_TRUE); + } + PrintListener *listener = new PrintListener; nsCOMPtr printListener = do_QueryInterface(listener); - browserAsPrint->Print(nsnull, nsnull); + browserAsPrint->Print(printSettings, nsnull); listener->WaitForComplete(); - if (printService) + if (printSettings) { - printService->SetPrintSilent(oldPrintSilent); + printSettings->SetPrintSilent(oldPrintSilent); } return S_OK; diff --git a/mozilla/embedding/browser/webBrowser/nsIWebBrowserPrint.idl b/mozilla/embedding/browser/webBrowser/nsIWebBrowserPrint.idl index f63dbcded6b..3a5db6f9698 100644 --- a/mozilla/embedding/browser/webBrowser/nsIWebBrowserPrint.idl +++ b/mozilla/embedding/browser/webBrowser/nsIWebBrowserPrint.idl @@ -97,15 +97,44 @@ interface nsIWebBrowserPrint : nsISupports void initPrintSettingsFromPrinter(in wstring aPrinterName, in nsIPrintSettings aPrintSettings); /** - * Use this to Set and Get the current values of the last print invocation - * of "print" or "printpreview". The print engine always sets the PrintSettings - * from whoever is printing (or printpreview'ing) into the global settings. - * - * It is the responsibilitity of those implementing page setup - * to set their setting into the global settings if they want those new value - * to available to other callers of "globalPrintSettingsValues" + * Reads PrintSettings values from Prefs, + * the values to be read are indicated by the "flags" arg. + * + * First it reads in the "generic" set of PrintSetings not associated with any printer + * then it uses the PrinterName in the PrinterSettings to read any settings that were saved + * just for that printer. + * + * aPS - PrintSettings to have its settings read + * aUsePrinterNamePrefix - indicates whether to use the printer name as a prefix + * aFlags - indicates which prefs to read, see nsIPrintSettings.idl for the const values. + * + * Items not read: + * startPageRange, endPageRange, scaling, printRange, title + * docURL, howToEnableFrameUI, isCancelled, printFrameTypeUsage + * printFrameType, printSilent, shrinkToFit, numCopies + * */ - attribute nsIPrintSettings globalPrintSettingsValues; + void initPrintSettingsFromPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); + + /** + * Writes PrintSettings values to Prefs, + * the values to be written are indicated by the "flags" arg. + * + * If there is no PrinterName in the PrinterSettings + * the values are saved as the "generic" values not associated with any printer. + * If a PrinterName is there, then it saves the items qualified for that Printer + * + * aPS - PrintSettings to have its settings saved + * aUsePrinterNamePrefix - indicates whether to use the printer name as a prefix + * aFlags - indicates which prefs to save, see nsIPrintSettings.idl for the const values. + * + * Items not written: + * startPageRange, endPageRange, scaling, printRange, title + * docURL, howToEnableFrameUI, isCancelled, printFrameTypeUsage + * printFrameType, printSilent, shrinkToFit, numCopies + * + */ + void savePrintSettingsToPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); /** * This returns whether the current document is a frameset document diff --git a/mozilla/gfx/idl/nsIPrintOptions.idl b/mozilla/gfx/idl/nsIPrintOptions.idl index ed88186a1e4..2b201a9d981 100644 --- a/mozilla/gfx/idl/nsIPrintOptions.idl +++ b/mozilla/gfx/idl/nsIPrintOptions.idl @@ -62,100 +62,11 @@ interface nsISimpleEnumerator; interface nsIPrintOptions : nsISupports { - /* Print Option Flags for Bit Field*/ - const long kOptPrintOddPages = 0x00000001; - const long kOptPrintEvenPages = 0x00000002; - const long kPrintOptionsEnableSelectionRB = 0x00000004; - - /* Print Range Enums */ - const long kRangeAllPages = 0; - const long kRangeSpecifiedPageRange = 1; - const long kRangeSelection = 2; - const long kRangeFocusFrame = 3; - - /* Justification Enums */ - const long kJustLeft = 0; - const long kJustCenter = 1; - const long kJustRight = 2; - - /** - * Page Size Constants (NOTE: These have been deprecated!); - */ - const short kLetterPaperSize = 0; - const short kLegalPaperSize = 1; - const short kExecutivePaperSize = 2; - const short kA4PaperSize = 3; - const short kA3PaperSize = 4; - - /** - * FrameSet Default Type Constants - */ - const short kUseInternalDefault = 0; - const short kUseSettingWhenPossible = 1; - - /** - * Page Size Type Constants - */ - const short kPaperSizeNativeData = 0; - const short kPaperSizeDefined = 1; - - /** - * Page Size Unit Constants - */ - const short kPaperSizeInches = 0; - const short kPaperSizeMillimeters = 1; - - /** - * Orientation Constants - */ - const short kPortraitOrientation = 0; - const short kLandscapeOrientation = 1; - - /** - * Print Frame Constants - */ - const short kNoFrames = 0; - const short kFramesAsIs = 1; - const short kSelectedFrame = 2; - const short kEachFrameSep = 3; - - /** - * How to Enable Frame Set Printing Constants - */ - const short kFrameEnableNone = 0; - const short kFrameEnableAll = 1; - const short kFrameEnableAsIsAndEach = 2; - /** * Show Native Print Options dialog, this may not be supported on all platforms */ void ShowPrintSetupDialog(in nsIPrintSettings aThePrintSettings); - /** - * Set PrintOptions - */ - void SetPrintOptions(in PRInt32 aType, in PRBool aTurnOnOff); - - /** - * Get PrintOptions - */ - PRBool GetPrintOptions(in PRInt32 aType); - - /** - * Set PrintOptions Bit field - */ - PRInt32 GetPrintOptionsBits(); - - /** - * Read Prefs - */ - void ReadPrefs(); - - /** - * Write Prefs - */ - void WritePrefs(); - /** * Creates a new PrintSettnigs Object * and initializes it from prefs @@ -171,79 +82,20 @@ interface nsIPrintOptions : nsISupports /** * Initialize the values in the PrintSettings from Prefs + * aPS - PrintSettings to have its settings read + * aUsePrinterNamePrefix - indicates whether to use the printer name as a prefix */ - void InitPrintSettingsFromPrefs(in nsIPrintSettings aPO); + void initPrintSettingsFromPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); /** - * Data Members + * Save all the PrintSettings to Prefs. + * This is on a printer by printer basis + * Or saved generically if the printer name is null or empty + * + * aPS - PrintSettings to have its settings saved + * aUsePrinterNamePrefix - indicates whether to use the printer name as a prefix */ - attribute long startPageRange; - attribute long endPageRange; - - attribute double marginTop; /* these are in inches */ - attribute double marginLeft; - attribute double marginBottom; - attribute double marginRight; - - attribute double scaling; /* values 0.0 - 1.0 */ - attribute boolean printBGColors; /* Print Background Colors */ - attribute boolean printBGImages; /* Print Background Images */ - - attribute short printRange; - - attribute wstring title; - attribute wstring docURL; - - attribute wstring headerStrLeft; - attribute wstring headerStrCenter; - attribute wstring headerStrRight; - - attribute wstring footerStrLeft; - attribute wstring footerStrCenter; - attribute wstring footerStrRight; - - attribute short howToEnableFrameUI; - attribute boolean isCancelled; - attribute short printFrameTypeUsage; /* indicates whether to use the interal value or not*/ - attribute short printFrameType; - attribute boolean printSilent; /* print without putting up the dialog */ - - attribute nsIPrintSettings printSettingsValues; /* used copy the values to/from the settings obj*/ - attribute nsIPrintSettings printSettings; /* used to set and get the current object */ - - /* Additional XP Related */ - attribute short paperSizeType; /* use native data or is defined here */ - attribute short paperData; /* native data value */ - attribute double paperWidth; /* width of the paper in inches or mm */ - attribute double paperHeight; /* height of the paper in inches or mm */ - attribute short paperSizeUnit; /* paper is in inches or mm */ - - attribute long paperSize; /* This has been deprecated */ - - attribute boolean printReversed; - attribute boolean printInColor; /* a false means grayscale */ - attribute long orientation; /* see orientation consts */ - attribute wstring printCommand; - attribute long numCopies; - attribute wstring printerName; - attribute boolean printToFile; - attribute wstring toFileName; - - attribute long printPageDelay; /* in milliseconds */ - - /* No Script Methods */ - - [noscript] void SetFontNamePointSize(in nsNativeStringRef aName, in PRInt32 aPointSize); - - [noscript] void SetMarginInTwips(in nsNativeMarginRef aMargin); - /* Purposely made this an "in" arg */ - [noscript] void GetMarginInTwips(in nsNativeMarginRef aMargin); - - [noscript] void SetDefaultFont(in nsNativeFontRef aMargin); - /* Purposely made this an "in" arg */ - [noscript] void GetDefaultFont(in nsNativeFontRef aMargin); - - [noscript] void GetPageSizeInTwips(out long aWidth, out long aHeight); + void savePrintSettingsToPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); /** * available Printers @@ -255,6 +107,22 @@ interface nsIPrintOptions : nsISupports */ void displayJobProperties (in wstring aPrinter, in nsIPrintSettings aPrintSettings, out boolean aDisplayed); + // Attributes + attribute boolean isCancelled; + + attribute wstring title; + attribute wstring docURL; + + attribute boolean printToFile; + attribute wstring toFileName; + + // no script methods + [noscript] void SetFontNamePointSize(in nsNativeStringRef aName, in PRInt32 aPointSize); + + [noscript] void SetDefaultFont(in nsNativeFontRef aFont); + /* Purposely made this an "in" arg */ + [noscript] void GetDefaultFont(in nsNativeFontRef aFont); + /** * Native data constants */ diff --git a/mozilla/gfx/idl/nsIPrintSettings.idl b/mozilla/gfx/idl/nsIPrintSettings.idl index 929e0d06e94..4447f24c225 100644 --- a/mozilla/gfx/idl/nsIPrintSettings.idl +++ b/mozilla/gfx/idl/nsIPrintSettings.idl @@ -59,6 +59,36 @@ interface nsIPrintSettings : nsISupports { + /** + * PrintSettings to be Saved Navigation Constants + */ + const unsigned long kInitSaveOddEvenPages = 0x00000001; + const unsigned long kInitSaveHeaderLeft = 0x00000002; + const unsigned long kInitSaveHeaderCenter = 0x00000004; + const unsigned long kInitSaveHeaderRight = 0x00000008; + const unsigned long kInitSaveFooterLeft = 0x00000010; + const unsigned long kInitSaveFooterCenter = 0x00000020; + const unsigned long kInitSaveFooterRight = 0x00000040; + const unsigned long kInitSaveBGColors = 0x00000080; + const unsigned long kInitSaveBGImages = 0x00000100; + const unsigned long kInitSavePaperSize = 0x00000200; + const unsigned long kInitSavePaperName = 0x00000400; + const unsigned long kInitSavePaperSizeUnit = 0x00000800; + const unsigned long kInitSavePaperSizeType = 0x00001000; + const unsigned long kInitSavePaperData = 0x00002000; + const unsigned long kInitSavePaperWidth = 0x00004000; + const unsigned long kInitSavePaperHeight = 0x00008000; + + const unsigned long kInitSaveReversed = 0x00010000; + const unsigned long kInitSaveInColor = 0x00020000; + const unsigned long kInitSaveOrientation = 0x00040000; + const unsigned long kInitSavePrintCommand = 0x00080000; + const unsigned long kInitSavePrinterName = 0x00100000; + const unsigned long kInitSavePrintToFile = 0x00200000; + const unsigned long kInitSaveToFileName = 0x00400000; + const unsigned long kInitSavePageDelay = 0x00800000; + const unsigned long kInitSaveMargins = 0x01000000; + const unsigned long kInitSaveAll = 0xFFFFFFFF; /* Print Option Flags for Bit Field*/ const long kPrintOddPages = 0x00000001; @@ -171,6 +201,7 @@ interface nsIPrintSettings : nsISupports attribute boolean shrinkToFit; /* shrinks content to fit on page */ /* Additional XP Related */ + attribute wstring paperName; /* name of paper */ attribute short paperSizeType; /* use native data or is defined here */ attribute short paperData; /* native data value */ attribute double paperWidth; /* width of the paper in inches or mm */ diff --git a/mozilla/gfx/src/nsPrintOptionsImpl.cpp b/mozilla/gfx/src/nsPrintOptionsImpl.cpp index f9209250b44..fc2a1efcd72 100644 --- a/mozilla/gfx/src/nsPrintOptionsImpl.cpp +++ b/mozilla/gfx/src/nsPrintOptionsImpl.cpp @@ -65,48 +65,44 @@ static NS_DEFINE_IID(kCPrinterEnumerator, NS_PRINTER_ENUMERATOR_CID); NS_IMPL_ISUPPORTS1(nsPrintOptions, nsIPrintOptions) // Pref Constants -const char kMarginTop[] = "print.print_margin_top"; -const char kMarginLeft[] = "print.print_margin_left"; -const char kMarginBottom[] = "print.print_margin_bottom"; -const char kMarginRight[] = "print.print_margin_right"; +const char kMarginTop[] = "print_margin_top"; +const char kMarginLeft[] = "print_margin_left"; +const char kMarginBottom[] = "print_margin_bottom"; +const char kMarginRight[] = "print_margin_right"; // Prefs for Print Options -const char kPrintEvenPages[] = "print.print_evenpages"; -const char kPrintOddPages[] = "print.print_oddpages"; -const char kPrintHeaderStr1[] = "print.print_headerleft"; -const char kPrintHeaderStr2[] = "print.print_headercenter"; -const char kPrintHeaderStr3[] = "print.print_headerright"; -const char kPrintFooterStr1[] = "print.print_footerleft"; -const char kPrintFooterStr2[] = "print.print_footercenter"; -const char kPrintFooterStr3[] = "print.print_footerright"; +const char kPrintEvenPages[] = "print_evenpages"; +const char kPrintOddPages[] = "print_oddpages"; +const char kPrintHeaderStrLeft[] = "print_headerleft"; +const char kPrintHeaderStrCenter[] = "print_headercenter"; +const char kPrintHeaderStrRight[] = "print_headerright"; +const char kPrintFooterStrLeft[] = "print_footerleft"; +const char kPrintFooterStrCenter[] = "print_footercenter"; +const char kPrintFooterStrRight[] = "print_footerright"; // Additional Prefs -const char kPrintPaperSize[] = "print.print_paper_size"; // this has been deprecated +const char kPrintPaperSize[] = "print_paper_size"; // this has been deprecated -const char kPrintReversed[] = "print.print_reversed"; -const char kPrintColor[] = "print.print_color"; -const char kPrintPaperSizeType[] = "print.print_paper_size_type"; -const char kPrintPaperData[] = "print.print_paper_data"; -const char kPrintPaperSizeUnit[] = "print.print_paper_size_unit"; -const char kPrintPaperWidth[] = "print.print_paper_width"; -const char kPrintPaperHeight[]= "print.print_paper_height"; -const char kPrintOrientation[]= "print.print_orientation"; -const char kPrintCommand[] = "print.print_command"; -const char kPrinter[] = "print.print_printer"; -const char kPrintFile[] = "print.print_file"; -const char kPrintToFile[] = "print.print_tofile"; -const char kPrintPageDelay[] = "print.print_pagedelay"; +const char kPrintReversed[] = "print_reversed"; +const char kPrintInColor[] = "print_in_color"; +const char kPrintPaperName[] = "print_paper_name"; +const char kPrintPaperSizeType[] = "print_paper_size_type"; +const char kPrintPaperData[] = "print_paper_data"; +const char kPrintPaperSizeUnit[] = "print_paper_size_unit"; +const char kPrintPaperWidth[] = "print_paper_width"; +const char kPrintPaperHeight[] = "print_paper_height"; +const char kPrintOrientation[] = "print_orientation"; +const char kPrintCommand[] = "print_command"; +const char kPrinterName[] = "print_printer"; +const char kPrintToFile[] = "print_to_file"; +const char kPrintToFileName[] = "print_to_filename"; +const char kPrintPageDelay[] = "print_pagedelay"; +const char kPrintBGColors[] = "print_bgcolor"; +const char kPrintBGImages[] = "print_bgimages"; -// There are currently NOT supported -//const char kPrintBevelLines[] = "print.print_bevellines"; -//const char kPrintBlackText[] = "print.print_blacktext"; -//const char kPrintBlackLines[] = "print.print_blacklines"; -//const char kPrintLastPageFirst[] = "print.print_lastpagefirst"; -//const char kPrintBackgrounds[] = "print.print_backgrounds"; - -const char kLeftJust[] = "left"; -const char kCenterJust[] = "center"; -const char kRightJust[] = "right"; +const char kJustLeft[] = "left"; +const char kJustCenter[] = "center"; +const char kJustRight[] = "right"; nsFont* nsPrintOptions::sDefaultFont = nsnull; @@ -115,51 +111,16 @@ nsFont* nsPrintOptions::sDefaultFont = nsnull; * @update 6/21/00 dwc */ nsPrintOptions::nsPrintOptions() : - mPrintOptions(0L), - mPrintRange(kRangeAllPages), - mStartPageNum(1), - mEndPageNum(1), - mScaling(1.0), - mNumCopies(1), - mPrintFrameTypeUsage(kUseInternalDefault), - mPrintFrameType(kFramesAsIs), - mHowToEnableFrameUI(kFrameEnableNone), mIsCancelled(PR_FALSE), - mPrintSilent(PR_FALSE), - mPrintPageDelay(500), - mPrintSettingsObj(nsnull), - mPaperSizeType(kPaperSizeDefined), - mPaperData(0), - mPaperWidth(8.5), - mPaperHeight(11.0), - mPaperSizeUnit(kPaperSizeInches), - mPaperSize(kLetterPaperSize), /* this has been deprecated */ - mPrintReversed(PR_FALSE), - mPrintInColor(PR_TRUE), - mOrientation(kPortraitOrientation), mPrintToFile(PR_FALSE) { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ - nscoord halfInch = NS_INCHES_TO_TWIPS(0.5); - mMargin.SizeTo(halfInch, halfInch, halfInch, halfInch); - - mPrintOptions = kOptPrintOddPages | kOptPrintEvenPages; - if (sDefaultFont == nsnull) { sDefaultFont = new nsFont("Times", NS_FONT_STYLE_NORMAL,NS_FONT_VARIANT_NORMAL, NS_FONT_WEIGHT_NORMAL,0,NSIntPointsToTwips(10)); } - - mHeaderStrs[0].Assign(NS_LITERAL_STRING("&T")); - mHeaderStrs[2].Assign(NS_LITERAL_STRING("&U")); - - mFooterStrs[0].Assign(NS_LITERAL_STRING("&PT")); // Use &P (Page Num Only) or &PT (Page Num of Page Total) - mFooterStrs[2].Assign(NS_LITERAL_STRING("&D")); - - ReadPrefs(); - } /** --------------------------------------------------- @@ -297,46 +258,6 @@ nsPrintOptions::GetDefaultFont(nsFont &aFont) return NS_OK; } -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 6/21/00 dwc - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::SetMarginInTwips(nsMargin& aMargin) -{ - mMargin = aMargin; - return NS_OK; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 6/21/00 dwc - */ -NS_IMETHODIMP -nsPrintOptions::GetMarginInTwips(nsMargin& aMargin) -{ - aMargin = mMargin; - return NS_OK; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 6/21/00 dwc - */ -NS_IMETHODIMP -nsPrintOptions::GetPageSizeInTwips(PRInt32 *aWidth, PRInt32 *aHeight) -{ - if (mPaperSizeUnit == kPaperSizeInches) { - *aWidth = NS_INCHES_TO_TWIPS(float(mPaperWidth)); - *aHeight = NS_INCHES_TO_TWIPS(float(mPaperHeight)); - } else { - *aWidth = NS_MILLIMETERS_TO_TWIPS(float(mPaperWidth)); - *aHeight = NS_MILLIMETERS_TO_TWIPS(float(mPaperHeight)); - } - return NS_OK; -} - /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 6/21/00 dwc @@ -385,359 +306,559 @@ nsPrintOptions::ShowPrintSetupDialog(nsIPrintSettings *aPS) } +/** --------------------------------------------------- + * Helper function - Creates the "prefix" for the pref + * It is either "print." + * or "print.printer_." + */ +const char* nsPrintOptions::GetPrefName(const char * aPrefName, + const nsString& aPrinterName) +{ + if (!aPrefName || !*aPrefName) { + NS_ASSERTION(0, "Must have a valid pref name!"); + return aPrefName; + } + + mPrefName.AssignWithConversion(NS_LITERAL_STRING("print.")); + + if (aPrinterName.Length()) { + mPrefName.AppendWithConversion(NS_LITERAL_STRING("printer_")); + mPrefName.AppendWithConversion(aPrinterName); + mPrefName.AppendWithConversion(NS_LITERAL_STRING(".")); + } + mPrefName += aPrefName; + + return mPrefName.get(); + +} + +/** --------------------------------------------------- + * Helper function - Returns either the name or sets the length to zero + */ +static void GetAdjustedPrinterName(nsIPrintSettings* aPS, PRBool aUsePNP, nsString& aPrinterName) +{ + aPrinterName.SetLength(0); + + // Get the Printer Name from the PtinerSettings + // to use as a prefix for Pref Names + PRUnichar* prtName = nsnull; + if (aUsePNP && NS_SUCCEEDED(aPS->GetPrinterName(&prtName))) { + if (prtName && !*prtName) { + nsMemory::Free(prtName); + prtName = nsnull; + } + } + + if (prtName) { + aPrinterName = prtName; + PRUnichar uc = '_'; + PRUnichar space = ' '; + aPrinterName.ReplaceChar(space, uc); + } +} + /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ NS_IMETHODIMP -nsPrintOptions::SetPrintOptions(PRInt32 aType, PRBool aTurnOnOff) +nsPrintOptions::InitPrintSettingsFromPrefs(nsIPrintSettings* aPS, PRBool aUsePNP, PRUint32 aFlags) { - if (aTurnOnOff) { - mPrintOptions |= aType; - } else { - mPrintOptions &= ~aType; + nsString prtName; + // read any non printer specific prefs + // with empty printer name + nsresult rv = ReadPrefs(aPS, prtName, aFlags); + NS_ENSURE_SUCCESS(rv, rv); + + // Get the Printer Name from the PtinerSettings + // to use as a prefix for Pref Names + GetAdjustedPrinterName(aPS, aUsePNP, prtName); + if (prtName.Length()) { + // Now read any printer specific prefs + return ReadPrefs(aPS, prtName, aFlags); } return NS_OK; } -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::GetPrintOptions(PRInt32 aType, PRBool *aTurnOnOff) +//---------------------------------------------------------------------- +// Testing of read/write prefs +// This define controls debug output +#ifdef DEBUG_rods_X +static void WriteDebugStr(const char* aArg1, const char* aArg2, const PRUnichar* aStr) { - NS_ENSURE_ARG_POINTER(aTurnOnOff); - *aTurnOnOff = mPrintOptions & aType; - return NS_OK; + nsString str(aStr); + PRUnichar s = '&'; + PRUnichar r = '_'; + str.ReplaceChar(s, r); + + printf("%s %s = %s \n", aArg1, aArg2, ToNewUTF8String(str)); } +const char* kWriteStr = "Write Pref:"; +const char* kReadStr = "Read Pref:"; +#define DUMP_STR(_a1, _a2, _a3) WriteDebugStr((_a1), GetPrefName((_a2), aPrefName), (_a3)); +#define DUMP_BOOL(_a1, _a2, _a3) printf("%s %s = %s \n", (_a1), GetPrefName((_a2), aPrefName), (_a3)?"T":"F"); +#define DUMP_INT(_a1, _a2, _a3) printf("%s %s = %d \n", (_a1), GetPrefName((_a2), aPrefName), (_a3)); +#define DUMP_DBL(_a1, _a2, _a3) printf("%s %s = %10.5f \n", (_a1), GetPrefName((_a2), aPrefName), (_a3)); +#else +#define DUMP_STR(_a1, _a2, _a3) +#define DUMP_BOOL(_a1, _a2, _a3) +#define DUMP_INT(_a1, _a2, _a3) +#define DUMP_DBL(_a1, _a2, _a3) +#endif +//---------------------------------------------------------------------- /** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::GetPrintOptionsBits(PRInt32 *aBits) -{ - NS_ENSURE_ARG_POINTER(aBits); - *aBits = mPrintOptions; - return NS_OK; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::ReadPrefs() + * This will read in the generic prefs (not specific to a printer) + * or it will it can read the prefs in using the printer name to qualify + * It is either "print.attr_name" + * or "print.printer_HPLasr5.attr_name" + * +*/ +nsresult +nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUint32 aFlags) { nsCOMPtr prefs = do_GetService(NS_PREF_CONTRACTID); if (prefs) { - ReadInchesToTwipsPref(prefs, kMarginTop, mMargin.top); - ReadInchesToTwipsPref(prefs, kMarginLeft, mMargin.left); - ReadInchesToTwipsPref(prefs, kMarginBottom, mMargin.bottom); - ReadInchesToTwipsPref(prefs, kMarginRight, mMargin.right); - - ReadBitFieldPref(prefs, kPrintEvenPages, kOptPrintEvenPages); - ReadBitFieldPref(prefs, kPrintOddPages, kOptPrintOddPages); - - ReadPrefString(prefs, kPrintHeaderStr1, mHeaderStrs[0]); - ReadPrefString(prefs, kPrintHeaderStr2, mHeaderStrs[1]); - ReadPrefString(prefs, kPrintHeaderStr3, mHeaderStrs[2]); - ReadPrefString(prefs, kPrintFooterStr1, mFooterStrs[0]); - ReadPrefString(prefs, kPrintFooterStr2, mFooterStrs[1]); - ReadPrefString(prefs, kPrintFooterStr3, mFooterStrs[2]); - - // Read Additional XP Prefs - prefs->GetIntPref(kPrintPaperSize, &mPaperSize); // this has been deprecated - - prefs->GetBoolPref(kPrintReversed, &mPrintReversed); - prefs->GetBoolPref(kPrintColor, &mPrintInColor); - - PRInt32 iVal = kPaperSizeInches; - prefs->GetIntPref(kPrintPaperSizeUnit, &iVal); - mPaperSizeUnit = PRInt16(iVal); - iVal = kPaperSizeDefined; - prefs->GetIntPref(kPrintPaperSizeType, &iVal); - mPaperSizeType = PRInt16(iVal); - iVal = 0; - prefs->GetIntPref(kPrintPaperData, &iVal); - mPaperData = PRInt16(iVal); - ReadPrefDouble(prefs, kPrintPaperWidth, mPaperWidth); - ReadPrefDouble(prefs, kPrintPaperHeight, mPaperHeight); - - prefs->GetIntPref(kPrintOrientation, &mOrientation); - ReadPrefString(prefs, kPrintCommand, mPrintCommand); - ReadPrefString(prefs, kPrinter, mPrinter); - prefs->GetBoolPref(kPrintFile, &mPrintToFile); - ReadPrefString(prefs, kPrintToFile, mToFileName); - prefs->GetIntPref(kPrintPageDelay, &mPrintPageDelay); - - return NS_OK; - } - return NS_ERROR_FAILURE; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::InitPrintSettingsFromPrefs(nsIPrintSettings* aPS) -{ - nsCOMPtr prefs = do_GetService(NS_PREF_CONTRACTID); - if (prefs) { - nscoord halfInch = NS_INCHES_TO_TWIPS(0.5); - nsMargin margin; - margin.SizeTo(halfInch, halfInch, halfInch, halfInch); - ReadInchesToTwipsPref(prefs, kMarginTop, margin.top); - ReadInchesToTwipsPref(prefs, kMarginLeft, margin.left); - ReadInchesToTwipsPref(prefs, kMarginBottom, margin.bottom); - ReadInchesToTwipsPref(prefs, kMarginRight, margin.right); - aPS->SetMarginInTwips(margin); - - // Note: Following prefs are not required to be in a pref - // each has a proper default defined here. - // The following two are special in that they set a bit field - // which is initialized in the constructor. - PRBool b; - if (NS_SUCCEEDED(prefs->GetBoolPref(kPrintEvenPages, &b))) - aPS->SetPrintOptions(kOptPrintEvenPages, b); - - if (NS_SUCCEEDED(prefs->GetBoolPref(kPrintOddPages, &b))) - aPS->SetPrintOptions(kOptPrintOddPages, b); + if (aFlags & nsIPrintSettings::kInitSaveMargins) { + nscoord halfInch = NS_INCHES_TO_TWIPS(0.5); + nsMargin margin; + margin.SizeTo(halfInch, halfInch, halfInch, halfInch); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginTop, aPrefName), margin.top); + DUMP_INT(kReadStr, kMarginTop, margin.top); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginLeft, aPrefName), margin.left); + DUMP_INT(kReadStr, kMarginLeft, margin.left); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginBottom, aPrefName), margin.bottom); + DUMP_INT(kReadStr, kMarginBottom, margin.bottom); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginRight, aPrefName), margin.right); + DUMP_INT(kReadStr, kMarginRight, margin.right); + aPS->SetMarginInTwips(margin); + } + PRBool b; nsString str; - str.SetLength(0); - ReadPrefString(prefs, kPrintHeaderStr1, str); - aPS->SetHeaderStrLeft(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintHeaderStr2, str); - aPS->SetHeaderStrCenter(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintHeaderStr3, str); - aPS->SetHeaderStrRight(str.get()); + PRInt32 iVal; + double dbl; - str.SetLength(0); - ReadPrefString(prefs, kPrintFooterStr1, str); - aPS->SetFooterStrRight(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintFooterStr2, str); - aPS->SetFooterStrCenter(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintFooterStr3, str); - aPS->SetFooterStrRight(str.get()); + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintEvenPages, aPrefName), &b))) { + aPS->SetPrintOptions(nsIPrintSettings::kPrintEvenPages, b); + DUMP_BOOL(kReadStr, kPrintEvenPages, b); + } + } - // Read Additional XP Prefs - PRInt32 iVal = kLetterPaperSize; - prefs->GetIntPref(kPrintPaperSize, &iVal); // this has been deprecated - aPS->SetPaperSize(iVal); + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintOddPages, aPrefName), &b))) { + aPS->SetPrintOptions(nsIPrintSettings::kPrintOddPages, b); + DUMP_BOOL(kReadStr, kPrintOddPages, b); + } + } - b = PR_FALSE; - prefs->GetBoolPref(kPrintReversed, &b); - aPS->SetPrintReversed(b); + if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintHeaderStrLeft, aPrefName), str))) { + aPS->SetHeaderStrLeft(str.get()); + DUMP_STR(kReadStr, kPrintHeaderStrLeft, str.get()); + } + } - b = PR_TRUE; - prefs->GetBoolPref(kPrintColor, &b); - aPS->SetPrintInColor(b); + if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintHeaderStrCenter, aPrefName), str))) { + aPS->SetHeaderStrCenter(str.get()); + DUMP_STR(kReadStr, kPrintHeaderStrCenter, str.get()); + } + } - iVal = kPaperSizeInches; - prefs->GetIntPref(kPrintPaperSizeUnit, &iVal); - aPS->SetPaperSizeUnit(iVal); + if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintHeaderStrRight, aPrefName), str))) { + aPS->SetHeaderStrRight(str.get()); + DUMP_STR(kReadStr, kPrintHeaderStrRight, str.get()); + } + } - iVal = kPaperSizeDefined; - prefs->GetIntPref(kPrintPaperSizeType, &iVal); - aPS->SetPaperSizeType(iVal); + if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintFooterStrLeft, aPrefName), str))) { + aPS->SetFooterStrLeft(str.get()); + DUMP_STR(kReadStr, kPrintFooterStrLeft, str.get()); + } + } - iVal = 0; - prefs->GetIntPref(kPrintPaperData, &iVal); - aPS->SetPaperData(iVal); + if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintFooterStrCenter, aPrefName), str))) { + aPS->SetFooterStrCenter(str.get()); + DUMP_STR(kReadStr, kPrintFooterStrCenter, str.get()); + } + } - double d = 8.5; - ReadPrefDouble(prefs, kPrintPaperWidth, d); - aPS->SetPaperWidth(d); + if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintFooterStrRight, aPrefName), str))) { + aPS->SetFooterStrRight(str.get()); + DUMP_STR(kReadStr, kPrintFooterStrRight, str.get()); + } + } - d = 11.0; - ReadPrefDouble(prefs, kPrintPaperHeight, d); - aPS->SetPaperHeight(d); + if (aFlags & nsIPrintSettings::kInitSaveBGColors) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintBGColors, aPrefName), &b))) { + aPS->SetPrintBGColors(b); + DUMP_BOOL(kReadStr, kPrintBGColors, b); + } + } - iVal = kPortraitOrientation; - prefs->GetIntPref(kPrintOrientation, &mOrientation); - aPS->SetOrientation(iVal); + if (aFlags & nsIPrintSettings::kInitSaveBGImages) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintBGImages, aPrefName), &b))) { + aPS->SetPrintBGImages(b); + DUMP_BOOL(kReadStr, kPrintBGImages, b); + } + } - str.SetLength(0); - ReadPrefString(prefs, kPrintCommand, str); - aPS->SetPrintCommand(str.get()); + if (aFlags & nsIPrintSettings::kInitSavePaperSize) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperSize, aPrefName), &iVal))) { // this has been deprecated + aPS->SetPaperSize(iVal); + DUMP_INT(kReadStr, kPrintPaperSize, iVal); + } + } - str.SetLength(0); - ReadPrefString(prefs, kPrinter, mPrinter); - aPS->SetPrinterName(str.get()); + if (aFlags & nsIPrintSettings::kInitSaveReversed) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintReversed, aPrefName), &b))) { + aPS->SetPrintReversed(b); + DUMP_BOOL(kReadStr, kPrintReversed, b); + } + } - b = PR_FALSE; - prefs->GetBoolPref(kPrintFile, &b); - aPS->SetPrintToFile(b); + if (aFlags & nsIPrintSettings::kInitSaveInColor) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintInColor, aPrefName), &b))) { + aPS->SetPrintInColor(b); + DUMP_BOOL(kReadStr, kPrintInColor, b); + } + } - ReadPrefString(prefs, kPrintToFile, mToFileName); + if (aFlags & nsIPrintSettings::kInitSavePaperName) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintPaperName, aPrefName), str))) { + aPS->SetPaperName(str.get()); + DUMP_STR(kReadStr, kPrintPaperName, str.get()); + } + } - iVal = 500; - prefs->GetIntPref(kPrintPageDelay, &iVal); - aPS->SetPrintPageDelay(iVal); + if (aFlags & nsIPrintSettings::kInitSavePaperSizeUnit) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperSizeUnit, aPrefName), &iVal))) { + aPS->SetPaperSizeUnit(iVal); + DUMP_INT(kReadStr, kPrintPaperSizeUnit, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSizeType) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperSizeType, aPrefName), &iVal))) { + aPS->SetPaperSizeType(iVal); + DUMP_INT(kReadStr, kPrintPaperSizeType, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperData) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperData, aPrefName), &iVal))) { + aPS->SetPaperData(iVal); + DUMP_INT(kReadStr, kPrintPaperData, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperWidth) { + if (NS_SUCCEEDED(ReadPrefDouble(prefs, GetPrefName(kPrintPaperWidth, aPrefName), dbl))) { + aPS->SetPaperWidth(dbl); + DUMP_DBL(kReadStr, kPrintPaperWidth, dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperHeight) { + if (NS_SUCCEEDED(ReadPrefDouble(prefs, GetPrefName(kPrintPaperHeight, aPrefName), dbl))) { + aPS->SetPaperHeight(dbl); + DUMP_DBL(kReadStr, kPrintPaperHeight, dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveOrientation) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintOrientation, aPrefName), &iVal))) { + aPS->SetOrientation(iVal); + DUMP_INT(kReadStr, kPrintOrientation, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintCommand) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintCommand, aPrefName), str))) { + aPS->SetPrintCommand(str.get()); + DUMP_STR(kReadStr, kPrintCommand, str.get()); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrinterName) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrinterName, aPrefName), str))) { + aPS->SetPrinterName(str.get()); + DUMP_STR(kReadStr, kPrinterName, str.get()); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintToFile) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintToFile, aPrefName), &b))) { + aPS->SetPrintToFile(b); + DUMP_BOOL(kReadStr, kPrintToFile, b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveToFileName) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintToFileName, aPrefName), str))) { + aPS->SetToFileName(str.get()); + DUMP_STR(kReadStr, kPrintToFileName, str.get()); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePageDelay) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPageDelay, aPrefName), &iVal))) { + aPS->SetPrintPageDelay(iVal); + DUMP_INT(kReadStr, kPrintPageDelay, iVal); + } + } + + // Not Reading In: + // Scaling + // ShrinkToFit + // Number of Copies return NS_OK; } return NS_ERROR_FAILURE; } +/* void SavePrintSettingsToPrefs (in nsIPrintSettings aPS); */ +/** --------------------------------------------------- + * This will asve into prefs most all the PrintSettings either generically (not specified printer) + * or to a specific printer. + */ +nsresult +nsPrintOptions::SavePrintSettingsToPrefs(nsIPrintSettings *aPS, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + nsString prtName; + // Get the Printer Name from the PtinerSettings + // to use as a prefix for Pref Names + GetAdjustedPrinterName(aPS, aUsePrinterNamePrefix, prtName); + + // Now write any printer specific prefs + return WritePrefs(aPS, prtName, aFlags); +} + + /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ -NS_IMETHODIMP -nsPrintOptions::WritePrefs() +nsresult +nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsString& aPrefName, PRUint32 aFlags) { + NS_ENSURE_ARG_POINTER(aPS); + nsCOMPtr prefs = do_GetService(NS_PREF_CONTRACTID); if (prefs) { - WriteInchesFromTwipsPref(prefs, kMarginTop, mMargin.top); - WriteInchesFromTwipsPref(prefs, kMarginLeft, mMargin.left); - WriteInchesFromTwipsPref(prefs, kMarginBottom, mMargin.bottom); - WriteInchesFromTwipsPref(prefs, kMarginRight, mMargin.right); + nsMargin margin; + if (aFlags & nsIPrintSettings::kInitSaveMargins) { + if (NS_SUCCEEDED(aPS->GetMarginInTwips(margin))) { + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginTop, aPrefName), margin.top); + DUMP_INT(kWriteStr, kMarginTop, margin.top); + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginLeft, aPrefName), margin.left); + DUMP_INT(kWriteStr, kMarginLeft, margin.top); + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginBottom, aPrefName), margin.bottom); + DUMP_INT(kWriteStr, kMarginBottom, margin.top); + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginRight, aPrefName), margin.right); + DUMP_INT(kWriteStr, kMarginRight, margin.top); + } + } - WriteBitFieldPref(prefs, kPrintEvenPages, kOptPrintEvenPages); - WriteBitFieldPref(prefs, kPrintOddPages, kOptPrintOddPages); + PRBool b; + PRUnichar* uStr; + PRInt32 iVal; + PRInt16 iVal16; + double dbl; - WritePrefString(prefs, kPrintHeaderStr1, mHeaderStrs[0]); - WritePrefString(prefs, kPrintHeaderStr2, mHeaderStrs[1]); - WritePrefString(prefs, kPrintHeaderStr3, mHeaderStrs[2]); - WritePrefString(prefs, kPrintFooterStr1, mFooterStrs[0]); - WritePrefString(prefs, kPrintFooterStr2, mFooterStrs[1]); - WritePrefString(prefs, kPrintFooterStr3, mFooterStrs[2]); + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(aPS->GetPrintOptions(nsIPrintSettings::kPrintEvenPages, &b))) { + DUMP_BOOL(kWriteStr, kPrintEvenPages, b); + prefs->SetBoolPref(GetPrefName(kPrintEvenPages, aPrefName), b); + } + } - // Write Additional XP Prefs - prefs->SetIntPref(kPrintPaperSize, mPaperSize); // this has been deprecated + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(aPS->GetPrintOptions(nsIPrintSettings::kPrintOddPages, &b))) { + DUMP_BOOL(kWriteStr, kPrintOddPages, b); + prefs->SetBoolPref(GetPrefName(kPrintOddPages, aPrefName), b); + } + } - prefs->SetBoolPref(kPrintReversed, mPrintReversed); - prefs->SetBoolPref(kPrintColor, mPrintInColor); - prefs->SetIntPref(kPrintPaperSizeUnit, PRInt32(mPaperSizeUnit)); - prefs->SetIntPref(kPrintPaperSizeType, PRInt32(mPaperSizeType)); - prefs->SetIntPref(kPrintPaperData, PRInt32(mPaperData)); - WritePrefDouble(prefs, kPrintPaperWidth, mPaperWidth); - WritePrefDouble(prefs, kPrintPaperHeight, mPaperHeight); - prefs->SetIntPref(kPrintOrientation, mOrientation); - WritePrefString(prefs, kPrintCommand, mPrintCommand); - WritePrefString(prefs, kPrinter, mPrinter); - prefs->SetBoolPref(kPrintFile, mPrintToFile); - WritePrefString(prefs, kPrintToFile, mToFileName); - prefs->SetIntPref(kPrintPageDelay, mPrintPageDelay); + if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { + if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(&uStr))) { + DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintHeaderStrLeft, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { + if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(&uStr))) { + DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintHeaderStrCenter, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { + if (NS_SUCCEEDED(aPS->GetHeaderStrRight(&uStr))) { + DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintHeaderStrRight, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { + if (NS_SUCCEEDED(aPS->GetFooterStrLeft(&uStr))) { + DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintFooterStrLeft, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { + if (NS_SUCCEEDED(aPS->GetFooterStrCenter(&uStr))) { + DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintFooterStrCenter, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { + if (NS_SUCCEEDED(aPS->GetFooterStrRight(&uStr))) { + DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintFooterStrRight, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveBGColors) { + if (NS_SUCCEEDED(aPS->GetPrintBGColors(&b))) { + DUMP_BOOL(kWriteStr, kPrintBGColors, b); + prefs->SetBoolPref(GetPrefName(kPrintBGColors, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveBGImages) { + if (NS_SUCCEEDED(aPS->GetPrintBGImages(&b))) { + DUMP_BOOL(kWriteStr, kPrintBGImages, b); + prefs->SetBoolPref(GetPrefName(kPrintBGImages, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSize) { + if (NS_SUCCEEDED(aPS->GetPaperSize(&iVal))) { + DUMP_INT(kWriteStr, kPrintPaperSize, iVal); + prefs->SetIntPref(GetPrefName(kPrintPaperSize, aPrefName), iVal); // this has been deprecated + } + } + + if (aFlags & nsIPrintSettings::kInitSaveReversed) { + if (NS_SUCCEEDED(aPS->GetPrintReversed(&b))) { + DUMP_BOOL(kWriteStr, kPrintReversed, b); + prefs->SetBoolPref(GetPrefName(kPrintReversed, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveInColor) { + if (NS_SUCCEEDED(aPS->GetPrintInColor(&b))) { + DUMP_BOOL(kWriteStr, kPrintInColor, b); + prefs->SetBoolPref(GetPrefName(kPrintInColor, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperName) { + if (NS_SUCCEEDED(aPS->GetPaperName(&uStr))) { + DUMP_STR(kWriteStr, kPrintPaperName, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintPaperName, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSizeUnit) { + if (NS_SUCCEEDED(aPS->GetPaperSizeUnit(&iVal16))) { + DUMP_INT(kWriteStr, kPrintPaperSizeUnit, iVal16); + prefs->SetIntPref(GetPrefName(kPrintPaperSizeUnit, aPrefName), PRInt32(iVal16)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSizeType) { + if (NS_SUCCEEDED(aPS->GetPaperSizeType(&iVal16))) { + DUMP_INT(kWriteStr, kPrintPaperSizeType, iVal16); + prefs->SetIntPref(GetPrefName(kPrintPaperSizeType, aPrefName), PRInt32(iVal16)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperData) { + if (NS_SUCCEEDED(aPS->GetPaperData(&iVal16))) { + DUMP_INT(kWriteStr, kPrintPaperData, iVal16); + prefs->SetIntPref(GetPrefName(kPrintPaperData, aPrefName), PRInt32(iVal16)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperWidth) { + if (NS_SUCCEEDED(aPS->GetPaperWidth(&dbl))) { + DUMP_DBL(kWriteStr, kPrintPaperWidth, dbl); + WritePrefDouble(prefs, GetPrefName(kPrintPaperWidth, aPrefName), dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperHeight) { + if (NS_SUCCEEDED(aPS->GetPaperHeight(&dbl))) { + DUMP_DBL(kWriteStr, kPrintPaperHeight, dbl); + WritePrefDouble(prefs, GetPrefName(kPrintPaperHeight, aPrefName), dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveOrientation) { + if (NS_SUCCEEDED(aPS->GetOrientation(&iVal))) { + DUMP_INT(kWriteStr, kPrintOrientation, iVal); + prefs->SetIntPref(GetPrefName(kPrintOrientation, aPrefName), iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintCommand) { + if (NS_SUCCEEDED(aPS->GetPrintCommand(&uStr))) { + DUMP_STR(kWriteStr, kPrintCommand, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintCommand, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrinterName) { + if (NS_SUCCEEDED(aPS->GetPrinterName(&uStr))) { + DUMP_STR(kWriteStr, kPrinterName, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrinterName, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintToFile) { + if (NS_SUCCEEDED(aPS->GetPrintToFile(&b))) { + DUMP_BOOL(kWriteStr, kPrintToFile, b); + prefs->SetBoolPref(GetPrefName(kPrintToFile, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveToFileName) { + if (NS_SUCCEEDED(aPS->GetToFileName(&uStr))) { + DUMP_STR(kWriteStr, kPrintToFileName, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintToFileName, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePageDelay) { + if (NS_SUCCEEDED(aPS->GetPrintPageDelay(&iVal))) { + DUMP_INT(kWriteStr, kPrintPageDelay, iVal); + prefs->SetIntPref(GetPrefName(kPrintPageDelay, aPrefName), iVal); + } + } + + // Not Writing Out: + // Scaling + // ShrinkToFit + // Number of Copies return NS_OK; } + return NS_ERROR_FAILURE; } -/* attribute long startPageRange; */ -NS_IMETHODIMP nsPrintOptions::GetStartPageRange(PRInt32 *aStartPageRange) -{ - //NS_ENSURE_ARG_POINTER(aStartPageRange); - *aStartPageRange = mStartPageNum; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetStartPageRange(PRInt32 aStartPageRange) -{ - mStartPageNum = aStartPageRange; - return NS_OK; -} - -/* attribute long endPageRange; */ -NS_IMETHODIMP nsPrintOptions::GetEndPageRange(PRInt32 *aEndPageRange) -{ - //NS_ENSURE_ARG_POINTER(aEndPageRange); - *aEndPageRange = mEndPageNum; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetEndPageRange(PRInt32 aEndPageRange) -{ - mEndPageNum = aEndPageRange; - return NS_OK; -} - -/* attribute boolean printReversed; */ -NS_IMETHODIMP nsPrintOptions::GetPrintReversed(PRBool *aPrintReversed) -{ - //NS_ENSURE_ARG_POINTER(aPrintReversed); - *aPrintReversed = mPrintReversed; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintReversed(PRBool aPrintReversed) -{ - mPrintReversed = aPrintReversed; - return NS_OK; -} - -/* attribute boolean printInColor; */ -NS_IMETHODIMP nsPrintOptions::GetPrintInColor(PRBool *aPrintInColor) -{ - //NS_ENSURE_ARG_POINTER(aPrintInColor); - *aPrintInColor = mPrintInColor; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintInColor(PRBool aPrintInColor) -{ - mPrintInColor = aPrintInColor; - return NS_OK; -} - -/* attribute wstring printCommand; */ -NS_IMETHODIMP nsPrintOptions::GetPrintCommand(PRUnichar * *aPrintCommand) -{ - //NS_ENSURE_ARG_POINTER(aPrintCommand); - *aPrintCommand = ToNewUnicode(mPrintCommand); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintCommand(const PRUnichar * aPrintCommand) -{ - mPrintCommand = aPrintCommand; - return NS_OK; -} - -/* attribute short orientation; */ -NS_IMETHODIMP nsPrintOptions::GetOrientation(PRInt32 *aOrientation) -{ - //NS_ENSURE_ARG_POINTER(aOrientation); - *aOrientation = mOrientation; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetOrientation(PRInt32 aOrientation) -{ - mOrientation = aOrientation; - return NS_OK; -} - -/* attribute wstring printer; */ -NS_IMETHODIMP nsPrintOptions::GetPrinterName(PRUnichar * *aPrinter) -{ - //NS_ENSURE_ARG_POINTER(aPrinter); - *aPrinter = ToNewUnicode(mPrinter); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrinterName(const PRUnichar * aPrinter) -{ - mPrinter = aPrinter; - return NS_OK; -} - -/* attribute long numCopies; */ -NS_IMETHODIMP nsPrintOptions::GetNumCopies(PRInt32 *aNumCopies) -{ - //NS_ENSURE_ARG_POINTER(aNumCopies); - *aNumCopies = mNumCopies; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetNumCopies(PRInt32 aNumCopies) -{ - mNumCopies = aNumCopies; - return NS_OK; -} - /* create and return a new |nsPrinterListEnumerator| */ NS_IMETHODIMP nsPrintOptions::AvailablePrinters(nsISimpleEnumerator **aPrinterEnumerator) { @@ -776,6 +897,19 @@ NS_IMETHODIMP nsPrintOptions::DisplayJobProperties( const PRUnichar *aPrinter, n return NS_OK; } +/* attribute long isCancelled; */ +NS_IMETHODIMP nsPrintOptions::GetIsCancelled(PRBool *aIsCancelled) +{ + NS_ENSURE_ARG_POINTER(aIsCancelled); + *aIsCancelled = mIsCancelled; + return NS_OK; +} +NS_IMETHODIMP nsPrintOptions::SetIsCancelled(PRBool aIsCancelled) +{ + mIsCancelled = aIsCancelled; + return NS_OK; +} + /* attribute boolean printToFile; */ NS_IMETHODIMP nsPrintOptions::GetPrintToFile(PRBool *aPrintToFile) { @@ -802,123 +936,6 @@ NS_IMETHODIMP nsPrintOptions::SetToFileName(const PRUnichar * aToFileName) return NS_OK; } -/* attribute long printPageDelay; */ -NS_IMETHODIMP nsPrintOptions::GetPrintPageDelay(PRInt32 *aPrintPageDelay) -{ - *aPrintPageDelay = mPrintPageDelay; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintPageDelay(PRInt32 aPrintPageDelay) -{ - mPrintPageDelay = aPrintPageDelay; - return NS_OK; -} - -/* attribute double marginTop; */ -NS_IMETHODIMP nsPrintOptions::GetMarginTop(double *aMarginTop) -{ - NS_ENSURE_ARG_POINTER(aMarginTop); - *aMarginTop = NS_TWIPS_TO_INCHES(mMargin.top); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginTop(double aMarginTop) -{ - mMargin.top = NS_INCHES_TO_TWIPS(float(aMarginTop)); - return NS_OK; -} - -/* attribute double marginLeft; */ -NS_IMETHODIMP nsPrintOptions::GetMarginLeft(double *aMarginLeft) -{ - NS_ENSURE_ARG_POINTER(aMarginLeft); - *aMarginLeft = NS_TWIPS_TO_INCHES(mMargin.left); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginLeft(double aMarginLeft) -{ - mMargin.left = NS_INCHES_TO_TWIPS(float(aMarginLeft)); - return NS_OK; -} - -/* attribute double marginBottom; */ -NS_IMETHODIMP nsPrintOptions::GetMarginBottom(double *aMarginBottom) -{ - NS_ENSURE_ARG_POINTER(aMarginBottom); - *aMarginBottom = NS_TWIPS_TO_INCHES(mMargin.bottom); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginBottom(double aMarginBottom) -{ - mMargin.bottom = NS_INCHES_TO_TWIPS(float(aMarginBottom)); - return NS_OK; -} - -/* attribute double marginRight; */ -NS_IMETHODIMP nsPrintOptions::GetMarginRight(double *aMarginRight) -{ - NS_ENSURE_ARG_POINTER(aMarginRight); - *aMarginRight = NS_TWIPS_TO_INCHES(mMargin.right); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginRight(double aMarginRight) -{ - mMargin.right = NS_INCHES_TO_TWIPS(float(aMarginRight)); - return NS_OK; -} - -/* attribute double scaling; */ -NS_IMETHODIMP nsPrintOptions::GetScaling(double *aScaling) -{ - NS_ENSURE_ARG_POINTER(aScaling); - *aScaling = mScaling; - return NS_OK; -} - -NS_IMETHODIMP nsPrintOptions::SetScaling(double aScaling) -{ - mScaling = aScaling; - return NS_OK; -} - -/* attribute boolean printBGColors; */ -NS_IMETHODIMP nsPrintOptions::GetPrintBGColors(PRBool *aPrintBGColors) -{ - NS_ENSURE_ARG_POINTER(aPrintBGColors); - *aPrintBGColors = mPrintBGColors; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintBGColors(PRBool aPrintBGColors) -{ - mPrintBGColors = aPrintBGColors; - return NS_OK; -} - -/* attribute boolean printBGImages; */ -NS_IMETHODIMP nsPrintOptions::GetPrintBGImages(PRBool *aPrintBGImages) -{ - NS_ENSURE_ARG_POINTER(aPrintBGImages); - *aPrintBGImages = mPrintBGImages; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintBGImages(PRBool aPrintBGImages) -{ - mPrintBGImages = aPrintBGImages; - return NS_OK; -} - -/* attribute long printRange; */ -NS_IMETHODIMP nsPrintOptions::GetPrintRange(PRInt16 *aPrintRange) -{ - NS_ENSURE_ARG_POINTER(aPrintRange); - *aPrintRange = mPrintRange; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintRange(PRInt16 aPrintRange) -{ - mPrintRange = aPrintRange; - return NS_OK; -} - /* attribute wstring docTitle; */ NS_IMETHODIMP nsPrintOptions::GetTitle(PRUnichar * *aTitle) { @@ -953,180 +970,6 @@ NS_IMETHODIMP nsPrintOptions::SetDocURL(const PRUnichar * aDocURL) return NS_OK; } -/* attribute wstring docTitle; */ -nsresult -nsPrintOptions::GetMarginStrs(PRUnichar * *aTitle, - nsHeaderFooterEnum aType, - PRInt16 aJust) -{ - NS_ENSURE_ARG_POINTER(aTitle); - *aTitle = nsnull; - if (aType == eHeader) { - switch (aJust) { - case kJustLeft: *aTitle = ToNewUnicode(mHeaderStrs[0]);break; - case kJustCenter: *aTitle = ToNewUnicode(mHeaderStrs[1]);break; - case kJustRight: *aTitle = ToNewUnicode(mHeaderStrs[2]);break; - } //switch - } else { - switch (aJust) { - case kJustLeft: *aTitle = ToNewUnicode(mFooterStrs[0]);break; - case kJustCenter: *aTitle = ToNewUnicode(mFooterStrs[1]);break; - case kJustRight: *aTitle = ToNewUnicode(mFooterStrs[2]);break; - } //switch - } - return NS_OK; -} - -nsresult -nsPrintOptions::SetMarginStrs(const PRUnichar * aTitle, - nsHeaderFooterEnum aType, - PRInt16 aJust) -{ - NS_ENSURE_ARG_POINTER(aTitle); - if (aType == eHeader) { - switch (aJust) { - case kJustLeft: mHeaderStrs[0] = aTitle;break; - case kJustCenter: mHeaderStrs[1] = aTitle;break; - case kJustRight: mHeaderStrs[2] = aTitle;break; - } //switch - } else { - switch (aJust) { - case kJustLeft: mFooterStrs[0] = aTitle;break; - case kJustCenter: mFooterStrs[1] = aTitle;break; - case kJustRight: mFooterStrs[2] = aTitle;break; - } //switch - } - return NS_OK; -} - -/* attribute wstring Header String Left */ -NS_IMETHODIMP nsPrintOptions::GetHeaderStrLeft(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eHeader, kJustLeft); -} -NS_IMETHODIMP nsPrintOptions::SetHeaderStrLeft(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eHeader, kJustLeft); -} - -/* attribute wstring Header String Center */ -NS_IMETHODIMP nsPrintOptions::GetHeaderStrCenter(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eHeader, kJustCenter); -} -NS_IMETHODIMP nsPrintOptions::SetHeaderStrCenter(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eHeader, kJustCenter); -} - -/* attribute wstring Header String Right */ -NS_IMETHODIMP nsPrintOptions::GetHeaderStrRight(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eHeader, kJustRight); -} -NS_IMETHODIMP nsPrintOptions::SetHeaderStrRight(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eHeader, kJustRight); -} - - -/* attribute wstring Footer String Left */ -NS_IMETHODIMP nsPrintOptions::GetFooterStrLeft(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustLeft); -} -NS_IMETHODIMP nsPrintOptions::SetFooterStrLeft(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustLeft); -} - -/* attribute wstring Footer String Center */ -NS_IMETHODIMP nsPrintOptions::GetFooterStrCenter(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustCenter); -} -NS_IMETHODIMP nsPrintOptions::SetFooterStrCenter(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustCenter); -} - -/* attribute wstring Footer String Right */ -NS_IMETHODIMP nsPrintOptions::GetFooterStrRight(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustRight); -} -NS_IMETHODIMP nsPrintOptions::SetFooterStrRight(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustRight); -} - - -/* attribute boolean isPrintFrame; */ -NS_IMETHODIMP nsPrintOptions::GetHowToEnableFrameUI(PRInt16 *aHowToEnableFrameUI) -{ - NS_ENSURE_ARG_POINTER(aHowToEnableFrameUI); - *aHowToEnableFrameUI = (PRInt32)mHowToEnableFrameUI; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetHowToEnableFrameUI(PRInt16 aHowToEnableFrameUI) -{ - mHowToEnableFrameUI = aHowToEnableFrameUI; - return NS_OK; -} - -/* attribute long printFrame; */ -NS_IMETHODIMP nsPrintOptions::GetPrintFrameType(PRInt16 *aPrintFrameType) -{ - NS_ENSURE_ARG_POINTER(aPrintFrameType); - *aPrintFrameType = mPrintFrameType; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintFrameType(PRInt16 aPrintFrameType) -{ - mPrintFrameType = aPrintFrameType; - return NS_OK; -} - -/* attribute short printFrameTypeUsage; */ -NS_IMETHODIMP nsPrintOptions::GetPrintFrameTypeUsage(PRInt16 *aPrintFrameTypeUsage) -{ - NS_ENSURE_ARG_POINTER(aPrintFrameTypeUsage); - *aPrintFrameTypeUsage = mPrintFrameTypeUsage; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintFrameTypeUsage(PRInt16 aPrintFrameTypeUsage) -{ - mPrintFrameTypeUsage = aPrintFrameTypeUsage; - return NS_OK; -} - -/* attribute long isCancelled; */ -NS_IMETHODIMP nsPrintOptions::GetIsCancelled(PRBool *aIsCancelled) -{ - NS_ENSURE_ARG_POINTER(aIsCancelled); - *aIsCancelled = mIsCancelled; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetIsCancelled(PRBool aIsCancelled) -{ - mIsCancelled = aIsCancelled; - return NS_OK; -} - - -/* attribute long isCancelled; */ -NS_IMETHODIMP nsPrintOptions::GetPrintSilent(PRBool *aPrintSilent) -{ - NS_ENSURE_ARG_POINTER(aPrintSilent); - *aPrintSilent = mPrintSilent; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintSilent(PRBool aPrintSilent) -{ - mPrintSilent = aPrintSilent; - return NS_OK; -} - /* [noscript] voidPtr GetNativeData (in short aDataType); */ NS_IMETHODIMP nsPrintOptions::GetNativeData(PRInt16 aDataType, void * *_retval) { @@ -1136,287 +979,6 @@ NS_IMETHODIMP nsPrintOptions::GetNativeData(PRInt16 aDataType, void * *_retval) return NS_ERROR_NOT_IMPLEMENTED; } -/* attribute nsIPrintSettings printSettings; */ -NS_IMETHODIMP nsPrintOptions::GetPrintSettings(nsIPrintSettings * *aPrintSettings) -{ - NS_ENSURE_ARG_POINTER(aPrintSettings); - *aPrintSettings = mPrintSettingsObj; - return NS_OK; -} - -NS_IMETHODIMP nsPrintOptions::SetPrintSettings(nsIPrintSettings * aPrintSettings) -{ - NS_ENSURE_ARG_POINTER(aPrintSettings); - mPrintSettingsObj = aPrintSettings; - return NS_OK; -} - -/* attribute nsIPrintSettings printSettingsValues; */ -NS_IMETHODIMP nsPrintOptions::GetPrintSettingsValues(nsIPrintSettings * *aPrintSettingsValues) -{ - NS_ENSURE_ARG_POINTER(aPrintSettingsValues); - nsIPrintSettings* printSettingsValues = *aPrintSettingsValues; - if (printSettingsValues == nsnull) { - if (NS_SUCCEEDED(CreatePrintSettings(&printSettingsValues))) { - *aPrintSettingsValues = printSettingsValues; - } else { - return NS_ERROR_FAILURE; - } - } - - printSettingsValues->SetStartPageRange(mStartPageNum); - printSettingsValues->SetEndPageRange(mEndPageNum); - - double dblVal; - GetMarginTop(&dblVal); - printSettingsValues->SetMarginTop(dblVal); - - GetMarginLeft(&dblVal); - printSettingsValues->SetMarginLeft(dblVal); - - GetMarginBottom(&dblVal); - printSettingsValues->SetMarginBottom(dblVal); - - GetMarginRight(&dblVal); - printSettingsValues->SetMarginRight(dblVal); - - printSettingsValues->SetScaling(mScaling); - printSettingsValues->SetPrintBGColors(mPrintBGColors); - printSettingsValues->SetPrintBGImages(mPrintBGImages); - - printSettingsValues->SetPrintRange(mPrintRange); - - PRUnichar* uniChar; - GetTitle(&uniChar); - printSettingsValues->SetTitle(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetDocURL(&uniChar); - printSettingsValues->SetDocURL(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetHeaderStrLeft(&uniChar); - printSettingsValues->SetHeaderStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetHeaderStrCenter(&uniChar); - printSettingsValues->SetHeaderStrCenter(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetHeaderStrRight(&uniChar); - printSettingsValues->SetHeaderStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetFooterStrLeft(&uniChar); - printSettingsValues->SetFooterStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetFooterStrCenter(&uniChar); - printSettingsValues->SetFooterStrCenter(uniChar); - - GetFooterStrRight(&uniChar); - printSettingsValues->SetFooterStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - printSettingsValues->SetPrintFrameTypeUsage(mPrintFrameTypeUsage); - printSettingsValues->SetPrintFrameType(mPrintFrameType); - printSettingsValues->SetPrintSilent(mPrintSilent); - printSettingsValues->SetPrintReversed(mPrintReversed); - printSettingsValues->SetPrintInColor(mPrintInColor); - printSettingsValues->SetPaperSizeUnit(mPaperSizeUnit); - printSettingsValues->SetPaperHeight(mPaperHeight); - printSettingsValues->SetPaperWidth(mPaperWidth); - printSettingsValues->SetOrientation(mOrientation); - printSettingsValues->SetNumCopies(mNumCopies); - - GetPrinterName(&uniChar); - printSettingsValues->SetPrinterName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetPrintCommand(&uniChar); - printSettingsValues->SetPrintCommand(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - printSettingsValues->SetPrintToFile(mPrintToFile); - - GetToFileName(&uniChar); - printSettingsValues->SetToFileName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - printSettingsValues->SetPrintPageDelay(mPrintPageDelay); - - return NS_OK; -} - -NS_IMETHODIMP nsPrintOptions::SetPrintSettingsValues(nsIPrintSettings * aPrintSettingsValues) -{ - - NS_ENSURE_ARG_POINTER(aPrintSettingsValues); - - aPrintSettingsValues->GetStartPageRange(&mStartPageNum); - aPrintSettingsValues->GetEndPageRange(&mEndPageNum); - - double dblVal; - aPrintSettingsValues->GetMarginTop(&dblVal); - SetMarginTop(dblVal); - - aPrintSettingsValues->GetMarginLeft(&dblVal); - SetMarginLeft(dblVal); - - aPrintSettingsValues->GetMarginBottom(&dblVal); - SetMarginBottom(dblVal); - - aPrintSettingsValues->GetMarginRight(&dblVal); - SetMarginRight(dblVal); - - aPrintSettingsValues->GetScaling(&mScaling); - aPrintSettingsValues->GetPrintBGColors(&mPrintBGColors); - aPrintSettingsValues->GetPrintBGImages(&mPrintBGImages); - - aPrintSettingsValues->GetPrintRange(&mPrintRange); - - PRUnichar* uniChar; - aPrintSettingsValues->GetTitle(&uniChar); - SetTitle(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetDocURL(&uniChar); - SetDocURL(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetHeaderStrLeft(&uniChar); - SetHeaderStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetHeaderStrCenter(&uniChar); - SetHeaderStrCenter(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetHeaderStrRight(&uniChar); - SetHeaderStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetFooterStrLeft(&uniChar); - SetFooterStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetFooterStrCenter(&uniChar); - SetFooterStrCenter(uniChar); - - aPrintSettingsValues->GetFooterStrRight(&uniChar); - SetFooterStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintFrameTypeUsage(&mPrintFrameTypeUsage); - aPrintSettingsValues->GetPrintFrameType(&mPrintFrameType); - aPrintSettingsValues->GetPrintSilent(&mPrintSilent); - aPrintSettingsValues->GetPrintReversed(&mPrintReversed); - aPrintSettingsValues->GetPrintInColor(&mPrintInColor); - aPrintSettingsValues->GetPaperSizeUnit(&mPaperSizeUnit); - aPrintSettingsValues->GetPaperHeight(&mPaperHeight); - aPrintSettingsValues->GetPaperWidth(&mPaperWidth); - aPrintSettingsValues->GetOrientation(&mOrientation); - aPrintSettingsValues->GetNumCopies(&mNumCopies); - - aPrintSettingsValues->GetPrinterName(&uniChar); - SetPrinterName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintCommand(&uniChar); - SetPrintCommand(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintToFile(&mPrintToFile); - - aPrintSettingsValues->GetToFileName(&uniChar); - SetToFileName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintPageDelay(&mPrintPageDelay); - SetPrintPageDelay(mPrintPageDelay); - - return NS_OK; -} - - -/* attribute double paperWidth; */ -NS_IMETHODIMP nsPrintOptions::GetPaperWidth(double *aPaperWidth) -{ - NS_ENSURE_ARG_POINTER(aPaperWidth); - *aPaperWidth = mPaperWidth; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperWidth(double aPaperWidth) -{ - mPaperWidth = aPaperWidth; - return NS_OK; -} - -/* attribute double paperHeight; */ -NS_IMETHODIMP nsPrintOptions::GetPaperHeight(double *aPaperHeight) -{ - NS_ENSURE_ARG_POINTER(aPaperHeight); - *aPaperHeight = mPaperHeight; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperHeight(double aPaperHeight) -{ - mPaperHeight = aPaperHeight; - return NS_OK; -} - -/* attribute short PaperSizeUnit; */ -NS_IMETHODIMP nsPrintOptions::GetPaperSizeUnit(PRInt16 *aPaperSizeUnit) -{ - NS_ENSURE_ARG_POINTER(aPaperSizeUnit); - *aPaperSizeUnit = mPaperSizeUnit; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperSizeUnit(PRInt16 aPaperSizeUnit) -{ - mPaperSizeUnit = aPaperSizeUnit; - return NS_OK; -} - -/* attribute short PaperSizeType; */ -NS_IMETHODIMP nsPrintOptions::GetPaperSizeType(PRInt16 *aPaperSizeType) -{ - NS_ENSURE_ARG_POINTER(aPaperSizeType); - *aPaperSizeType = mPaperSizeType; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperSizeType(PRInt16 aPaperSizeType) -{ - mPaperSizeType = aPaperSizeType; - return NS_OK; -} - -/* attribute short PaperData; */ -NS_IMETHODIMP nsPrintOptions::GetPaperData(PRInt16 *aPaperData) -{ - NS_ENSURE_ARG_POINTER(aPaperData); - *aPaperData = mPaperData; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperData(PRInt16 aPaperData) -{ - mPaperData = aPaperData; - return NS_OK; -} - -/* This has been deprecated */ -NS_IMETHODIMP nsPrintOptions::GetPaperSize(PRInt32 *aPaperSize) -{ - *aPaperSize = mPaperSize; - return NS_OK; -} -/* This has been deprecated */ -NS_IMETHODIMP nsPrintOptions::SetPaperSize(PRInt32 aPaperSize) -{ - mPaperSize = aPaperSize; - return NS_OK; -} - /* nsIPrintSettings CreatePrintSettings (); */ NS_IMETHODIMP nsPrintOptions::CreatePrintSettings(nsIPrintSettings **_retval) { @@ -1427,7 +989,7 @@ NS_IMETHODIMP nsPrintOptions::CreatePrintSettings(nsIPrintSettings **_retval) rv = printSettings->QueryInterface(NS_GET_IID(nsIPrintSettings), (void**)_retval); // ref counts if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - InitPrintSettingsFromPrefs(*_retval); // ignore return value + InitPrintSettingsFromPrefs(*_retval, PR_FALSE, nsIPrintSettings::kInitSaveAll); // ignore return value return rv; } @@ -1469,6 +1031,22 @@ nsresult nsPrintOptions::ReadPrefString(nsIPref * aPref, return rv; } +/** --------------------------------------------------- + * Write PRUnichar* to Prefs and deletes the contents of the string + */ +nsresult nsPrintOptions::WritePrefString(nsIPref* aPref, PRUnichar*& aStr, const char* aPrefId) +{ + if (!aStr) return NS_ERROR_FAILURE; + + nsresult rv = NS_ERROR_FAILURE; + if (aStr) { + rv = aPref->SetUnicharPref(aPrefId, aStr); + nsMemory::Free(aStr); + aStr = nsnull; + } + return rv; +} + nsresult nsPrintOptions::WritePrefString(nsIPref * aPref, const char * aPrefId, nsString& aString) @@ -1490,7 +1068,9 @@ nsresult nsPrintOptions::ReadPrefDouble(nsIPref * aPref, char * str = nsnull; nsresult rv = aPref->CopyCharPref(aPrefId, &str); if (NS_SUCCEEDED(rv) && str) { - sscanf(str, "%6.2f", &aVal); + float f; + sscanf(str, "%f", &f); + aVal = double(f); nsMemory::Free(str); } return rv; @@ -1508,26 +1088,6 @@ nsresult nsPrintOptions::WritePrefDouble(nsIPref * aPref, return aPref->SetCharPref(aPrefId, str); } -void nsPrintOptions::ReadBitFieldPref(nsIPref * aPref, - const char * aPrefId, - PRInt32 anOption) -{ - PRBool b; - if (NS_SUCCEEDED(aPref->GetBoolPref(aPrefId, &b))) { - SetPrintOptions(anOption, b); - } -} - -//--------------------------------------------------- -void nsPrintOptions::WriteBitFieldPref(nsIPref * aPref, - const char * aPrefId, - PRInt32 anOption) -{ - PRBool b; - GetPrintOptions(anOption, &b); - aPref->SetBoolPref(aPrefId, b); -} - //--------------------------------------------------- void nsPrintOptions::ReadInchesToTwipsPref(nsIPref * aPref, const char * aPrefId, @@ -1565,6 +1125,7 @@ void nsPrintOptions::WriteInchesFromTwipsPref(nsIPref * aPref, } } +//--------------------------------------------------- void nsPrintOptions::ReadJustification(nsIPref * aPref, const char * aPrefId, PRInt16& aJust, @@ -1573,14 +1134,14 @@ void nsPrintOptions::ReadJustification(nsIPref * aPref, aJust = aInitValue; nsAutoString justStr; if (NS_SUCCEEDED(ReadPrefString(aPref, aPrefId, justStr))) { - if (justStr.EqualsWithConversion(kRightJust)) { - aJust = kJustRight; + if (justStr.EqualsWithConversion(kJustRight)) { + aJust = nsIPrintSettings::kJustRight; - } else if (justStr.EqualsWithConversion(kCenterJust)) { - aJust = kJustCenter; + } else if (justStr.EqualsWithConversion(kJustCenter)) { + aJust = nsIPrintSettings::kJustCenter; } else { - aJust = kJustLeft; + aJust = nsIPrintSettings::kJustLeft; } } } @@ -1591,19 +1152,117 @@ void nsPrintOptions::WriteJustification(nsIPref * aPref, PRInt16 aJust) { switch (aJust) { - case kJustLeft: - aPref->SetCharPref(aPrefId, kLeftJust); + case nsIPrintSettings::kJustLeft: + aPref->SetCharPref(aPrefId, kJustLeft); break; - case kJustCenter: - aPref->SetCharPref(aPrefId, kCenterJust); + case nsIPrintSettings::kJustCenter: + aPref->SetCharPref(aPrefId, kJustCenter); break; - case kJustRight: - aPref->SetCharPref(aPrefId, kRightJust); + case nsIPrintSettings::kJustRight: + aPref->SetCharPref(aPrefId, kJustRight); break; } //switch } +//---------------------------------------------------------------------- +// Testing of read/write prefs +// This define turns on the testing module below +// so at start up it writes and reads the prefs. +#ifdef DEBUG_rods_X +class Tester { +public: + Tester(); +}; +Tester::Tester() +{ + static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID); + nsCOMPtr ps; + nsresult rv; + nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); + if (NS_SUCCEEDED(rv)) { + rv = printService->CreatePrintSettings(getter_AddRefs(ps)); + } + if (ps) { + ps->SetPrintOptions(nsIPrintSettings::kPrintOddPages, PR_TRUE); + ps->SetPrintOptions(nsIPrintSettings::kPrintEvenPages, PR_FALSE); + ps->SetMarginTop(1.0); + ps->SetMarginLeft(1.0); + ps->SetMarginBottom(1.0); + ps->SetMarginRight(1.0); + ps->SetScaling(0.5); + ps->SetPrintBGColors(PR_TRUE); + ps->SetPrintBGImages(PR_TRUE); + ps->SetPrintRange(15); + ps->SetHeaderStrLeft(NS_ConvertUTF8toUCS2("Left").get()); + ps->SetHeaderStrCenter(NS_ConvertUTF8toUCS2("Center").get()); + ps->SetHeaderStrRight(NS_ConvertUTF8toUCS2("Right").get()); + ps->SetFooterStrLeft(NS_ConvertUTF8toUCS2("Left").get()); + ps->SetFooterStrCenter(NS_ConvertUTF8toUCS2("Center").get()); + ps->SetFooterStrRight(NS_ConvertUTF8toUCS2("Right").get()); + ps->SetPaperName(NS_ConvertUTF8toUCS2("Paper Name").get()); + ps->SetPaperSizeType(10); + ps->SetPaperData(1); + ps->SetPaperWidth(100.0); + ps->SetPaperHeight(50.0); + ps->SetPaperSizeUnit(nsIPrintSettings::kPaperSizeMillimeters); + ps->SetPrintReversed(PR_TRUE); + ps->SetPrintInColor(PR_TRUE); + ps->SetPaperSize(5); + ps->SetOrientation(nsIPrintSettings::kLandscapeOrientation); + ps->SetPrintCommand(NS_ConvertUTF8toUCS2("Command").get()); + ps->SetNumCopies(2); + ps->SetPrinterName(NS_ConvertUTF8toUCS2("Printer Name").get()); + ps->SetPrintToFile(PR_TRUE); + ps->SetToFileName(NS_ConvertUTF8toUCS2("File Name").get()); + ps->SetPrintPageDelay(1000); + struct SettingsType { + const char* mName; + PRUint32 mFlag; + }; + SettingsType gSettings[] = { + {"OddEven", nsIPrintSettings::kInitSaveOddEvenPages}, + {kPrintHeaderStrLeft, nsIPrintSettings::kInitSaveHeaderLeft}, + {kPrintHeaderStrCenter, nsIPrintSettings::kInitSaveHeaderCenter}, + {kPrintHeaderStrRight, nsIPrintSettings::kInitSaveHeaderRight}, + {kPrintFooterStrLeft, nsIPrintSettings::kInitSaveFooterLeft}, + {kPrintFooterStrCenter, nsIPrintSettings::kInitSaveFooterCenter}, + {kPrintFooterStrRight, nsIPrintSettings::kInitSaveFooterRight}, + {kPrintBGColors, nsIPrintSettings::kInitSaveBGColors}, + {kPrintBGImages, nsIPrintSettings::kInitSaveBGImages}, + {kPrintPaperSize, nsIPrintSettings::kInitSavePaperSize}, + {kPrintPaperName, nsIPrintSettings::kInitSavePaperName}, + {kPrintPaperSizeUnit, nsIPrintSettings::kInitSavePaperSizeUnit}, + {kPrintPaperSizeType, nsIPrintSettings::kInitSavePaperSizeType}, + {kPrintPaperData, nsIPrintSettings::kInitSavePaperData}, + {kPrintPaperWidth, nsIPrintSettings::kInitSavePaperWidth}, + {kPrintPaperHeight, nsIPrintSettings::kInitSavePaperHeight}, + {kPrintReversed, nsIPrintSettings::kInitSaveReversed}, + {kPrintInColor, nsIPrintSettings::kInitSaveInColor}, + {kPrintOrientation, nsIPrintSettings::kInitSaveOrientation}, + {kPrintCommand, nsIPrintSettings::kInitSavePrintCommand}, + {kPrinterName, nsIPrintSettings::kInitSavePrinterName}, + {kPrintToFile, nsIPrintSettings::kInitSavePrintToFile}, + {kPrintToFileName, nsIPrintSettings::kInitSaveToFileName}, + {kPrintPageDelay, nsIPrintSettings::kInitSavePageDelay}, + {"Margins", nsIPrintSettings::kInitSaveMargins}, + {"All", nsIPrintSettings::kInitSaveAll}, + {nsnull, 0}}; + + nsString prefix; prefix.AssignWithConversion("Printer Name"); + PRInt32 i = 0; + while (gSettings[i].mName != nsnull) { + printf("------------------------------------------------\n"); + printf("%d) %s -> 0x%X\n", i, gSettings[i].mName, gSettings[i].mFlag); + printService->SavePrintSettingsToPrefs(ps, PR_TRUE, gSettings[i].mFlag); + printService->InitPrintSettingsFromPrefs(ps, PR_TRUE, gSettings[i].mFlag); + i++; + } + } + +} +Tester gTester; +#endif diff --git a/mozilla/gfx/src/nsPrintOptionsImpl.h b/mozilla/gfx/src/nsPrintOptionsImpl.h index 8b90ac5b46f..d4aad962170 100644 --- a/mozilla/gfx/src/nsPrintOptionsImpl.h +++ b/mozilla/gfx/src/nsPrintOptionsImpl.h @@ -50,62 +50,26 @@ protected: nsresult ReadPrefString(nsIPref * aPref, const char * aPrefId, nsString& aString); nsresult WritePrefString(nsIPref * aPref, const char * aPrefId, nsString& aString); + nsresult WritePrefString(nsIPref* aPref, PRUnichar*& aStr, const char* aPrefId); nsresult ReadPrefDouble(nsIPref * aPref, const char * aPrefId, double& aVal); nsresult WritePrefDouble(nsIPref * aPref, const char * aPrefId, double aVal); - typedef enum { - eHeader, - eFooter - } nsHeaderFooterEnum; - - nsresult GetMarginStrs(PRUnichar * *aTitle, nsHeaderFooterEnum aType, PRInt16 aJust); - nsresult SetMarginStrs(const PRUnichar * aTitle, nsHeaderFooterEnum aType, PRInt16 aJust); + nsresult ReadPrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUint32 aFlags); + nsresult WritePrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUint32 aFlags); + const char* GetPrefName(const char * aPrefName, + const nsString& aPrinterName); // Members - nsMargin mMargin; - PRInt32 mPrintOptions; - - // scriptable data members - PRInt16 mPrintRange; - PRInt32 mStartPageNum; // only used for ePrintRange_SpecifiedRange - PRInt32 mEndPageNum; - double mScaling; - PRBool mPrintBGColors; // print background colors - PRBool mPrintBGImages; // print background images - - PRInt16 mPrintFrameTypeUsage; - PRInt16 mPrintFrameType; - PRBool mHowToEnableFrameUI; PRBool mIsCancelled; - PRBool mPrintSilent; - PRInt32 mPrintPageDelay; - nsString mTitle; nsString mURL; - nsString mPageNumberFormat; - nsString mHeaderStrs[3]; - nsString mFooterStrs[3]; - - nsIPrintSettings* mPrintSettingsObj; //weak ref, hold address only - - PRInt16 mPaperData; - PRInt16 mPaperSizeType; - double mPaperWidth; - double mPaperHeight; - PRInt16 mPaperSizeUnit; - - PRInt32 mPaperSize; // this has been deprecated - PRBool mPrintReversed; - PRBool mPrintInColor; // a false means grayscale - PRInt32 mOrientation; // see orientation consts - nsString mPrintCommand; - PRInt32 mNumCopies; - nsString mPrinter; PRBool mPrintToFile; nsString mToFileName; nsCOMPtr mGlobalPrintSettings; + nsCString mPrefName; + static nsFont* sDefaultFont; }; diff --git a/mozilla/gfx/src/nsPrintSettingsImpl.cpp b/mozilla/gfx/src/nsPrintSettingsImpl.cpp index c0b1ba8b97d..a7ed6306cb3 100644 --- a/mozilla/gfx/src/nsPrintSettingsImpl.cpp +++ b/mozilla/gfx/src/nsPrintSettingsImpl.cpp @@ -48,30 +48,30 @@ NS_IMPL_ISUPPORTS1(nsPrintSettings, nsIPrintSettings) * @update 6/21/00 dwc */ nsPrintSettings::nsPrintSettings() : + mPrintOptions(0L), mPrintRange(kRangeAllPages), mStartPageNum(1), mEndPageNum(1), mScaling(1.0), - mNumCopies(1), mPrintBGColors(PR_FALSE), mPrintBGImages(PR_FALSE), - mPrintOptions(0L), - mPrintReversed(PR_FALSE), - mPrintInColor(PR_TRUE), - mOrientation(kPortraitOrientation), - mPrintToFile(PR_FALSE), mPrintFrameTypeUsage(kUseInternalDefault), mPrintFrameType(kFramesAsIs), + mHowToEnableFrameUI(kFrameEnableNone), + mIsCancelled(PR_FALSE), + mPrintSilent(PR_FALSE), + mShrinkToFit(PR_FALSE), mPrintPageDelay(500), - mPaperSizeType(kPaperSizeDefined), mPaperData(0), + mPaperSizeType(kPaperSizeDefined), mPaperWidth(8.5), mPaperHeight(11.0), mPaperSizeUnit(kPaperSizeInches), - mPrintSilent(PR_FALSE), - mShrinkToFit(PR_FALSE), - mHowToEnableFrameUI(kFrameEnableNone), - mIsCancelled(PR_FALSE) + mPrintReversed(PR_FALSE), + mPrintInColor(PR_TRUE), + mOrientation(kPortraitOrientation), + mNumCopies(1), + mPrintToFile(PR_FALSE) { NS_INIT_ISUPPORTS(); @@ -591,6 +591,24 @@ NS_IMETHODIMP nsPrintSettings::SetShrinkToFit(PRBool aShrinkToFit) return NS_OK; } +/* attribute wstring paperName; */ +NS_IMETHODIMP nsPrintSettings::GetPaperName(PRUnichar * *aPaperName) +{ + NS_ENSURE_ARG_POINTER(aPaperName); + if (mPaperName.Length()) { + *aPaperName = ToNewUnicode(mPaperName); + } else { + *aPaperName = nsnull; + } + return NS_OK; +} +NS_IMETHODIMP nsPrintSettings::SetPaperName(const PRUnichar * aPaperName) +{ + NS_ENSURE_ARG_POINTER(aPaperName); + mPaperName = aPaperName; + return NS_OK; +} + /* attribute boolean howToEnableFrameUI; */ NS_IMETHODIMP nsPrintSettings::GetHowToEnableFrameUI(PRInt16 *aHowToEnableFrameUI) { diff --git a/mozilla/gfx/src/nsPrintSettingsImpl.h b/mozilla/gfx/src/nsPrintSettingsImpl.h index 09eca59f3cd..d3098e63714 100644 --- a/mozilla/gfx/src/nsPrintSettingsImpl.h +++ b/mozilla/gfx/src/nsPrintSettingsImpl.h @@ -27,8 +27,6 @@ #include "nsMargin.h" #include "nsString.h" -class nsIPrintSettings; - //***************************************************************************** //*** nsPrintSettings //***************************************************************************** @@ -76,6 +74,7 @@ protected: nsString mHeaderStrs[3]; nsString mFooterStrs[3]; + nsString mPaperName; PRInt16 mPaperData; PRInt16 mPaperSizeType; double mPaperWidth; diff --git a/mozilla/gfx/src/windows/nsDeviceContextSpecWin.cpp b/mozilla/gfx/src/windows/nsDeviceContextSpecWin.cpp index 78e38122b19..a65cc4f2b0f 100644 --- a/mozilla/gfx/src/windows/nsDeviceContextSpecWin.cpp +++ b/mozilla/gfx/src/windows/nsDeviceContextSpecWin.cpp @@ -1528,7 +1528,8 @@ nsDeviceContextSpecWin::GetDataFromPrinter(const PRUnichar * aName, nsIPrintSett nsresult rv = NS_ERROR_FAILURE; if (!GlobalPrinters::GetInstance()->PrintersAreAllocated()) { - return rv; + rv = GlobalPrinters::GetInstance()->EnumeratePrinterList(); + NS_ENSURE_SUCCESS(rv, rv); } HANDLE hPrinter = NULL; @@ -1794,7 +1795,7 @@ nsPrinterEnumeratorWin::EnumeratePrinters(PRUint32* aCount, PRUnichar*** aResult PRInt32 count = 0; PRInt32 printerInx = 0; while( count < numItems ) { - LPTSTR name = GlobalPrinters::GetInstance()->GetItemFromList(printerInx); + LPTSTR name = GlobalPrinters::GetInstance()->GetItemFromList(printerInx++); nsString newName; newName.AssignWithConversion(name); PRUnichar *str = ToNewUnicode(newName); diff --git a/mozilla/layout/base/nsDocumentViewer.cpp b/mozilla/layout/base/nsDocumentViewer.cpp index af04ece56b0..d27d54b3e0f 100644 --- a/mozilla/layout/base/nsDocumentViewer.cpp +++ b/mozilla/layout/base/nsDocumentViewer.cpp @@ -3828,7 +3828,7 @@ DocumentViewerImpl::FindXMostFrameInList(nsIPresContext* aPresContext, rect.y += aY; nscoord xMost = rect.XMost(); -#ifdef DEBUG_PRINTING_X // keep this here but leave it turned off +#ifdef DEBUG_PRINTING // keep this here but leave it turned off nsAutoString tmp; nsIFrameDebug* frameDebug; if (NS_SUCCEEDED(CallQueryInterface(child, &frameDebug))) { @@ -3839,7 +3839,7 @@ DocumentViewerImpl::FindXMostFrameInList(nsIPresContext* aPresContext, if (xMost > aMaxWidth) { aMaxWidth = xMost; -#ifdef DEBUG_PRINTING_X // keep this here but leave it turned off +#ifdef DEBUG_PRINTING // keep this here but leave it turned off printf("%p - %d %s ", child, aMaxWidth, NS_LossyConvertUCS2toASCII(tmp).get()); if (aList == nsLayoutAtoms::overflowList) printf(" nsLayoutAtoms::overflowList\n"); if (aList == nsLayoutAtoms::floaterList) printf(" nsLayoutAtoms::floaterList\n"); @@ -7354,36 +7354,6 @@ DocumentViewerImpl::GetCurrentPrintSettings(nsIPrintSettings * *aCurrentPrintSet return NS_OK; } -/* attribute nsIPrintSettings globalPrintSettingsValues; */ -NS_IMETHODIMP -DocumentViewerImpl::GetGlobalPrintSettingsValues(nsIPrintSettings * *aGlobalPrintSettingsValues) -{ - NS_ENSURE_ARG_POINTER(aGlobalPrintSettingsValues); - NS_ENSURE_ARG_POINTER(*aGlobalPrintSettingsValues); - - nsresult rv = NS_ERROR_FAILURE; - if (aGlobalPrintSettingsValues && *aGlobalPrintSettingsValues) { - nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = printService->GetPrintSettingsValues(aGlobalPrintSettingsValues); - } - } - return rv; -} - -NS_IMETHODIMP -DocumentViewerImpl::SetGlobalPrintSettingsValues(nsIPrintSettings * aGlobalPrintSettingsValues) -{ - NS_ENSURE_ARG_POINTER(aGlobalPrintSettingsValues); - - nsresult rv = NS_ERROR_FAILURE; - nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = printService->SetPrintSettingsValues(aGlobalPrintSettingsValues); - } - return rv; -} - /* void cancel (); */ NS_IMETHODIMP DocumentViewerImpl::Cancel() @@ -7396,6 +7366,29 @@ DocumentViewerImpl::Cancel() return NS_OK; } +/* void initPrintSettingsFromPrefs (in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); */ +NS_IMETHODIMP +DocumentViewerImpl::InitPrintSettingsFromPrefs(nsIPrintSettings *aPrintSettings, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + nsresult rv; + nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); + if (NS_SUCCEEDED(rv) && printService) { + return printService->InitPrintSettingsFromPrefs(aPrintSettings, aUsePrinterNamePrefix, aFlags); + } + return NS_OK; +} + +/* void savePrintSettingsToPrefs (in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); */ +NS_IMETHODIMP +DocumentViewerImpl::SavePrintSettingsToPrefs(nsIPrintSettings *aPrintSettings, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + nsresult rv; + nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); + if (NS_SUCCEEDED(rv) && printService) { + return printService->SavePrintSettingsToPrefs(aPrintSettings, aUsePrinterNamePrefix, aFlags); + } + return NS_OK; +} /** --------------------------------------------------- * Get the Focused Frame for a documentviewer diff --git a/mozilla/modules/libpref/src/init/all.js b/mozilla/modules/libpref/src/init/all.js index c05c309ae52..d64a8b0cef4 100644 --- a/mozilla/modules/libpref/src/init/all.js +++ b/mozilla/modules/libpref/src/init/all.js @@ -222,12 +222,15 @@ pref("print.print_footerright", "&D"); pref("print.show_print_progress", true); // When this is set to false it means each window has its PrintSettings -// and a change in one browser window does not efect the others +// and a change in one browser window does not effect the others pref("print.use_global_printsettings", false); -// This indeicates whether it should use the native dialog or the XP Dialog50 +// This indicates whether it should use the native dialog or the XP Dialog50 pref("print.use_native_print_dialog", false); +// Save the Printings after each print job +pref("print.save_print_settings", true); + pref("print.whileInPrintPreview", true); // Enables you to specify the gap from the edge of the paper to the margin diff --git a/mozilla/modules/libpref/src/unix/unix.js b/mozilla/modules/libpref/src/unix/unix.js index 5b1e4e02f12..8e9abee0e3c 100644 --- a/mozilla/modules/libpref/src/unix/unix.js +++ b/mozilla/modules/libpref/src/unix/unix.js @@ -115,7 +115,6 @@ pref("print.print_edge_left", 4); // 1/100 of an inch pref("print.print_edge_right", 4); // 1/100 of an inch pref("print.print_edge_bottom", 4); // 1/100 of an inch - // print_extra_margin enables platforms to specify an extra gap or margin // around the content of the page for Print Preview only pref("print.print_extra_margin", 0); // twips diff --git a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp index 0f47234bf79..ba04faa432c 100644 --- a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp @@ -843,18 +843,6 @@ PluginViewerImpl::GetGlobalPrintSettings(nsIPrintSettings * *aGlobalPrintSetting return NS_ERROR_NOT_IMPLEMENTED; } -/* attribute nsIPrintSettings globalPrintSettingsValues; */ -NS_IMETHODIMP -PluginViewerImpl::GetGlobalPrintSettingsValues(nsIPrintSettings * *aGlobalPrintSettingsValues) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP -PluginViewerImpl::SetGlobalPrintSettingsValues(nsIPrintSettings * aGlobalPrintSettingsValues) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} /* void printPreview (in nsIPrintSettings aThePrintSettings); */ NS_IMETHODIMP PluginViewerImpl::PrintPreview(nsIPrintSettings *aThePrintSettings) @@ -890,6 +878,20 @@ PluginViewerImpl::Cancel() return NS_ERROR_NOT_IMPLEMENTED; } +/* void initPrintSettingsFromPrefs (in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); */ +NS_IMETHODIMP +PluginViewerImpl::InitPrintSettingsFromPrefs(nsIPrintSettings *aPrintSettings, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* void savePrintSettingsToPrefs (in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); */ +NS_IMETHODIMP +PluginViewerImpl::SavePrintSettingsToPrefs(nsIPrintSettings *aPrintSettings, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + /* void enumerateDocumentNames (out PRUint32 aCount, [array, size_is (aCount), retval] out wstring aResult); */ NS_IMETHODIMP PluginViewerImpl::EnumerateDocumentNames(PRUint32 *aCount, PRUnichar ***aResult) diff --git a/mozilla/xpfe/global/resources/content/printdialog.js b/mozilla/xpfe/global/resources/content/printdialog.js index 9d6a69cc6c7..2f977f01cd8 100644 --- a/mozilla/xpfe/global/resources/content/printdialog.js +++ b/mozilla/xpfe/global/resources/content/printdialog.js @@ -31,7 +31,7 @@ var gOriginalNumCopies = 1; var paramBlock; var gPrintSettings = null; var gPrinterName = ""; - +var gWebBrowserPrint = null; var default_file = "mozilla.ps"; var gPrintSetInterface = Components.interfaces.nsIPrintSettings; var doDebug = false; @@ -183,6 +183,9 @@ function getPrinters() var strDefaultPrinterName = selectElement.appendPrinterNames(printerEnumerator); selectElement.listElement.value = strDefaultPrinterName; + + // make sure we load the prefs for the initially selected printer + setPrinterDefaultsForSelectedPrinter(); } @@ -194,8 +197,18 @@ function setPrinterDefaultsForSelectedPrinter() gPrintSettings.printerName = dialog.printerList.value; var ifreq = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor); - var webBrowserPrint = ifreq.getInterface(Components.interfaces.nsIWebBrowserPrint); - webBrowserPrint.initPrintSettingsFromPrinter(gPrintSettings.printerName, gPrintSettings); + gWebBrowserPrint = ifreq.getInterface(Components.interfaces.nsIWebBrowserPrint); + + // First get any defaults from the printer + gWebBrowserPrint.initPrintSettingsFromPrinter(gPrintSettings.printerName, gPrintSettings); + + var flags = gPrintSetInterface.kInitSavePaperSizeType | gPrintSetInterface.kInitSavePaperSizeUnit | + gPrintSetInterface.kInitSavePaperWidth | gPrintSetInterface.kInitSavePaperHeight | + gPrintSetInterface.kInitSavePrintCommand; + + // now augment them with any values from last time + gWebBrowserPrint.initPrintSettingsFromPrefs(gPrintSettings, true, flags); + } //--------------------------------------------------- @@ -438,11 +451,24 @@ function onAccept() } } + var saveToPrefs = false; + var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); + if (prefs) { + saveToPrefs = prefs.getBoolPref("print.save_print_settings"); + } + + if (saveToPrefs && gWebBrowserPrint != null) { + var flags = gPrintSetInterface.kInitSavePaperSizeType | gPrintSetInterface.kInitSavePaperSizeUnit | + gPrintSetInterface.kInitSavePaperWidth | gPrintSetInterface.kInitSavePaperHeight | + gPrintSetInterface.kInitSavePrintCommand; + gWebBrowserPrint.savePrintSettingsToPrefs(gPrintSettings, true, flags); + } + // set return value to "print" if (paramBlock) { paramBlock.SetInt(0, 1); } else { - dump("*** FATAL ERROR: printService missing\n"); + dump("*** FATAL ERROR: No paramBlock\n"); } return true; diff --git a/mozilla/xpfe/global/resources/content/unix/printjoboptions.js b/mozilla/xpfe/global/resources/content/unix/printjoboptions.js index b7015771bb2..11ff311251d 100644 --- a/mozilla/xpfe/global/resources/content/unix/printjoboptions.js +++ b/mozilla/xpfe/global/resources/content/unix/printjoboptions.js @@ -271,8 +271,8 @@ function loadDialog() print_paper_unit = gPrintSettings.paperSizeUnit; print_paper_width = gPrintSettings.paperWidth; print_paper_height = gPrintSettings.paperHeight; - print_color = gPrintSettings.printInColor; - print_command = gPrintSettings.printCommand; + print_color = gPrintSettings.printInColor; + print_command = gPrintSettings.printCommand; if (print_paper_unit == gPrintSettingsInterface.kPaperSizeInches) { print_paper_width_mm = gPrintSettings.paperWidth * 25.4; @@ -329,10 +329,18 @@ function loadDialog() dialog.cmdInput.value = print_command; try { + // first get the generic settings dialog.topInput.value = gPrefs.getIntPref("print.print_edge_top") / 100.0; dialog.bottomInput.value = gPrefs.getIntPref("print.print_edge_left") / 100.0; dialog.leftInput.value = gPrefs.getIntPref("print.print_edge_right") / 100.0; dialog.rightInput.value = gPrefs.getIntPref("print.print_edge_bottom") / 100.0; + + // then the printer specific settings + var printername = gPrintSettings.printerName; + dialog.topInput.value = gPrefs.getIntPref("print."+printername+"print_edge_top") / 100.0; + dialog.bottomInput.value = gPrefs.getIntPref("print."+printername+"print_edge_left") / 100.0; + dialog.leftInput.value = gPrefs.getIntPref("print."+printername+"print_edge_right") / 100.0; + dialog.rightInput.value = gPrefs.getIntPref("print."+printername+"print_edge_bottom") / 100.0; } catch (e) { dialog.topInput.value = "0.04"; dialog.bottomInput.value = "0.04"; @@ -341,8 +349,6 @@ function loadDialog() } } -var param; - //--------------------------------------------------- function onLoad() { @@ -397,17 +403,18 @@ function onAccept() // try { + var printerName = gPrintSettings.printerName; var i = dialog.topInput.value * 100; - gPrefs.setIntPref("print.print_edge_top", i); + gPrefs.setIntPref("print."+printerName+"print_edge_top", i); i = dialog.bottomInput.value * 100; - gPrefs.setIntPref("print.print_edge_left", i); + gPrefs.setIntPref("print."+printerName+"print_edge_left", i); i = dialog.leftInput.value * 100; - gPrefs.setIntPref("print.print_edge_right", i); + gPrefs.setIntPref("print."+printerName+"print_edge_right", i); i = dialog.rightInput.value * 100; - gPrefs.setIntPref("print.print_edge_bottom", i); + gPrefs.setIntPref("print."+printerName+"print_edge_bottom", i); } catch (e) { } @@ -426,11 +433,11 @@ function onAccept() dump("************ onAccept gPrintSettings: "+gPrintSettings+"\n"); } - if (param) { + if (paramBlock) { // set return value to "ok" - param.SetInt(0, 1); + paramBlock.SetInt(0, 1); } else { - dump("*** FATAL ERROR: printService missing\n"); + dump("*** FATAL ERROR: paramBlock missing\n"); } return true;