| /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
| /* ***** BEGIN LICENSE BLOCK ***** |
| * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Mozilla Public License Version |
| * 1.1 (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is mozilla.org code. |
| * |
| * The Initial Developer of the Original Code is |
| * Netscape Communications Corporation. |
| * Portions created by the Initial Developer are Copyright (C) 1998 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either the GNU General Public License Version 2 or later (the "GPL"), or |
| * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the MPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the MPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** */ |
| |
| /** |
| * @status UNDER_REVIEW |
| */ |
| |
| /** |
| * This is the printing prompt interface which can be used without knowlege of a |
| * parent window. The parentage is hidden by the GetInterface though |
| * which it is gotten. This interface is identical to nsIPintingPromptService |
| * but without the parent nsIDOMWindow parameter. See nsIPrintingPromptService |
| * for all documentation. |
| */ |
| |
| #include "nsISupports.idl" |
| #include "nsIWebBrowserPrint.idl" |
| #include "nsIWebProgressListener.idl" |
| #include "nsIPrintSettings.idl" |
| #include "nsIPrintProgressParams.idl" |
| #include "nsIObserver.idl" |
| |
| [scriptable, uuid(44E314CA-75B1-4f3d-9553-9B3507912108)] |
| interface nsIPrintingPrompt : nsISupports |
| { |
| /** |
| * This service enables embedders to implement their own Print and Progress Dialogs. |
| * Each platform has a "base" or "basckstop" implementation of the service. The |
| * service is automatically registered at start up. |
| * |
| * Historically, platform toolkits with native dialogs have implemented them in the GFX layer |
| * Usually they were displayed when a new DeviceContextSpec specific to that platform |
| * was created. |
| * |
| * Windows: The GFX layer no longers supports default toolkit behavior for displaying the |
| * native Print Dialog. |
| * If an embedder implemented service returns any error code (other than NS_ERROR_ABORT) |
| * printing will terminate. |
| * |
| * Returning NS_OK assumes that the PrintSettings object was correctly filled in and |
| * if it does not have valid fields for printer name, etc. it may also terminate. |
| * |
| * Defaults for platform service: |
| * showPrintDialog - displays a native dialog |
| * showPageSetup - displays a XUL dialog |
| * showProgress - displays a XUL dialog |
| * showPrinterProperties - n/a |
| * |
| * Summary for Windows Embedders: |
| * Stated once again: There is no "fallback" native platform support in GFX for the |
| * displaying of the native print dialog. The current default implementation for Windows |
| * display a native print dialog but a XUL-based progress dialog. |
| * If you wish to have a native progress dialog on Windows you will have to create and |
| * register your own service. |
| * |
| * Note: The Windows version Mozilla implements this service which is |
| * automatically built and registered for you. You can use it as an example. |
| * It is located at "mozilla/embedding/components/printingui/src/win". That service |
| * is capable of displaying a native print dialog and a XUL progress dialog. |
| * |
| * To fly your own dialog you may: |
| * |
| * 1) Implement this service to display at least the Print Dialog and a Print Progress Dialog |
| * or you may implement just one of the dialogs and pass back NS_ERROR_NOT_IMPLEMENTED |
| * for any of the others. |
| * |
| * 2) For the Print Dialog: |
| * You may stub out this service by having all the methods return NS_ERROR_NOT_IMPLEMENTED. |
| * You can then fly you own dialog and then properly fill in the PrintSettings object |
| * before calling nsIWebBrowserPrint's Print method. If you stub out this service |
| * you MUST set "printSilent" to true, if you do not, Printing will terminate and an |
| * error dialog will be displayed. |
| * |
| * Mac: The GFX layer still supports default toolkit behavior for displaying the Print Dialog. |
| * If an embedder implemented service returns NS_ERROR_NOT_IMPLEMENTED for "showPrintDialog" |
| * The toolkit will display the native print dialog. |
| * |
| * Defaults for platform service: |
| * Mac OS9: showPrintDialog - displays a native dialog |
| * showPageSetup - displays a native dialog |
| * showProgress - displays a XUL dialog |
| * showPrinterProperties - n/a |
| * |
| * Mac OSX: showPrintDialog - displays a native dialog |
| * showPageSetup - displays a native dialog |
| * showProgress - not implemented (provided by OS) |
| * showPrinterProperties - n/a |
| * |
| * GTK: There are no native dialog for GTK. |
| * |
| * Defaults for platform service: |
| * showPrintDialog - displays a XUL dialog |
| * showPageSetup - displays a XUL dialog |
| * showProgress - displays a XUL dialog |
| * showPrinterProperties - displays a XUL dialog |
| * |
| * OS2: |
| * |
| * Defaults for platform service: |
| * showPrintDialog - displays a XUL dialog |
| * showPageSetup - displays a XUL dialog |
| * showProgress - displays a XUL dialog |
| * showPrinterProperties - displays a native dialog |
| * |
| * |
| */ |
| |
| |
| /** |
| * Show the Print Dialog |
| * |
| * @param webBrowserPrint - represents the document to be printed |
| * @param printSettings - PrintSettings for print "job" |
| * |
| */ |
| void showPrintDialog(in nsIWebBrowserPrint webBrowserPrint, |
| in nsIPrintSettings printSettings); |
| |
| /** |
| * Shows the print progress dialog |
| * |
| * @param webBrowserPrint - represents the document to be printed |
| * @param printSettings - PrintSettings for print "job" |
| * @param openDialogObserver - an observer that will be notifed when the dialog is opened |
| * @param isForPrinting - true - for printing, false for print preview |
| * @param webProgressListener - additional listener can be registered for progress notifications |
| * @param printProgressParams - parameter object for passing progress state |
| * @param notifyOnOpen - this indicates that the observer will be notified when the progress |
| * dialog has been opened. If false is returned it means the observer |
| * (usually the caller) shouldn't wait |
| * For Print Preview Progress there is intermediate progress |
| */ |
| void showProgress(in nsIWebBrowserPrint webBrowserPrint, |
| in nsIPrintSettings printSettings, |
| in nsIObserver openDialogObserver, |
| in boolean isForPrinting, |
| out nsIWebProgressListener webProgressListener, |
| out nsIPrintProgressParams printProgressParams, |
| out boolean notifyOnOpen); |
| |
| /** |
| * Shows the print progress dialog |
| * |
| * @param printSettings - PrintSettings for page setup (required) |
| * @param aObs - An observer to know if the contents of the Print Settings |
| * object has changed while the dialog is being shown. |
| * For example, some platforms may implement an "Apply" button (not required) |
| */ |
| void showPageSetup(in nsIPrintSettings printSettings, in nsIObserver aObs); |
| |
| /** |
| * Sometimes platforms need to bring up a special properties dialog for showing |
| * print specific properties. Although the PrintSettings has a place to set the |
| * printer name, here is is an argument to be clear as to what printer is being |
| * asked to have the properties set for it. The Printer name in the PS is ignored. |
| * |
| * @param printerName - name of printer (required) |
| * @param printSettings - PrintSettings for page setup (required) |
| */ |
| void showPrinterProperties(in wstring printerName, |
| in nsIPrintSettings printSettings); |
| }; |