chanial%noos.fr a25bd1dfdd Significantly rewrite the old printing.js:
- define an object PrintUtils that has two "public" methods: PrintUtils.print() to print the content and PrintUtils.showPageSetup() to launch the setup dialog.
- global variables gPrintSettings, gPrintSettingsAreGlobal and gSavePrintSettings are removed. These variables were not true cached variables since they were recalculated every time and only used as intermediary.


git-svn-id: svn://10.0.0.236/trunk@148411 18797224-902f-48f8-a5cc-f745e15eee43
2003-10-26 20:13:55 +00:00

134 lines
5.3 KiB
JavaScript

# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
# ***** BEGIN LICENSE BLOCK *****
# Version: NPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Netscape 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/NPL/
#
# 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):
# Blake Ross <blakeross@telocity.com>
# Peter Annema <disttsc@bart.nl>
# Samir Gehani <sgehani@netscape.com>
# Pierre Chanial <p_ch@verizon.net>
#
# 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 NPL, 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 NPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK ***** */
var PrintUtils = {
showPageSetup: function ()
{
var didOK = false;
try {
var printSettings = this.getPrintSettings();
var webBrowserPrint = null;
if (_content) {
var ifreq = _content.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
webBrowserPrint = ifreq.getInterface(Components.interfaces.nsIWebBrowserPrint);
}
var PRINTPROMPTSVC = Components.classes["@mozilla.org/embedcomp/printingprompt-service;1"]
.getService(Components.interfaces.nsIPrintingPromptService);
didOK = PRINTPROMPTSVC.showPageSetup(window, printSettings, null);
if (didOK) {
if (webBrowserPrint) {
var PREF = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
var isGlobal = PREF.getBoolPref("print.use_global_printsettings", false);
var doSave = PREF.getBoolPref("print.save_print_settings", false);
if (isGlobal && doSave) {
var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
.getService(Components.interfaces.nsIPrintSettingsService);
PSSVC.savePrintSettingsToPrefs(printSettings, false, printSettings.kInitSaveNativeData);
}
}
}
} catch (e) {
dump("showPageSetup "+e+"\n");
}
return didOK;
},
print: function ()
{
try {
var ifreq = _content.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
var webBrowserPrint = ifreq.getInterface(Components.interfaces.nsIWebBrowserPrint);
if (webBrowserPrint) {
var printSettings = this.getPrintSettings();
webBrowserPrint.print(printSettings, null);
}
} catch (e) {
// Pressing cancel is expressed as an NS_ERROR_ABORT return value,
// causing an exception to be thrown which we catch here.
// Unfortunately this will also consume helpful failures, so add a
// dump("print: "+e+"\n"); // if you need to debug
}
},
////////////////////////////////////////
// "private" methods. Don't use them. //
////////////////////////////////////////
setPrinterDefaultsForSelectedPrinter: function (aPRINTSVC, aPrintSettings)
{
if (!aPrintSettings.printerName)
aPrintSettings.printerName = aPRINTSVC.defaultPrinterName;
// First get any defaults from the printer
aPRINTSVC.initPrintSettingsFromPrinter(aPrintSettings.printerName, aPrintSettings);
// now augment them with any values from last time
aPRINTSVC.initPrintSettingsFromPrefs(aPrintSettings, true, aPrintSettings.kInitSaveAll);
},
getPrintSettings: function ()
{
var printSettings;
var PREF = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
try {
var isGlobal = PREF.getBoolPref("print.use_global_printsettings", false);
var PRINTSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
.getService(Components.interfaces.nsIPrintSettingsService);
if (isGlobal) {
printSettings = PRINTSVC.globalPrintSettings;
this.setPrinterDefaultsForSelectedPrinter(PRINTSVC, printSettings);
} else
printSettings = PRINTSVC.newPrintSettings;
} catch (e) {
dump("getPrintSettings: "+e+"\n");
}
return printSettings;
}
}