]> git.saurik.com Git - wxWidgets.git/blame - src/mac/carbon/printdlg.cpp
not needed anywhere
[wxWidgets.git] / src / mac / carbon / printdlg.cpp
CommitLineData
e9576ca5
SC
1/////////////////////////////////////////////////////////////////////////////
2// Name: printdlg.cpp
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
e40298d5 9// Licence: wxWindows licence
e9576ca5
SC
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "printdlg.h"
14#endif
15
16#include "wx/object.h"
e7549107 17#include "wx/printdlg.h"
e9576ca5 18#include "wx/dcprint.h"
0bec761d 19#include "wx/msgdlg.h"
2f1ae414 20#include "wx/mac/uma.h"
66a09d47 21#ifndef __DARWIN__
e40298d5 22#include "Printing.h"
66a09d47 23#endif
e9576ca5 24
a3d3d3bf
GD
25#if defined(TARGET_CARBON) && !defined(__DARWIN__)
26# if PM_USE_SESSION_APIS
27# include <PMCore.h>
28# endif
29# include <PMApplication.h>
30#endif
31
e9576ca5 32// Use generic page setup dialog: use your own native one if one exists.
e9576ca5 33
2f1ae414 34#if !USE_SHARED_LIBRARY
e9576ca5
SC
35IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
36IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog)
2f1ae414 37#endif
e9576ca5 38
e7549107 39wxPrintDialog::wxPrintDialog()
e9576ca5
SC
40{
41 m_dialogParent = NULL;
e7549107
SC
42 m_printerDC = NULL;
43 m_destroyDC = TRUE;
e9576ca5
SC
44}
45
e7549107 46wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintDialogData* data)
e9576ca5
SC
47{
48 Create(p, data);
49}
50
e7549107
SC
51wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data)
52{
53 wxPrintDialogData data2;
54 if ( data )
55 data2 = *data;
e40298d5 56
e7549107
SC
57 Create(p, &data2);
58}
59
60bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data)
e9576ca5
SC
61{
62 m_dialogParent = p;
e7549107
SC
63 m_printerDC = NULL;
64 m_destroyDC = TRUE;
e40298d5 65
e9576ca5 66 if ( data )
e7549107 67 m_printDialogData = *data;
e40298d5 68
e9576ca5
SC
69 return TRUE;
70}
71
72wxPrintDialog::~wxPrintDialog()
73{
f5bb2251 74 if (m_destroyDC && m_printerDC) {
e7549107 75 delete m_printerDC;
f5bb2251
GD
76 m_printerDC = NULL;
77 }
e9576ca5
SC
78}
79
80int wxPrintDialog::ShowModal()
81{
e40298d5 82 int result = wxID_CANCEL ;
cfb00da4 83 OSErr err = noErr ;
e40298d5
JS
84 wxString message ;
85
86#if !TARGET_CARBON
87 err = ::UMAPrOpen(NULL) ;
88 if ( err == noErr )
89 {
90 m_printDialogData.ConvertToNative() ;
91 if ( ::PrJobDialog( (THPrint) m_printDialogData.GetPrintData().m_macPrintSettings ) )
92 {
93 m_printDialogData.ConvertFromNative() ;
94 result = wxID_OK ;
95 }
96
97 }
98 else
99 {
427ff662
SC
100 message.Printf( wxT("Print Error %d"), err ) ;
101 wxMessageDialog dialog( NULL , message , wxT(""), wxICON_HAND | wxOK) ;
e40298d5
JS
102 dialog.ShowModal();
103 }
104 ::UMAPrClose(NULL) ;
03e11df5 105#else
e40298d5 106#if PM_USE_SESSION_APIS
0bec761d
GD
107 Boolean accepted;
108
962cbf2e
GD
109 {
110 m_printDialogData.ConvertToNative() ;
962cbf2e
GD
111 // Display the Print dialog.
112 if (err == noErr)
113 {
2b5f62a0 114 err = PMSessionPrintDialog((PMPrintSession)m_printDialogData.GetPrintData().m_macPrintSession,
e40298d5
JS
115 (PMPrintSettings)m_printDialogData.GetPrintData().m_macPrintSettings,
116 (PMPageFormat)m_printDialogData.GetPrintData().m_macPageFormat,
117 &accepted);
962cbf2e
GD
118 if ((err == noErr) && !accepted)
119 {
120 err = kPMCancel; // user clicked Cancel button
121 }
122 }
123 if ( err == noErr )
124 {
125 m_printDialogData.ConvertFromNative() ;
126 result = wxID_OK ;
127 }
128 }
129 if ((err != noErr) && (err != kPMCancel))
130 {
427ff662
SC
131 message.Printf( wxT("Print Error %d"), err ) ;
132 wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
962cbf2e
GD
133 dialog.ShowModal();
134 }
e40298d5
JS
135#else
136#pragma warning "TODO: Printing for carbon without session apis"
03e11df5 137#endif
e40298d5
JS
138#endif
139 return result ;
e9576ca5
SC
140}
141
142wxDC *wxPrintDialog::GetPrintDC()
143{
e7549107 144 return new wxPrinterDC( m_printDialogData.GetPrintData() ) ;
e9576ca5
SC
145}
146
147/*
e40298d5
JS
148* wxPageSetupDialog
149*/
e9576ca5
SC
150
151wxPageSetupDialog::wxPageSetupDialog():
e40298d5 152wxDialog()
e9576ca5 153{
e40298d5 154 m_dialogParent = NULL;
e9576ca5
SC
155}
156
157wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data):
e40298d5 158wxDialog()
e9576ca5
SC
159{
160 Create(p, data);
161}
162
163bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data)
164{
165 m_dialogParent = p;
e40298d5 166
e9576ca5
SC
167 if (data)
168 m_pageSetupData = (*data);
e40298d5 169
e9576ca5
SC
170 return TRUE;
171}
172
173wxPageSetupDialog::~wxPageSetupDialog()
174{
175}
176
177int wxPageSetupDialog::ShowModal()
178{
e40298d5 179 int result = wxID_CANCEL ;
cfb00da4 180 OSErr err = noErr ;
e40298d5
JS
181 wxString message ;
182
0bec761d 183#if !TARGET_CARBON
e40298d5
JS
184 err = ::UMAPrOpen(NULL) ;
185 if ( err == noErr )
186 {
187 m_pageSetupData.ConvertToNative() ;
188 if ( ::PrStlDialog( (THPrint) m_pageSetupData.GetPrintData().m_macPrintSettings ) )
189 {
190 m_pageSetupData.ConvertFromNative() ;
191 result = wxID_OK ;
192 }
193
194 }
195 else
196 {
427ff662
SC
197 message.Printf( wxT("Print Error %d"), err ) ;
198 wxMessageDialog dialog( NULL , message , wxEmptyString , wxICON_HAND | wxOK) ;
e40298d5
JS
199 dialog.ShowModal();
200 }
201 ::UMAPrClose(NULL) ;
2f1ae414 202#else
e40298d5 203#if PM_USE_SESSION_APIS
0bec761d 204 Boolean accepted;
962cbf2e
GD
205 {
206 m_pageSetupData.ConvertToNative() ;
207
962cbf2e
GD
208 // Display the Page Setup dialog.
209 if (err == noErr)
210 {
2b5f62a0 211 err = PMSessionPageSetupDialog((PMPrintSession)m_pageSetupData.GetPrintData().m_macPrintSession,
e40298d5
JS
212 (PMPageFormat)m_pageSetupData.GetPrintData().m_macPageFormat,
213 &accepted);
962cbf2e
GD
214 if ((err == noErr) && !accepted)
215 {
216 err = kPMCancel; // user clicked Cancel button
217 }
218 }
219
220 // If the user did not cancel, flatten and save the PageFormat object
221 // with our document.
222 if (err == noErr) {
223 // err = FlattenAndSavePageFormat(m_pageSetupData.GetPrintData().m_macPageFormat);
224 m_pageSetupData.ConvertFromNative() ;
225 result = wxID_OK ;
226 }
227 }
228 if ((err != noErr) && (err != kPMCancel))
229 {
427ff662
SC
230 message.Printf( wxT("Print Error %d"), err ) ;
231 wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
962cbf2e
GD
232 dialog.ShowModal();
233 }
e40298d5
JS
234#else
235#pragma warning "TODO: Printing for carbon without session apis"
236#endif
2f1ae414 237#endif
e40298d5 238 return result ;
e9576ca5
SC
239}
240