1 |
william |
31 |
///////////////////////////////////////////////////////////////////////////// |
2 |
|
|
// Name: src/common/cmndata.cpp |
3 |
|
|
// Purpose: Common GDI data |
4 |
|
|
// Author: Julian Smart |
5 |
|
|
// Modified by: |
6 |
|
|
// Created: 01/02/97 |
7 |
|
|
// RCS-ID: $Id: cmndata.cpp 43762 2006-12-03 15:26:01Z SC $ |
8 |
|
|
// Copyright: (c) Julian Smart |
9 |
|
|
// Licence: wxWindows licence |
10 |
|
|
///////////////////////////////////////////////////////////////////////////// |
11 |
|
|
|
12 |
|
|
// ============================================================================ |
13 |
|
|
// declarations |
14 |
|
|
// ============================================================================ |
15 |
|
|
|
16 |
|
|
// ---------------------------------------------------------------------------- |
17 |
|
|
// headers |
18 |
|
|
// ---------------------------------------------------------------------------- |
19 |
|
|
|
20 |
|
|
// For compilers that support precompilation, includes "wx.h". |
21 |
|
|
#include "wx/wxprec.h" |
22 |
|
|
|
23 |
|
|
#ifdef __BORLANDC__ |
24 |
|
|
#pragma hdrstop |
25 |
|
|
#endif |
26 |
|
|
|
27 |
|
|
#include "wx/cmndata.h" |
28 |
|
|
|
29 |
|
|
#ifndef WX_PRECOMP |
30 |
|
|
#if defined(__WXMSW__) |
31 |
|
|
#include "wx/msw/wrapcdlg.h" |
32 |
|
|
#endif // MSW |
33 |
|
|
#include <stdio.h> |
34 |
|
|
#include "wx/string.h" |
35 |
|
|
#include "wx/utils.h" |
36 |
|
|
#include "wx/app.h" |
37 |
|
|
#include "wx/log.h" |
38 |
|
|
#include "wx/gdicmn.h" |
39 |
|
|
#endif |
40 |
|
|
|
41 |
|
|
#include "wx/prntbase.h" |
42 |
|
|
#include "wx/printdlg.h" |
43 |
|
|
|
44 |
|
|
#if wxUSE_FONTDLG |
45 |
|
|
#include "wx/fontdlg.h" |
46 |
|
|
#endif // wxUSE_FONTDLG |
47 |
|
|
|
48 |
|
|
#if wxUSE_PRINTING_ARCHITECTURE |
49 |
|
|
|
50 |
|
|
#include "wx/paper.h" |
51 |
|
|
|
52 |
|
|
#if defined(__WXMAC__) |
53 |
|
|
#include "wx/mac/private/print.h" |
54 |
|
|
#endif |
55 |
|
|
|
56 |
|
|
IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) |
57 |
|
|
IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) |
58 |
|
|
IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) |
59 |
|
|
|
60 |
|
|
#endif // wxUSE_PRINTING_ARCHITECTURE |
61 |
|
|
|
62 |
|
|
IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) |
63 |
|
|
IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) |
64 |
|
|
|
65 |
|
|
// ============================================================================ |
66 |
|
|
// implementation |
67 |
|
|
// ============================================================================ |
68 |
|
|
|
69 |
|
|
// ---------------------------------------------------------------------------- |
70 |
|
|
// wxColourData |
71 |
|
|
// ---------------------------------------------------------------------------- |
72 |
|
|
|
73 |
|
|
wxColourData::wxColourData() |
74 |
|
|
{ |
75 |
|
|
m_chooseFull = false; |
76 |
|
|
m_dataColour.Set(0,0,0); |
77 |
|
|
// m_custColours are wxNullColours initially |
78 |
|
|
} |
79 |
|
|
|
80 |
|
|
wxColourData::wxColourData(const wxColourData& data) |
81 |
|
|
: wxObject() |
82 |
|
|
{ |
83 |
|
|
(*this) = data; |
84 |
|
|
} |
85 |
|
|
|
86 |
|
|
wxColourData::~wxColourData() |
87 |
|
|
{ |
88 |
|
|
} |
89 |
|
|
|
90 |
|
|
void wxColourData::SetCustomColour(int i, const wxColour& colour) |
91 |
|
|
{ |
92 |
|
|
wxCHECK_RET( (i >= 0 && i < 16), _T("custom colour index out of range") ); |
93 |
|
|
|
94 |
|
|
m_custColours[i] = colour; |
95 |
|
|
} |
96 |
|
|
|
97 |
|
|
wxColour wxColourData::GetCustomColour(int i) |
98 |
|
|
{ |
99 |
|
|
wxCHECK_MSG( (i >= 0 && i < 16), wxColour(0,0,0), |
100 |
|
|
_T("custom colour index out of range") ); |
101 |
|
|
|
102 |
|
|
return m_custColours[i]; |
103 |
|
|
} |
104 |
|
|
|
105 |
|
|
void wxColourData::operator=(const wxColourData& data) |
106 |
|
|
{ |
107 |
|
|
int i; |
108 |
|
|
for (i = 0; i < 16; i++) |
109 |
|
|
m_custColours[i] = data.m_custColours[i]; |
110 |
|
|
|
111 |
|
|
m_dataColour = (wxColour&)data.m_dataColour; |
112 |
|
|
m_chooseFull = data.m_chooseFull; |
113 |
|
|
} |
114 |
|
|
|
115 |
|
|
// ---------------------------------------------------------------------------- |
116 |
|
|
// Font data |
117 |
|
|
// ---------------------------------------------------------------------------- |
118 |
|
|
|
119 |
|
|
wxFontData::wxFontData() |
120 |
|
|
{ |
121 |
|
|
// Intialize colour to black. |
122 |
|
|
m_fontColour = wxNullColour; |
123 |
|
|
|
124 |
|
|
m_showHelp = false; |
125 |
|
|
m_allowSymbols = true; |
126 |
|
|
m_enableEffects = true; |
127 |
|
|
m_minSize = 0; |
128 |
|
|
m_maxSize = 0; |
129 |
|
|
|
130 |
|
|
m_encoding = wxFONTENCODING_SYSTEM; |
131 |
|
|
} |
132 |
|
|
|
133 |
|
|
wxFontData::~wxFontData() |
134 |
|
|
{ |
135 |
|
|
} |
136 |
|
|
|
137 |
|
|
#if wxUSE_FONTDLG |
138 |
|
|
|
139 |
|
|
wxFontDialogBase::~wxFontDialogBase() |
140 |
|
|
{ |
141 |
|
|
} |
142 |
|
|
|
143 |
|
|
#endif // wxUSE_FONTDLG |
144 |
|
|
|
145 |
|
|
#if wxUSE_PRINTING_ARCHITECTURE |
146 |
|
|
// ---------------------------------------------------------------------------- |
147 |
|
|
// Print data |
148 |
|
|
// ---------------------------------------------------------------------------- |
149 |
|
|
|
150 |
|
|
wxPrintData::wxPrintData() |
151 |
|
|
{ |
152 |
|
|
m_bin = wxPRINTBIN_DEFAULT; |
153 |
|
|
m_media = wxPRINTMEDIA_DEFAULT; |
154 |
|
|
m_printMode = wxPRINT_MODE_PRINTER; |
155 |
|
|
m_printOrientation = wxPORTRAIT; |
156 |
|
|
m_printOrientationReversed = false; |
157 |
|
|
m_printNoCopies = 1; |
158 |
|
|
m_printCollate = false; |
159 |
|
|
|
160 |
|
|
// New, 24/3/99 |
161 |
|
|
m_printerName = wxEmptyString; |
162 |
|
|
m_colour = true; |
163 |
|
|
m_duplexMode = wxDUPLEX_SIMPLEX; |
164 |
|
|
m_printQuality = wxPRINT_QUALITY_HIGH; |
165 |
|
|
|
166 |
|
|
// we intentionally don't initialize paper id and size at all, like this |
167 |
|
|
// the default system settings will be used for them |
168 |
|
|
m_paperId = wxPAPER_NONE; |
169 |
|
|
m_paperSize = wxDefaultSize; |
170 |
|
|
|
171 |
|
|
m_privData = NULL; |
172 |
|
|
m_privDataLen = 0; |
173 |
|
|
|
174 |
|
|
m_nativeData = wxPrintFactory::GetFactory()->CreatePrintNativeData(); |
175 |
|
|
} |
176 |
|
|
|
177 |
|
|
wxPrintData::wxPrintData(const wxPrintData& printData) |
178 |
|
|
: wxObject() |
179 |
|
|
{ |
180 |
|
|
m_nativeData = NULL; |
181 |
|
|
m_privData = NULL; |
182 |
|
|
(*this) = printData; |
183 |
|
|
} |
184 |
|
|
|
185 |
|
|
void wxPrintData::SetPrivData( char *privData, int len ) |
186 |
|
|
{ |
187 |
|
|
if (m_privData) |
188 |
|
|
{ |
189 |
|
|
delete [] m_privData; |
190 |
|
|
m_privData = NULL; |
191 |
|
|
} |
192 |
|
|
m_privDataLen = len; |
193 |
|
|
if (m_privDataLen > 0) |
194 |
|
|
{ |
195 |
|
|
m_privData = new char[m_privDataLen]; |
196 |
|
|
memcpy( m_privData, privData, m_privDataLen ); |
197 |
|
|
} |
198 |
|
|
} |
199 |
|
|
|
200 |
|
|
wxPrintData::~wxPrintData() |
201 |
|
|
{ |
202 |
|
|
m_nativeData->m_ref--; |
203 |
|
|
if (m_nativeData->m_ref == 0) |
204 |
|
|
delete m_nativeData; |
205 |
|
|
|
206 |
|
|
if (m_privData) |
207 |
|
|
delete [] m_privData; |
208 |
|
|
} |
209 |
|
|
|
210 |
|
|
void wxPrintData::ConvertToNative() |
211 |
|
|
{ |
212 |
|
|
m_nativeData->TransferFrom( *this ) ; |
213 |
|
|
} |
214 |
|
|
|
215 |
|
|
void wxPrintData::ConvertFromNative() |
216 |
|
|
{ |
217 |
|
|
m_nativeData->TransferTo( *this ) ; |
218 |
|
|
} |
219 |
|
|
|
220 |
|
|
void wxPrintData::operator=(const wxPrintData& data) |
221 |
|
|
{ |
222 |
|
|
m_printNoCopies = data.m_printNoCopies; |
223 |
|
|
m_printCollate = data.m_printCollate; |
224 |
|
|
m_printOrientation = data.m_printOrientation; |
225 |
|
|
m_printOrientationReversed = data.m_printOrientationReversed; |
226 |
|
|
m_printerName = data.m_printerName; |
227 |
|
|
m_colour = data.m_colour; |
228 |
|
|
m_duplexMode = data.m_duplexMode; |
229 |
|
|
m_printQuality = data.m_printQuality; |
230 |
|
|
m_paperId = data.m_paperId; |
231 |
|
|
m_paperSize = data.m_paperSize; |
232 |
|
|
m_bin = data.m_bin; |
233 |
|
|
m_media = data.m_media; |
234 |
|
|
m_printMode = data.m_printMode; |
235 |
|
|
m_filename = data.m_filename; |
236 |
|
|
|
237 |
|
|
// UnRef old m_nativeData |
238 |
|
|
if (m_nativeData) |
239 |
|
|
{ |
240 |
|
|
m_nativeData->m_ref--; |
241 |
|
|
if (m_nativeData->m_ref == 0) |
242 |
|
|
delete m_nativeData; |
243 |
|
|
} |
244 |
|
|
// Set Ref new one |
245 |
|
|
m_nativeData = data.GetNativeData(); |
246 |
|
|
m_nativeData->m_ref++; |
247 |
|
|
|
248 |
|
|
if (m_privData) |
249 |
|
|
{ |
250 |
|
|
delete [] m_privData; |
251 |
|
|
m_privData = NULL; |
252 |
|
|
} |
253 |
|
|
m_privDataLen = data.GetPrivDataLen(); |
254 |
|
|
if (m_privDataLen > 0) |
255 |
|
|
{ |
256 |
|
|
m_privData = new char[m_privDataLen]; |
257 |
|
|
memcpy( m_privData, data.GetPrivData(), m_privDataLen ); |
258 |
|
|
} |
259 |
|
|
} |
260 |
|
|
|
261 |
|
|
// Is this data OK for showing the print dialog? |
262 |
|
|
bool wxPrintData::IsOk() const |
263 |
|
|
{ |
264 |
|
|
m_nativeData->TransferFrom( *this ); |
265 |
|
|
|
266 |
|
|
return m_nativeData->Ok(); |
267 |
|
|
} |
268 |
|
|
|
269 |
|
|
// What should happen here? wxPostScriptPrintNativeData is not |
270 |
|
|
// defined unless all this is true on MSW. |
271 |
|
|
#if WXWIN_COMPATIBILITY_2_4 && wxUSE_PRINTING_ARCHITECTURE && (!defined(__WXMSW__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW) |
272 |
|
|
|
273 |
|
|
#include "wx/generic/prntdlgg.h" |
274 |
|
|
|
275 |
|
|
#if wxUSE_POSTSCRIPT |
276 |
|
|
#define WXUNUSED_WITHOUT_PS(name) name |
277 |
|
|
#else |
278 |
|
|
#define WXUNUSED_WITHOUT_PS(name) WXUNUSED(name) |
279 |
|
|
#endif |
280 |
|
|
|
281 |
|
|
wxString wxPrintData::GetPrinterCommand() const |
282 |
|
|
{ |
283 |
|
|
#if wxUSE_POSTSCRIPT |
284 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
285 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterCommand(); |
286 |
|
|
#endif |
287 |
|
|
return wxEmptyString; |
288 |
|
|
} |
289 |
|
|
|
290 |
|
|
wxString wxPrintData::GetPrinterOptions() const |
291 |
|
|
{ |
292 |
|
|
#if wxUSE_POSTSCRIPT |
293 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
294 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterOptions(); |
295 |
|
|
#endif |
296 |
|
|
return wxEmptyString; |
297 |
|
|
} |
298 |
|
|
|
299 |
|
|
wxString wxPrintData::GetPreviewCommand() const |
300 |
|
|
{ |
301 |
|
|
#if wxUSE_POSTSCRIPT |
302 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
303 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPreviewCommand(); |
304 |
|
|
#endif |
305 |
|
|
return wxEmptyString; |
306 |
|
|
} |
307 |
|
|
|
308 |
|
|
wxString wxPrintData::GetFontMetricPath() const |
309 |
|
|
{ |
310 |
|
|
#if wxUSE_POSTSCRIPT |
311 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
312 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetFontMetricPath(); |
313 |
|
|
#endif |
314 |
|
|
return wxEmptyString; |
315 |
|
|
} |
316 |
|
|
|
317 |
|
|
double wxPrintData::GetPrinterScaleX() const |
318 |
|
|
{ |
319 |
|
|
#if wxUSE_POSTSCRIPT |
320 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
321 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterScaleX(); |
322 |
|
|
#endif |
323 |
|
|
return 1.0; |
324 |
|
|
} |
325 |
|
|
|
326 |
|
|
double wxPrintData::GetPrinterScaleY() const |
327 |
|
|
{ |
328 |
|
|
#if wxUSE_POSTSCRIPT |
329 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
330 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterScaleY(); |
331 |
|
|
#endif |
332 |
|
|
return 1.0; |
333 |
|
|
} |
334 |
|
|
|
335 |
|
|
long wxPrintData::GetPrinterTranslateX() const |
336 |
|
|
{ |
337 |
|
|
#if wxUSE_POSTSCRIPT |
338 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
339 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterTranslateX(); |
340 |
|
|
#endif |
341 |
|
|
return 0; |
342 |
|
|
} |
343 |
|
|
|
344 |
|
|
long wxPrintData::GetPrinterTranslateY() const |
345 |
|
|
{ |
346 |
|
|
#if wxUSE_POSTSCRIPT |
347 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
348 |
|
|
return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterTranslateY(); |
349 |
|
|
#endif |
350 |
|
|
return 0; |
351 |
|
|
} |
352 |
|
|
|
353 |
|
|
void wxPrintData::SetPrinterCommand(const wxString& WXUNUSED_WITHOUT_PS(command)) |
354 |
|
|
{ |
355 |
|
|
#if wxUSE_POSTSCRIPT |
356 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
357 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterCommand( command ); |
358 |
|
|
#endif |
359 |
|
|
} |
360 |
|
|
|
361 |
|
|
void wxPrintData::SetPrinterOptions(const wxString& WXUNUSED_WITHOUT_PS(options)) |
362 |
|
|
{ |
363 |
|
|
#if wxUSE_POSTSCRIPT |
364 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
365 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterOptions( options ); |
366 |
|
|
#endif |
367 |
|
|
} |
368 |
|
|
|
369 |
|
|
void wxPrintData::SetPreviewCommand(const wxString& WXUNUSED_WITHOUT_PS(command)) |
370 |
|
|
{ |
371 |
|
|
#if wxUSE_POSTSCRIPT |
372 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
373 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPreviewCommand( command ); |
374 |
|
|
#endif |
375 |
|
|
} |
376 |
|
|
|
377 |
|
|
void wxPrintData::SetFontMetricPath(const wxString& WXUNUSED_WITHOUT_PS(path)) |
378 |
|
|
{ |
379 |
|
|
#if wxUSE_POSTSCRIPT |
380 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
381 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetFontMetricPath( path ); |
382 |
|
|
#endif |
383 |
|
|
} |
384 |
|
|
|
385 |
|
|
void wxPrintData::SetPrinterScaleX(double WXUNUSED_WITHOUT_PS(x)) |
386 |
|
|
{ |
387 |
|
|
#if wxUSE_POSTSCRIPT |
388 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
389 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterScaleX( x ); |
390 |
|
|
#endif |
391 |
|
|
} |
392 |
|
|
|
393 |
|
|
void wxPrintData::SetPrinterScaleY(double WXUNUSED_WITHOUT_PS(y)) |
394 |
|
|
{ |
395 |
|
|
#if wxUSE_POSTSCRIPT |
396 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
397 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterScaleY( y ); |
398 |
|
|
#endif |
399 |
|
|
} |
400 |
|
|
|
401 |
|
|
void wxPrintData::SetPrinterScaling(double WXUNUSED_WITHOUT_PS(x), double WXUNUSED_WITHOUT_PS(y)) |
402 |
|
|
{ |
403 |
|
|
#if wxUSE_POSTSCRIPT |
404 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
405 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterScaling( x, y ); |
406 |
|
|
#endif |
407 |
|
|
} |
408 |
|
|
|
409 |
|
|
void wxPrintData::SetPrinterTranslateX(long WXUNUSED_WITHOUT_PS(x)) |
410 |
|
|
{ |
411 |
|
|
#if wxUSE_POSTSCRIPT |
412 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
413 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterTranslateX( x ); |
414 |
|
|
#endif |
415 |
|
|
} |
416 |
|
|
|
417 |
|
|
void wxPrintData::SetPrinterTranslateY(long WXUNUSED_WITHOUT_PS(y)) |
418 |
|
|
{ |
419 |
|
|
#if wxUSE_POSTSCRIPT |
420 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
421 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterTranslateY( y ); |
422 |
|
|
#endif |
423 |
|
|
} |
424 |
|
|
|
425 |
|
|
void wxPrintData::SetPrinterTranslation(long WXUNUSED_WITHOUT_PS(x), long WXUNUSED_WITHOUT_PS(y)) |
426 |
|
|
{ |
427 |
|
|
#if wxUSE_POSTSCRIPT |
428 |
|
|
if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) |
429 |
|
|
((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterTranslation( x, y ); |
430 |
|
|
#endif |
431 |
|
|
} |
432 |
|
|
#endif |
433 |
|
|
|
434 |
|
|
// ---------------------------------------------------------------------------- |
435 |
|
|
// Print dialog data |
436 |
|
|
// ---------------------------------------------------------------------------- |
437 |
|
|
|
438 |
|
|
wxPrintDialogData::wxPrintDialogData() |
439 |
|
|
{ |
440 |
|
|
m_printFromPage = 0; |
441 |
|
|
m_printToPage = 0; |
442 |
|
|
m_printMinPage = 0; |
443 |
|
|
m_printMaxPage = 0; |
444 |
|
|
m_printNoCopies = 1; |
445 |
|
|
m_printAllPages = false; |
446 |
|
|
m_printCollate = false; |
447 |
|
|
m_printToFile = false; |
448 |
|
|
m_printSelection = false; |
449 |
|
|
m_printEnableSelection = false; |
450 |
|
|
m_printEnablePageNumbers = true; |
451 |
|
|
|
452 |
|
|
wxPrintFactory* factory = wxPrintFactory::GetFactory(); |
453 |
|
|
m_printEnablePrintToFile = ! factory->HasOwnPrintToFile(); |
454 |
|
|
|
455 |
|
|
m_printEnableHelp = false; |
456 |
|
|
#if WXWIN_COMPATIBILITY_2_4 |
457 |
|
|
m_printSetupDialog = false; |
458 |
|
|
#endif |
459 |
|
|
} |
460 |
|
|
|
461 |
|
|
wxPrintDialogData::wxPrintDialogData(const wxPrintDialogData& dialogData) |
462 |
|
|
: wxObject() |
463 |
|
|
{ |
464 |
|
|
(*this) = dialogData; |
465 |
|
|
} |
466 |
|
|
|
467 |
|
|
wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData) |
468 |
|
|
{ |
469 |
|
|
m_printFromPage = 1; |
470 |
|
|
m_printToPage = 0; |
471 |
|
|
m_printMinPage = 1; |
472 |
|
|
m_printMaxPage = 9999; |
473 |
|
|
m_printNoCopies = 1; |
474 |
|
|
m_printAllPages = false; |
475 |
|
|
m_printCollate = false; |
476 |
|
|
m_printToFile = false; |
477 |
|
|
m_printSelection = false; |
478 |
|
|
m_printEnableSelection = false; |
479 |
|
|
m_printEnablePageNumbers = true; |
480 |
|
|
m_printEnablePrintToFile = true; |
481 |
|
|
m_printEnableHelp = false; |
482 |
|
|
#if WXWIN_COMPATIBILITY_2_4 |
483 |
|
|
m_printSetupDialog = false; |
484 |
|
|
#endif |
485 |
|
|
m_printData = printData; |
486 |
|
|
} |
487 |
|
|
|
488 |
|
|
wxPrintDialogData::~wxPrintDialogData() |
489 |
|
|
{ |
490 |
|
|
} |
491 |
|
|
|
492 |
|
|
void wxPrintDialogData::operator=(const wxPrintDialogData& data) |
493 |
|
|
{ |
494 |
|
|
m_printFromPage = data.m_printFromPage; |
495 |
|
|
m_printToPage = data.m_printToPage; |
496 |
|
|
m_printMinPage = data.m_printMinPage; |
497 |
|
|
m_printMaxPage = data.m_printMaxPage; |
498 |
|
|
m_printNoCopies = data.m_printNoCopies; |
499 |
|
|
m_printAllPages = data.m_printAllPages; |
500 |
|
|
m_printCollate = data.m_printCollate; |
501 |
|
|
m_printToFile = data.m_printToFile; |
502 |
|
|
m_printSelection = data.m_printSelection; |
503 |
|
|
m_printEnableSelection = data.m_printEnableSelection; |
504 |
|
|
m_printEnablePageNumbers = data.m_printEnablePageNumbers; |
505 |
|
|
m_printEnableHelp = data.m_printEnableHelp; |
506 |
|
|
m_printEnablePrintToFile = data.m_printEnablePrintToFile; |
507 |
|
|
#if WXWIN_COMPATIBILITY_2_4 |
508 |
|
|
m_printSetupDialog = data.m_printSetupDialog; |
509 |
|
|
#endif |
510 |
|
|
m_printData = data.m_printData; |
511 |
|
|
} |
512 |
|
|
|
513 |
|
|
void wxPrintDialogData::operator=(const wxPrintData& data) |
514 |
|
|
{ |
515 |
|
|
m_printData = data; |
516 |
|
|
} |
517 |
|
|
|
518 |
|
|
// ---------------------------------------------------------------------------- |
519 |
|
|
// wxPageSetupDialogData |
520 |
|
|
// ---------------------------------------------------------------------------- |
521 |
|
|
|
522 |
|
|
wxPageSetupDialogData::wxPageSetupDialogData() |
523 |
|
|
{ |
524 |
|
|
m_paperSize = wxSize(0,0); |
525 |
|
|
|
526 |
|
|
CalculatePaperSizeFromId(); |
527 |
|
|
|
528 |
|
|
m_minMarginTopLeft = |
529 |
|
|
m_minMarginBottomRight = |
530 |
|
|
m_marginTopLeft = |
531 |
|
|
m_marginBottomRight = wxPoint(0,0); |
532 |
|
|
|
533 |
|
|
// Flags |
534 |
|
|
m_defaultMinMargins = false; |
535 |
|
|
m_enableMargins = true; |
536 |
|
|
m_enableOrientation = true; |
537 |
|
|
m_enablePaper = true; |
538 |
|
|
m_enablePrinter = true; |
539 |
|
|
m_enableHelp = false; |
540 |
|
|
m_getDefaultInfo = false; |
541 |
|
|
} |
542 |
|
|
|
543 |
|
|
wxPageSetupDialogData::wxPageSetupDialogData(const wxPageSetupDialogData& dialogData) |
544 |
|
|
: wxObject() |
545 |
|
|
{ |
546 |
|
|
(*this) = dialogData; |
547 |
|
|
} |
548 |
|
|
|
549 |
|
|
wxPageSetupDialogData::wxPageSetupDialogData(const wxPrintData& printData) |
550 |
|
|
{ |
551 |
|
|
m_paperSize = wxSize(0,0); |
552 |
|
|
m_minMarginTopLeft = |
553 |
|
|
m_minMarginBottomRight = |
554 |
|
|
m_marginTopLeft = |
555 |
|
|
m_marginBottomRight = wxPoint(0,0); |
556 |
|
|
|
557 |
|
|
// Flags |
558 |
|
|
m_defaultMinMargins = false; |
559 |
|
|
m_enableMargins = true; |
560 |
|
|
m_enableOrientation = true; |
561 |
|
|
m_enablePaper = true; |
562 |
|
|
m_enablePrinter = true; |
563 |
|
|
m_enableHelp = false; |
564 |
|
|
m_getDefaultInfo = false; |
565 |
|
|
|
566 |
|
|
m_printData = printData; |
567 |
|
|
|
568 |
|
|
// The wxPrintData paper size overrides these values, unless the size cannot |
569 |
|
|
// be found. |
570 |
|
|
CalculatePaperSizeFromId(); |
571 |
|
|
} |
572 |
|
|
|
573 |
|
|
wxPageSetupDialogData::~wxPageSetupDialogData() |
574 |
|
|
{ |
575 |
|
|
} |
576 |
|
|
|
577 |
|
|
wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPageSetupDialogData& data) |
578 |
|
|
{ |
579 |
|
|
m_paperSize = data.m_paperSize; |
580 |
|
|
m_minMarginTopLeft = data.m_minMarginTopLeft; |
581 |
|
|
m_minMarginBottomRight = data.m_minMarginBottomRight; |
582 |
|
|
m_marginTopLeft = data.m_marginTopLeft; |
583 |
|
|
m_marginBottomRight = data.m_marginBottomRight; |
584 |
|
|
m_defaultMinMargins = data.m_defaultMinMargins; |
585 |
|
|
m_enableMargins = data.m_enableMargins; |
586 |
|
|
m_enableOrientation = data.m_enableOrientation; |
587 |
|
|
m_enablePaper = data.m_enablePaper; |
588 |
|
|
m_enablePrinter = data.m_enablePrinter; |
589 |
|
|
m_getDefaultInfo = data.m_getDefaultInfo; |
590 |
|
|
m_enableHelp = data.m_enableHelp; |
591 |
|
|
|
592 |
|
|
m_printData = data.m_printData; |
593 |
|
|
|
594 |
|
|
return *this; |
595 |
|
|
} |
596 |
|
|
|
597 |
|
|
wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPrintData& data) |
598 |
|
|
{ |
599 |
|
|
m_printData = data; |
600 |
|
|
CalculatePaperSizeFromId(); |
601 |
|
|
|
602 |
|
|
return *this; |
603 |
|
|
} |
604 |
|
|
|
605 |
|
|
// If a corresponding paper type is found in the paper database, will set the m_printData |
606 |
|
|
// paper size id member as well. |
607 |
|
|
void wxPageSetupDialogData::SetPaperSize(const wxSize& sz) |
608 |
|
|
{ |
609 |
|
|
m_paperSize = sz; |
610 |
|
|
|
611 |
|
|
CalculateIdFromPaperSize(); |
612 |
|
|
} |
613 |
|
|
|
614 |
|
|
// Sets the wxPrintData id, plus the paper width/height if found in the paper database. |
615 |
|
|
void wxPageSetupDialogData::SetPaperSize(wxPaperSize id) |
616 |
|
|
{ |
617 |
|
|
m_printData.SetPaperId(id); |
618 |
|
|
|
619 |
|
|
CalculatePaperSizeFromId(); |
620 |
|
|
} |
621 |
|
|
|
622 |
|
|
void wxPageSetupDialogData::SetPrintData(const wxPrintData& printData) |
623 |
|
|
{ |
624 |
|
|
m_printData = printData; |
625 |
|
|
CalculatePaperSizeFromId(); |
626 |
|
|
} |
627 |
|
|
|
628 |
|
|
// Use paper size defined in this object to set the wxPrintData |
629 |
|
|
// paper id |
630 |
|
|
void wxPageSetupDialogData::CalculateIdFromPaperSize() |
631 |
|
|
{ |
632 |
|
|
wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), |
633 |
|
|
wxT("wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects.") ); |
634 |
|
|
|
635 |
|
|
wxSize sz = GetPaperSize(); |
636 |
|
|
|
637 |
|
|
wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10)); |
638 |
|
|
if (id != wxPAPER_NONE) |
639 |
|
|
{ |
640 |
|
|
m_printData.SetPaperId(id); |
641 |
|
|
} |
642 |
|
|
} |
643 |
|
|
|
644 |
|
|
// Use paper id in wxPrintData to set this object's paper size |
645 |
|
|
void wxPageSetupDialogData::CalculatePaperSizeFromId() |
646 |
|
|
{ |
647 |
|
|
wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL), |
648 |
|
|
wxT("wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects.") ); |
649 |
|
|
|
650 |
|
|
wxSize sz = wxThePrintPaperDatabase->GetSize(m_printData.GetPaperId()); |
651 |
|
|
|
652 |
|
|
// sz is in 10ths of a mm, while paper size is in mm |
653 |
|
|
m_paperSize.x = sz.x / 10; |
654 |
|
|
m_paperSize.y = sz.y / 10; |
655 |
|
|
} |
656 |
|
|
|
657 |
|
|
#endif // wxUSE_PRINTING_ARCHITECTURE |