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