2 // System.Windows.Forms.PrintDialog
5 // stubbed out by Paul Osman (paul.osman@sympatico.ca)
6 // Dennis Hayes (dennish@raytek.com)
7 // Implemented by Jordi Mas i Hernàndez <jmas@softcatala.org>
9 // (C) 2002-3 Ximian, Inc
11 using System.Drawing.Printing;
12 using System.Runtime.Remoting;
13 using System.ComponentModel;
14 using System.Runtime.InteropServices;
16 namespace System.Windows.Forms {
22 public sealed class PrintDialog : CommonDialog {
24 private bool allowPrintToFile;
25 private bool allowSelection;
26 private bool allowSomePages;
27 private bool showHelp;
28 private bool showNetwork;
29 private bool printToFile;
30 private PrintDocument document = null;
31 private PrinterSettings printerSettings;
41 // --- Public Properties
43 public bool AllowPrintToFile {
44 get {return allowPrintToFile;}
45 set {allowPrintToFile = value;}
48 public bool AllowSelection {
49 get {return allowSelection;}
50 set {allowSelection = value;}
53 public bool AllowSomePages {
54 get {return allowSomePages;}
55 set {allowSomePages = value;}
59 public PrintDocument Document {
60 get {return document;}
61 set {document = value;}
64 public PrinterSettings PrinterSettings {
65 get {return printerSettings;}
66 set {printerSettings = value;}
69 public bool PrintToFile {
70 get {return printToFile;}
71 set {printToFile = value;}
74 public bool ShowHelp {
75 get {return showHelp;}
76 set {showHelp = value;}
79 public bool ShowNetwork {
80 get {return showNetwork;}
81 set {showNetwork = value;}
90 public override void Reset(){
92 allowPrintToFile = true;
93 allowSelection = false;
94 allowSomePages = false;
101 // --- Protected Methods
103 protected override bool RunDialog(IntPtr hwndOwner) {
105 PRINTDLG pdlg = new PRINTDLG();
106 pdlg.hwndOwner = hwndOwner;
107 pdlg.lStructSize = (uint)Marshal.SizeOf(pdlg);
108 pdlg.hDevMode = (IntPtr)0;
109 pdlg.hDevNames = (IntPtr)0;
115 pdlg.hInstance = (IntPtr)0;
116 pdlg.lCustData = (IntPtr)0;
117 pdlg.lpfnPrintHook = (IntPtr)0;
118 pdlg.lpfnSetupHook = (IntPtr)0;
119 pdlg.lpPrintTemplateName = (IntPtr)0;
120 pdlg.lpSetupTemplateName = (IntPtr)0;
121 pdlg.hPrintTemplate = (IntPtr)0;
122 pdlg.hSetupTemplate = (IntPtr)0;
125 if (!allowPrintToFile) pdlg.Flags |= PrintDlgFlags.PD_DISABLEPRINTTOFILE;
126 if (!allowSelection) pdlg.Flags |= PrintDlgFlags.PD_NOSELECTION;
127 if (!allowSomePages) pdlg.Flags |= PrintDlgFlags.PD_NOPAGENUMS;
128 if (showHelp) pdlg.Flags |= PrintDlgFlags.PD_SHOWHELP;
129 if (!showNetwork) pdlg.Flags |= PrintDlgFlags.PD_NONETWORKBUTTON;
130 if (!printToFile) pdlg.Flags |= PrintDlgFlags.PD_DISABLEPRINTTOFILE;
132 IntPtr lfBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(pdlg));
133 Marshal.StructureToPtr(pdlg, lfBuffer, false);
135 if (Win32_WineLess.PrintDlg(lfBuffer)){
137 pdlg = (PRINTDLG)Marshal.PtrToStructure (lfBuffer, typeof (PRINTDLG));
139 // TODO: PrinterSettings is not yet implemented, we should pass the values
141 //PrinterSettings.Copies = pdlg.nCopies;