]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/print.js
3ad45426a7b1aac04bba659bbc38c5c6b8752c01
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / print.js
1 sdump('D_TRACE','Loading print.js\n');
2
3 var print_crlf = '<br />\r\n';
4
5 // Higher-level
6
7 function print_checkout_receipt(params) {
8
9
10 }
11
12 // Lower-level
13
14 function sPrint(s) {
15         //var w = window.open('about:blank','print_win','alwaysLowered,minimizable,resizable,height=100,width=100,sizemode=minimized');
16         //var w = SafeWindowOpen('about:blank','print_win','alwaysLowered,minimizable,resizable,height=100,width=100,sizemode=minimized');
17         var w = new_window('data:text/html,<html>' + s + '</html>\r\n');
18         this.focus();
19         NSPrint(w);
20         w.close();
21 }
22
23 function sPrint_old(s) {
24         sdump('D_PRINT','Printing "' + s + '"\n');
25         //var deck = mw.document.getElementById('main_deck');
26         var iframe = mw.document.getElementById('print_frame');
27         //deck.appendChild(iframe);
28         iframe.setAttribute('src','about:blank');
29         /*while (iframe.contentWindow.document.lastChild) { 
30                 iframe.contentWindow.document.removeChild(
31                         iframe.contentWindow.document.lastChild
32                 );
33         }*/
34         //iframe.contentDocument.write(s);
35         iframe.contentWindow.document.write(s);
36         NSPrint2(iframe.contentWindow);
37         //deck.removeChild(iframe);
38 }
39
40 function NSPrint(w)
41 {
42         if (!w) { w = this; }
43         try {
44                 var webBrowserPrint = w
45                         .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
46                         .getInterface(Components.interfaces.nsIWebBrowserPrint);
47                 if (webBrowserPrint) {
48                         var gPrintSettings = GetPrintSettings();
49                         gPrintSettings.printSilent = true;
50                         webBrowserPrint.print(gPrintSettings, null);
51                         gPrintSettings.marginTop = 0;
52                         gPrintSettings.marginLeft = 0;
53                         gPrintSettings.marginBottom = 0;
54                         gPrintSettings.marginRight = 0;
55                         gPrintSettings.headerStrLeft = '';
56                         gPrintSettings.headerStrCenter = '';
57                         gPrintSettings.headerStrRight = '';
58                         gPrintSettings.footerStrLeft = '';
59                         gPrintSettings.footerStrCenter = '';
60                         gPrintSettings.footerStrRight = '';
61                         //alert('Should be printing\n');
62                 } else {
63                         //alert('Should not be printing\n');
64                 }
65         } catch (e) {
66                 //alert('Probably not printing: ' + e);
67         // Pressing cancel is expressed as an NS_ERROR_ABORT return value,
68         // causing an exception to be thrown which we catch here.
69         // Unfortunately this will also consume helpful failures, so add a
70                 sdump('D_PRINT','PRINT EXCEPTION: ' + js2JSON(e) + '\n'); // if you need to debug
71         }
72 }
73
74 function NSPrint2(w) {
75         if (!w) { w = this; }
76         try {
77                 var webBrowserPrint = w
78                         .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
79                         .getInterface(Components.interfaces.nsIWebBrowserPrint);
80                 if (webBrowserPrint) {
81                         webBrowserPrint.print(null, null);
82                         //alert('Should be printing\n');
83                 } else {
84                         //alert('Should not be printing\n');
85                 }
86         } catch (e) {
87                 //alert('Probably not printing: ' + e);
88         // Pressing cancel is expressed as an NS_ERROR_ABORT return value,
89         // causing an exception to be thrown which we catch here.
90         // Unfortunately this will also consume helpful failures, so add a
91                 sdump('D_PRINT','PRINT EXCEPTION: ' + js2JSON(e) + '\n'); // if you need to debug
92         }
93
94 }
95
96 var gPrintSettings = null;
97
98 function GetPrintSettings()
99  {
100    try {
101      if (gPrintSettings == null) {
102        var pref = Components.classes["@mozilla.org/preferences-service;1"]
103                             .getService(Components.interfaces.nsIPrefBranch);
104        if (pref) {
105          gPrintSettingsAreGlobal = pref.getBoolPref("print.use_global_printsettings", false);
106          gSavePrintSettings = pref.getBoolPref("print.save_print_settings", false);
107        }
108  
109        var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
110                                          .getService(Components.interfaces.nsIPrintSettingsService);
111        if (gPrintSettingsAreGlobal) {
112          gPrintSettings = printService.globalPrintSettings;
113          setPrinterDefaultsForSelectedPrinter(printService);
114        } else {
115          gPrintSettings = printService.newPrintSettings;
116        }
117      }
118    } catch (e) {
119      sdump('D_PRINT',"GetPrintSettings() "+e+"\n");
120      alert("GetPrintSettings() "+e+"\n");
121    }
122  
123    return gPrintSettings;
124  }
125
126 function setPrinterDefaultsForSelectedPrinter(aPrintService)
127  {
128    if (gPrintSettings.printerName == "") {
129      gPrintSettings.printerName = aPrintService.defaultPrinterName;
130    }
131  
132    // First get any defaults from the printer 
133    aPrintService.initPrintSettingsFromPrinter(gPrintSettings.printerName, gPrintSettings);
134  
135    // now augment them with any values from last time
136    aPrintService.initPrintSettingsFromPrefs(gPrintSettings, true, gPrintSettings.kInitSaveAll);
137  }
138