more backwards compatibility for printing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -19,27 +19,28 @@
|
|||||||
#include "wx/dialog.h"
|
#include "wx/dialog.h"
|
||||||
#include "wx/cmndata.h"
|
#include "wx/cmndata.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* wxPrinterDialog
|
|
||||||
* The common dialog for printing.
|
|
||||||
*/
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxDC;
|
class WXDLLEXPORT wxDC;
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// wxPrinterDialog: the common dialog for printing.
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxPrintDialog : public wxDialog
|
class WXDLLEXPORT wxPrintDialog : public wxDialog
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxPrintDialog)
|
DECLARE_DYNAMIC_CLASS(wxPrintDialog)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxPrintDialog(void);
|
wxPrintDialog();
|
||||||
wxPrintDialog(wxWindow *parent, wxPrintDialogData* data = NULL);
|
wxPrintDialog(wxWindow *parent, wxPrintDialogData* data = NULL);
|
||||||
~wxPrintDialog(void);
|
wxPrintDialog(wxWindow *parent, wxPrintData* data);
|
||||||
|
virtual ~wxPrintDialog();
|
||||||
|
|
||||||
bool Create(wxWindow *parent, wxPrintDialogData* data = NULL);
|
bool Create(wxWindow *parent, wxPrintDialogData* data = NULL);
|
||||||
virtual int ShowModal(void);
|
virtual int ShowModal();
|
||||||
|
|
||||||
inline wxPrintDialogData& GetPrintDialogData(void) { return m_printDialogData; }
|
wxPrintDialogData& GetPrintDialogData() { return m_printDialogData; }
|
||||||
inline wxPrintData& GetPrintData(void) { return m_printDialogData.GetPrintData(); }
|
wxPrintData& GetPrintData() { return m_printDialogData.GetPrintData(); }
|
||||||
virtual wxDC *GetPrintDC(void);
|
virtual wxDC *GetPrintDC();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxPrintDialogData m_printDialogData;
|
wxPrintDialogData m_printDialogData;
|
||||||
@@ -52,18 +53,19 @@ class WXDLLEXPORT wxPageSetupDialog: public wxDialog
|
|||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxPageSetupDialog)
|
DECLARE_DYNAMIC_CLASS(wxPageSetupDialog)
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxPageSetupDialog();
|
||||||
|
wxPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL);
|
||||||
|
virtual ~wxPageSetupDialog();
|
||||||
|
|
||||||
|
bool Create(wxWindow *parent, wxPageSetupData *data = NULL);
|
||||||
|
virtual int ShowModal();
|
||||||
|
|
||||||
|
wxPageSetupData& GetPageSetupData() { return m_pageSetupData; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxPageSetupData m_pageSetupData;
|
wxPageSetupData m_pageSetupData;
|
||||||
wxWindow* m_dialogParent;
|
wxWindow* m_dialogParent;
|
||||||
public:
|
|
||||||
wxPageSetupDialog(void);
|
|
||||||
wxPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL);
|
|
||||||
~wxPageSetupDialog(void);
|
|
||||||
|
|
||||||
bool Create(wxWindow *parent, wxPageSetupData *data = NULL);
|
|
||||||
virtual int ShowModal(void);
|
|
||||||
|
|
||||||
inline wxPageSetupData& GetPageSetupData(void) { return m_pageSetupData; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -18,9 +18,9 @@
|
|||||||
|
|
||||||
#include "wx/prntbase.h"
|
#include "wx/prntbase.h"
|
||||||
|
|
||||||
/*
|
// ---------------------------------------------------------------------------
|
||||||
* Represents the printer: manages printing a wxPrintout object
|
// Represents the printer: manages printing a wxPrintout object
|
||||||
*/
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxWindowsPrinter : public wxPrinterBase
|
class WXDLLEXPORT wxWindowsPrinter : public wxPrinterBase
|
||||||
{
|
{
|
||||||
@@ -28,9 +28,11 @@ class WXDLLEXPORT wxWindowsPrinter: public wxPrinterBase
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
wxWindowsPrinter(wxPrintDialogData *data = NULL);
|
wxWindowsPrinter(wxPrintDialogData *data = NULL);
|
||||||
~wxWindowsPrinter(void);
|
virtual ~wxWindowsPrinter();
|
||||||
|
|
||||||
virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE);
|
virtual bool Print(wxWindow *parent,
|
||||||
|
wxPrintout *printout,
|
||||||
|
bool prompt = TRUE);
|
||||||
virtual wxDC* PrintDialog(wxWindow *parent);
|
virtual wxDC* PrintDialog(wxWindow *parent);
|
||||||
virtual bool Setup(wxWindow *parent);
|
virtual bool Setup(wxWindow *parent);
|
||||||
|
|
||||||
@@ -38,21 +40,26 @@ class WXDLLEXPORT wxWindowsPrinter: public wxPrinterBase
|
|||||||
WXFARPROC m_lpAbortProc;
|
WXFARPROC m_lpAbortProc;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
// ---------------------------------------------------------------------------
|
||||||
* wxPrintPreview
|
// wxPrintPreview: programmer creates an object of this class to preview a
|
||||||
* Programmer creates an object of this class to preview a wxPrintout.
|
// wxPrintout.
|
||||||
*/
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxWindowsPrintPreview : public wxPrintPreviewBase
|
class WXDLLEXPORT wxWindowsPrintPreview : public wxPrintPreviewBase
|
||||||
{
|
{
|
||||||
DECLARE_CLASS(wxWindowsPrintPreview)
|
DECLARE_CLASS(wxWindowsPrintPreview)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxWindowsPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting = NULL, wxPrintDialogData *data = NULL);
|
wxWindowsPrintPreview(wxPrintout *printout,
|
||||||
~wxWindowsPrintPreview(void);
|
wxPrintout *printoutForPrinting = NULL,
|
||||||
|
wxPrintDialogData *data = NULL);
|
||||||
|
wxWindowsPrintPreview(wxPrintout *printout,
|
||||||
|
wxPrintout *printoutForPrinting,
|
||||||
|
wxPrintData *data);
|
||||||
|
virtual ~wxWindowsPrintPreview();
|
||||||
|
|
||||||
virtual bool Print(bool interactive);
|
virtual bool Print(bool interactive);
|
||||||
virtual void DetermineScaling(void);
|
virtual void DetermineScaling();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -9,6 +9,14 @@
|
|||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
// declarations
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifdef __GNUG__
|
#ifdef __GNUG__
|
||||||
#pragma implementation "printdlg.h"
|
#pragma implementation "printdlg.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -20,9 +28,6 @@
|
|||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WX_PRECOMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "wx/printdlg.h"
|
#include "wx/printdlg.h"
|
||||||
#include "wx/dcprint.h"
|
#include "wx/dcprint.h"
|
||||||
|
|
||||||
@@ -44,25 +49,44 @@
|
|||||||
#undef StartDoc
|
#undef StartDoc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// wxWin macros
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
#if !USE_SHARED_LIBRARY
|
#if !USE_SHARED_LIBRARY
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
|
IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog)
|
||||||
IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog)
|
IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxPrintDialog::wxPrintDialog(void):
|
// ===========================================================================
|
||||||
wxDialog()
|
// implementation
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// wxPrintDialog
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
wxPrintDialog::wxPrintDialog()
|
||||||
{
|
{
|
||||||
m_dialogParent = NULL;
|
m_dialogParent = NULL;
|
||||||
m_printerDC = NULL;
|
m_printerDC = NULL;
|
||||||
m_destroyDC = TRUE;
|
m_destroyDC = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintDialogData* data):
|
wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintDialogData* data)
|
||||||
wxDialog()
|
|
||||||
{
|
{
|
||||||
Create(p, data);
|
Create(p, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data)
|
||||||
|
{
|
||||||
|
wxPrintDialogData data2;
|
||||||
|
if ( data )
|
||||||
|
data2 = *data;
|
||||||
|
|
||||||
|
Create(p, &data2);
|
||||||
|
}
|
||||||
|
|
||||||
bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data)
|
bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data)
|
||||||
{
|
{
|
||||||
m_dialogParent = p;
|
m_dialogParent = p;
|
||||||
@@ -77,13 +101,13 @@ bool wxPrintDialog::Create(wxWindow *p, wxPrintDialogData* data)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPrintDialog::~wxPrintDialog(void)
|
wxPrintDialog::~wxPrintDialog()
|
||||||
{
|
{
|
||||||
if (m_destroyDC && m_printerDC)
|
if (m_destroyDC && m_printerDC)
|
||||||
delete m_printerDC;
|
delete m_printerDC;
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxPrintDialog::ShowModal(void)
|
int wxPrintDialog::ShowModal()
|
||||||
{
|
{
|
||||||
m_printDialogData.ConvertToNative();
|
m_printDialogData.ConvertToNative();
|
||||||
|
|
||||||
@@ -97,17 +121,11 @@ int wxPrintDialog::ShowModal(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
char buf[256];
|
|
||||||
DWORD exError = CommDlgExtendedError();
|
|
||||||
sprintf(buf, "ret = %d, ex error = %d", (int) ret, (int) exError);
|
|
||||||
wxMessageBox(buf);
|
|
||||||
*/
|
|
||||||
return wxID_CANCEL;
|
return wxID_CANCEL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDC *wxPrintDialog::GetPrintDC(void)
|
wxDC *wxPrintDialog::GetPrintDC()
|
||||||
{
|
{
|
||||||
if (m_printerDC)
|
if (m_printerDC)
|
||||||
{
|
{
|
||||||
@@ -118,18 +136,16 @@ wxDC *wxPrintDialog::GetPrintDC(void)
|
|||||||
return (wxDC*) NULL;
|
return (wxDC*) NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// ---------------------------------------------------------------------------
|
||||||
* wxPageSetupDialog
|
// wxPageSetupDialog
|
||||||
*/
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
wxPageSetupDialog::wxPageSetupDialog(void):
|
wxPageSetupDialog::wxPageSetupDialog()
|
||||||
wxDialog()
|
|
||||||
{
|
{
|
||||||
m_dialogParent = NULL;
|
m_dialogParent = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data):
|
wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data)
|
||||||
wxDialog()
|
|
||||||
{
|
{
|
||||||
Create(p, data);
|
Create(p, data);
|
||||||
}
|
}
|
||||||
@@ -147,11 +163,11 @@ bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPageSetupDialog::~wxPageSetupDialog(void)
|
wxPageSetupDialog::~wxPageSetupDialog()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxPageSetupDialog::ShowModal(void)
|
int wxPageSetupDialog::ShowModal()
|
||||||
{
|
{
|
||||||
#ifdef __WIN95__
|
#ifdef __WIN95__
|
||||||
m_pageSetupData.ConvertToNative();
|
m_pageSetupData.ConvertToNative();
|
||||||
|
@@ -9,6 +9,14 @@
|
|||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
// declarations
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifdef __GNUG__
|
#ifdef __GNUG__
|
||||||
#pragma implementation "printwin.h"
|
#pragma implementation "printwin.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -47,24 +55,36 @@
|
|||||||
#include <print.h>
|
#include <print.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// private functions
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
LONG APIENTRY _EXPORT wxAbortProc(HDC hPr, int Code);
|
LONG APIENTRY _EXPORT wxAbortProc(HDC hPr, int Code);
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// wxWin macros
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
#if !USE_SHARED_LIBRARY
|
#if !USE_SHARED_LIBRARY
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxWindowsPrinter, wxPrinterBase)
|
IMPLEMENT_DYNAMIC_CLASS(wxWindowsPrinter, wxPrinterBase)
|
||||||
IMPLEMENT_CLASS(wxWindowsPrintPreview, wxPrintPreviewBase)
|
IMPLEMENT_CLASS(wxWindowsPrintPreview, wxPrintPreviewBase)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
// ===========================================================================
|
||||||
* Printer
|
// implementation
|
||||||
*/
|
// ===========================================================================
|
||||||
|
|
||||||
wxWindowsPrinter::wxWindowsPrinter(wxPrintDialogData *data):
|
// ---------------------------------------------------------------------------
|
||||||
wxPrinterBase(data)
|
// Printer
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
wxWindowsPrinter::wxWindowsPrinter(wxPrintDialogData *data)
|
||||||
|
: wxPrinterBase(data)
|
||||||
{
|
{
|
||||||
m_lpAbortProc = (WXFARPROC) MakeProcInstance((FARPROC) wxAbortProc, wxGetInstance());
|
m_lpAbortProc = (WXFARPROC) MakeProcInstance((FARPROC) wxAbortProc, wxGetInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindowsPrinter::~wxWindowsPrinter(void)
|
wxWindowsPrinter::~wxWindowsPrinter()
|
||||||
{
|
{
|
||||||
FreeProcInstance((FARPROC) m_lpAbortProc);
|
FreeProcInstance((FARPROC) m_lpAbortProc);
|
||||||
}
|
}
|
||||||
@@ -173,7 +193,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
#else
|
#else
|
||||||
::SetAbortProc((HDC) dc->GetHDC(), (int (_stdcall *)
|
::SetAbortProc((HDC) dc->GetHDC(), (int (_stdcall *)
|
||||||
// cast it to right type only if required
|
// cast it to right type only if required
|
||||||
// @@@ it's really cdecl and we're casting it to stdcall - either there is
|
// FIXME it's really cdecl and we're casting it to stdcall - either there is
|
||||||
// something I don't understand or it will crash at first usage
|
// something I don't understand or it will crash at first usage
|
||||||
#ifdef STRICT
|
#ifdef STRICT
|
||||||
(HDC, int)
|
(HDC, int)
|
||||||
@@ -186,12 +206,13 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
if (!win)
|
if (!win)
|
||||||
{
|
{
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
wxMessageBox("Sorry, could not create an abort dialog.", "Print Error", wxOK, parent);
|
wxLogDebug("Could not create an abort dialog.");
|
||||||
|
|
||||||
delete dc;
|
delete dc;
|
||||||
}
|
}
|
||||||
sm_abortWindow = win;
|
sm_abortWindow = win;
|
||||||
sm_abortWindow->Show(TRUE);
|
sm_abortWindow->Show(TRUE);
|
||||||
wxYield();
|
wxSafeYield();
|
||||||
|
|
||||||
printout->OnBeginPrinting();
|
printout->OnBeginPrinting();
|
||||||
|
|
||||||
@@ -203,7 +224,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))
|
if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))
|
||||||
{
|
{
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
wxMessageBox("Could not start printing.", "Print Error", wxOK, parent);
|
wxLogError(_("Could not start printing."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sm_abortIt)
|
if (sm_abortIt)
|
||||||
@@ -279,13 +300,23 @@ bool wxWindowsPrinter::Setup(wxWindow *parent)
|
|||||||
* Print preview
|
* Print preview
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wxWindowsPrintPreview::wxWindowsPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintDialogData *data):
|
wxWindowsPrintPreview::wxWindowsPrintPreview(wxPrintout *printout,
|
||||||
wxPrintPreviewBase(printout, printoutForPrinting, data)
|
wxPrintout *printoutForPrinting,
|
||||||
|
wxPrintDialogData *data)
|
||||||
|
: wxPrintPreviewBase(printout, printoutForPrinting, data)
|
||||||
{
|
{
|
||||||
DetermineScaling();
|
DetermineScaling();
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindowsPrintPreview::~wxWindowsPrintPreview(void)
|
wxWindowsPrintPreview::wxWindowsPrintPreview(wxPrintout *printout,
|
||||||
|
wxPrintout *printoutForPrinting,
|
||||||
|
wxPrintData *data)
|
||||||
|
: wxPrintPreviewBase(printout, printoutForPrinting, data)
|
||||||
|
{
|
||||||
|
DetermineScaling();
|
||||||
|
}
|
||||||
|
|
||||||
|
wxWindowsPrintPreview::~wxWindowsPrintPreview()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,7 +328,7 @@ bool wxWindowsPrintPreview::Print(bool interactive)
|
|||||||
return printer.Print(m_previewFrame, m_printPrintout, interactive);
|
return printer.Print(m_previewFrame, m_printPrintout, interactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindowsPrintPreview::DetermineScaling(void)
|
void wxWindowsPrintPreview::DetermineScaling()
|
||||||
{
|
{
|
||||||
HDC dc = ::GetDC(NULL);
|
HDC dc = ::GetDC(NULL);
|
||||||
int screenWidth = ::GetDeviceCaps(dc, HORZSIZE);
|
int screenWidth = ::GetDeviceCaps(dc, HORZSIZE);
|
||||||
|
Reference in New Issue
Block a user