Source code

Revision control

Copy as Markdown

Other Tools

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* Interface to the Service for gwetting the Global PrintSettings object
or a unique PrintSettings object
*/
#include "nsISupports.idl"
interface nsIPrintSettings;
%{ C++
namespace mozilla {
namespace embedding {
class PrintData;
}
}
%}
/**
* Native types
*/
[ref] native PrintDataRef(const mozilla::embedding::PrintData);
[ptr] native PrintDataPtr(mozilla::embedding::PrintData);
[scriptable, uuid(841387C8-72E6-484b-9296-BF6EEA80D58A)]
interface nsIPrintSettingsService : nsISupports
{
/**
* Returns the default print settings as used for printing.
*/
[noscript] readonly attribute nsIPrintSettings defaultPrintSettingsForPrinting;
/**
* Creates a new nsIPrintSettings object.
*
* Initializes the settings object from the unprefixed printer
* (Note: this may not happen if there is an OS specific implementation.)
*/
nsIPrintSettings createNewPrintSettings();
/**
* The name of the last printer used. Note that this may not be set, or may
* no longer be a valid printer. The caller is responsible for checking and
* falling back to some other printer (such as the system default printer).
*
* XXX: make it [infallible] when AString supports that (bug 1491187).
*/
readonly attribute AString lastUsedPrinterName;
/**
* Initializes certain settings from the native printer into the PrintSettings
* if aPrinterName is null then it uses the default printer name if it can
* These settings include, but are not limited to:
* Page Orientation
* Page Size
* Number of Copies
*/
void initPrintSettingsFromPrinter(in AString aPrinterName,
in nsIPrintSettings aPrintSettings);
/**
* Reads PrintSettings values from Prefs,
* the values to be read are indicated by the "flags" arg.
*
* aPrintSettings should be initialized with the name of a printer. First
* it reads in the PrintSettings from the last print job. 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, isCancelled,
* printSilent, shrinkToFit, numCopies,
* printerName
*
*/
void initPrintSettingsFromPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags);
/**
* As long as the pref print.save_print_settings isn't set to false, this
* saves to prefs the settings from aPrintSettings that are indicated by
* aFlags.
*
* 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
* aFlags - indicates which prefs to save, see nsIPrintSettings.idl for the const values.
*
* Items not written:
* startPageRange, endPageRange, scaling, printRange, title
* docURL, isCancelled,
* printSilent, shrinkToFit, numCopies
*
*/
void maybeSavePrintSettingsToPrefs(in nsIPrintSettings aPrintSettings, in unsigned long aFlags);
/**
* As long as the pref print.save_print_settings isn't set to false, this
* saves the given printer name as the last used printer name.
*/
void maybeSaveLastUsedPrinterNameToPrefs(in AString aPrinterName);
/**
* Given some nsIPrintSettings,
* populates a PrintData representing them which can be sent over IPC. Values
* are only ever read from aSettings and aWBP.
*
* @param aSettings
* An nsIPrintSettings for a print job.
* @param data
* Pointer to a pre-existing PrintData to populate.
*
* @return nsresult
*/
[noscript]
void SerializeToPrintData(in nsIPrintSettings aPrintSettings,
in PrintDataPtr data);
/**
* This function is the opposite of SerializeToPrintData, in that it takes
* a PrintData, and populates a pre-existing nsIPrintSettings with the data
* from PrintData.
*
* @param PrintData
* Printing information sent through IPC.
* @param settings
* A pre-existing nsIPrintSettings to populate with the PrintData.
*
* @return nsresult
*/
[noscript]
void DeserializeToPrintSettings(in PrintDataRef data,
in nsIPrintSettings aPrintSettings);
};