]>
Commit | Line | Data |
---|---|---|
e9576ca5 | 1 | ///////////////////////////////////////////////////////////////////////////// |
cc224d6e | 2 | // Name: src/mac/carbon/printdlg.cpp |
e9576ca5 | 3 | // Purpose: wxPrintDialog, wxPageSetupDialog |
a31a5f85 | 4 | // Author: Stefan Csomor |
e9576ca5 | 5 | // Modified by: |
a31a5f85 | 6 | // Created: 1998-01-01 |
e9576ca5 | 7 | // RCS-ID: $Id$ |
a31a5f85 | 8 | // Copyright: (c) Stefan Csomor |
65571936 | 9 | // Licence: wxWindows licence |
e9576ca5 SC |
10 | ///////////////////////////////////////////////////////////////////////////// |
11 | ||
3d1a4878 SC |
12 | #include "wx/wxprec.h" |
13 | ||
179e085f RN |
14 | #if wxUSE_PRINTING_ARCHITECTURE |
15 | ||
e9576ca5 | 16 | #include "wx/object.h" |
e7549107 | 17 | #include "wx/printdlg.h" |
08680429 | 18 | #include "wx/mac/printdlg.h" |
e9576ca5 | 19 | #include "wx/dcprint.h" |
0bec761d | 20 | #include "wx/msgdlg.h" |
746d7582 | 21 | #include "wx/mac/private/print.h" |
a3d3d3bf | 22 | |
cc224d6e | 23 | |
e9576ca5 | 24 | // Use generic page setup dialog: use your own native one if one exists. |
e9576ca5 | 25 | |
c061373d | 26 | IMPLEMENT_DYNAMIC_CLASS(wxMacPrintDialog, wxPrintDialogBase) |
e9576ca5 | 27 | |
cc224d6e | 28 | |
c061373d | 29 | wxMacPrintDialog::wxMacPrintDialog() |
e9576ca5 SC |
30 | { |
31 | m_dialogParent = NULL; | |
e7549107 | 32 | m_printerDC = NULL; |
cc224d6e | 33 | m_destroyDC = true; |
e9576ca5 SC |
34 | } |
35 | ||
cc224d6e | 36 | wxMacPrintDialog::wxMacPrintDialog( wxWindow *p, wxPrintDialogData *data ) |
e9576ca5 | 37 | { |
cc224d6e | 38 | Create( p, data ); |
e9576ca5 SC |
39 | } |
40 | ||
cc224d6e | 41 | wxMacPrintDialog::wxMacPrintDialog( wxWindow *p, wxPrintData *data ) |
e7549107 SC |
42 | { |
43 | wxPrintDialogData data2; | |
cc224d6e | 44 | if (data != NULL) |
e7549107 | 45 | data2 = *data; |
cc224d6e DS |
46 | |
47 | Create( p, &data2 ); | |
e7549107 SC |
48 | } |
49 | ||
cc224d6e | 50 | bool wxMacPrintDialog::Create( wxWindow *p, wxPrintDialogData *data ) |
e9576ca5 SC |
51 | { |
52 | m_dialogParent = p; | |
e7549107 | 53 | m_printerDC = NULL; |
cc224d6e DS |
54 | m_destroyDC = true; |
55 | ||
56 | if (data != NULL) | |
e7549107 | 57 | m_printDialogData = *data; |
cc224d6e DS |
58 | |
59 | return true; | |
e9576ca5 SC |
60 | } |
61 | ||
c061373d | 62 | wxMacPrintDialog::~wxMacPrintDialog() |
e9576ca5 | 63 | { |
cc224d6e DS |
64 | if (m_destroyDC && m_printerDC) |
65 | { | |
e7549107 | 66 | delete m_printerDC; |
f5bb2251 GD |
67 | m_printerDC = NULL; |
68 | } | |
e9576ca5 SC |
69 | } |
70 | ||
c061373d | 71 | int wxMacPrintDialog::ShowModal() |
e9576ca5 | 72 | { |
dc7ccb9c | 73 | m_printDialogData.GetPrintData().ConvertToNative(); |
cc224d6e DS |
74 | ((wxMacCarbonPrintData*)m_printDialogData.GetPrintData().GetNativeData())->TransferFrom( &m_printDialogData ); |
75 | ||
76 | int result = wxID_CANCEL; | |
77 | OSErr err = noErr; | |
78 | Boolean accepted; | |
79 | ||
80 | err = PMSessionPrintDialog( | |
81 | ((wxMacCarbonPrintData*)m_printDialogData.GetPrintData().GetNativeData())->m_macPrintSession, | |
dc7ccb9c SC |
82 | ((wxMacCarbonPrintData*)m_printDialogData.GetPrintData().GetNativeData())->m_macPrintSettings, |
83 | ((wxMacCarbonPrintData*)m_printDialogData.GetPrintData().GetNativeData())->m_macPageFormat, | |
cc224d6e DS |
84 | &accepted ); |
85 | ||
dc7ccb9c SC |
86 | if ((err == noErr) && !accepted) |
87 | { | |
cc224d6e DS |
88 | // user clicked Cancel button |
89 | err = kPMCancel; | |
dc7ccb9c SC |
90 | } |
91 | ||
cc224d6e | 92 | if (err == noErr) |
dc7ccb9c | 93 | { |
cc224d6e | 94 | result = wxID_OK; |
dc7ccb9c SC |
95 | } |
96 | ||
97 | if ((err != noErr) && (err != kPMCancel)) | |
98 | { | |
cc224d6e DS |
99 | wxString message; |
100 | ||
101 | message.Printf( wxT("Print Error %d"), err ); | |
102 | wxMessageDialog dialog( NULL, message, wxEmptyString, wxICON_HAND | wxOK ); | |
dc7ccb9c SC |
103 | dialog.ShowModal(); |
104 | } | |
105 | ||
cc224d6e | 106 | if (result == wxID_OK) |
dc7ccb9c SC |
107 | { |
108 | m_printDialogData.GetPrintData().ConvertFromNative(); | |
cc224d6e | 109 | ((wxMacCarbonPrintData*)m_printDialogData.GetPrintData().GetNativeData())->TransferTo( &m_printDialogData ); |
dc7ccb9c | 110 | } |
cc224d6e DS |
111 | |
112 | return result; | |
e9576ca5 SC |
113 | } |
114 | ||
cc224d6e | 115 | wxDC * wxMacPrintDialog::GetPrintDC() |
e9576ca5 | 116 | { |
cc224d6e | 117 | return new wxPrinterDC( m_printDialogData.GetPrintData() ); |
e9576ca5 SC |
118 | } |
119 | ||
08680429 | 120 | IMPLEMENT_CLASS(wxMacPageSetupDialog, wxPageSetupDialogBase) |
e9576ca5 | 121 | |
cc224d6e DS |
122 | wxMacPageSetupDialog::wxMacPageSetupDialog( wxWindow *p, wxPageSetupDialogData *data ) |
123 | : wxPageSetupDialogBase() | |
e9576ca5 | 124 | { |
cc224d6e | 125 | Create( p, data ); |
e9576ca5 SC |
126 | } |
127 | ||
cc224d6e | 128 | bool wxMacPageSetupDialog::Create( wxWindow *p, wxPageSetupDialogData *data ) |
e9576ca5 SC |
129 | { |
130 | m_dialogParent = p; | |
cc224d6e DS |
131 | |
132 | if (data != NULL) | |
e9576ca5 | 133 | m_pageSetupData = (*data); |
cc224d6e DS |
134 | |
135 | return true; | |
e9576ca5 SC |
136 | } |
137 | ||
08680429 | 138 | wxMacPageSetupDialog::~wxMacPageSetupDialog() |
e9576ca5 SC |
139 | { |
140 | } | |
141 | ||
08680429 | 142 | wxPageSetupData& wxMacPageSetupDialog::GetPageSetupDialogData() |
cc224d6e | 143 | { |
08680429 RR |
144 | return m_pageSetupData; |
145 | } | |
146 | ||
147 | int wxMacPageSetupDialog::ShowModal() | |
e9576ca5 | 148 | { |
dc7ccb9c | 149 | m_pageSetupData.GetPrintData().ConvertToNative(); |
cc224d6e | 150 | ((wxMacCarbonPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->TransferFrom( &m_pageSetupData ); |
dc7ccb9c | 151 | |
cc224d6e DS |
152 | int result = wxID_CANCEL; |
153 | OSErr err = noErr; | |
154 | Boolean accepted; | |
dc7ccb9c | 155 | |
cc224d6e DS |
156 | err = PMSessionPageSetupDialog( |
157 | ((wxMacCarbonPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->m_macPrintSession, | |
dc7ccb9c | 158 | ((wxMacCarbonPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->m_macPageFormat, |
cc224d6e DS |
159 | &accepted ); |
160 | ||
dc7ccb9c SC |
161 | if ((err == noErr) && !accepted) |
162 | { | |
cc224d6e DS |
163 | // user clicked Cancel button |
164 | err = kPMCancel; | |
dc7ccb9c SC |
165 | } |
166 | ||
cc224d6e DS |
167 | // If the user did not cancel, flatten and save the PageFormat object |
168 | // with our document. | |
169 | if (err == noErr) | |
dc7ccb9c | 170 | { |
cc224d6e | 171 | result = wxID_OK; |
dc7ccb9c | 172 | } |
cc224d6e | 173 | |
dc7ccb9c SC |
174 | if ((err != noErr) && (err != kPMCancel)) |
175 | { | |
cc224d6e DS |
176 | wxString message; |
177 | ||
178 | message.Printf( wxT("Print Error %d"), err ); | |
179 | wxMessageDialog dialog( NULL, message, wxEmptyString, wxICON_HAND | wxOK ); | |
dc7ccb9c SC |
180 | dialog.ShowModal(); |
181 | } | |
182 | ||
cc224d6e | 183 | if (result == wxID_OK) |
dc7ccb9c SC |
184 | { |
185 | m_pageSetupData.GetPrintData().ConvertFromNative(); | |
cc224d6e DS |
186 | m_pageSetupData.SetPaperSize( m_pageSetupData.GetPrintData().GetPaperSize() ); |
187 | ((wxMacCarbonPrintData*)m_pageSetupData.GetPrintData().GetNativeData())->TransferTo( &m_pageSetupData ); | |
188 | } | |
189 | ||
08680429 | 190 | return result; |
e9576ca5 SC |
191 | } |
192 | ||
179e085f | 193 | #endif |