Added new wxPrintFactory code and made wxPrinter
and wxPrintPreview make use of it. BIG CHANGE. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29817 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,36 +1,17 @@
|
|||||||
#ifndef _WX_PRINT_H_BASE_
|
#ifndef _WX_PRINT_H_BASE_
|
||||||
#define _WX_PRINT_H_BASE_
|
#define _WX_PRINT_H_BASE_
|
||||||
|
|
||||||
#if defined(__WXMSW__) && (!defined(__WXUNIVERSAL__) || !wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW)
|
#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
||||||
#include "wx/msw/printwin.h"
|
|
||||||
|
|
||||||
#ifndef wxPrinter
|
#include "wx/msw/printwin.h"
|
||||||
#define wxPrinter wxWindowsPrinter
|
|
||||||
#endif
|
|
||||||
#ifndef wxPrintPreview
|
|
||||||
#define wxPrintPreview wxWindowsPrintPreview
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#elif defined(__WXMAC__)
|
#elif defined(__WXMAC__)
|
||||||
|
|
||||||
#include "wx/mac/printmac.h"
|
#include "wx/mac/printmac.h"
|
||||||
|
|
||||||
#ifndef wxPrinter
|
|
||||||
#define wxPrinter wxMacPrinter
|
|
||||||
#endif
|
|
||||||
#ifndef wxPrintPreview
|
|
||||||
#define wxPrintPreview wxMacPrintPreview
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include "wx/generic/printps.h"
|
|
||||||
|
|
||||||
#ifndef wxPrinter
|
#include "wx/generic/printps.h"
|
||||||
#define wxPrinter wxPostScriptPrinter
|
|
||||||
#endif
|
|
||||||
#ifndef wxPrintPreview
|
|
||||||
#define wxPrintPreview wxPostScriptPrintPreview
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -37,7 +37,11 @@ class WXDLLEXPORT wxPrintPreviewBase;
|
|||||||
class WXDLLEXPORT wxPreviewCanvas;
|
class WXDLLEXPORT wxPreviewCanvas;
|
||||||
class WXDLLEXPORT wxPreviewControlBar;
|
class WXDLLEXPORT wxPreviewControlBar;
|
||||||
class WXDLLEXPORT wxPreviewFrame;
|
class WXDLLEXPORT wxPreviewFrame;
|
||||||
|
class WXDLLEXPORT wxPrintFactory;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// error consts
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
enum wxPrinterError
|
enum wxPrinterError
|
||||||
{
|
{
|
||||||
@@ -46,6 +50,52 @@ enum wxPrinterError
|
|||||||
wxPRINTER_ERROR
|
wxPRINTER_ERROR
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintFactory
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxPrintFactory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxPrintFactory() {}
|
||||||
|
virtual ~wxPrintFactory() {}
|
||||||
|
|
||||||
|
virtual bool HasPageSetupDialog() = 0;
|
||||||
|
virtual bool HasPrintSetupDialog() = 0;
|
||||||
|
|
||||||
|
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData* data ) = 0;
|
||||||
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
||||||
|
wxPrintout *printout = NULL,
|
||||||
|
wxPrintDialogData *data = NULL ) = 0;
|
||||||
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
||||||
|
wxPrintout *printout,
|
||||||
|
wxPrintData *data ) = 0;
|
||||||
|
|
||||||
|
static void SetPrintFactory( wxPrintFactory *factory );
|
||||||
|
static wxPrintFactory *GetFactory();
|
||||||
|
static wxPrintFactory *m_factory;
|
||||||
|
};
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxNativePrintFactory: public wxPrintFactory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool HasPageSetupDialog()
|
||||||
|
{ return true; }
|
||||||
|
virtual bool HasPrintSetupDialog()
|
||||||
|
{ return true; }
|
||||||
|
|
||||||
|
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
|
||||||
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
||||||
|
wxPrintout *printout = NULL,
|
||||||
|
wxPrintDialogData *data = NULL );
|
||||||
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
||||||
|
wxPrintout *printout,
|
||||||
|
wxPrintData *data );
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrinterBase
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Represents the printer: manages printing a wxPrintout object
|
* Represents the printer: manages printing a wxPrintout object
|
||||||
@@ -88,8 +138,36 @@ private:
|
|||||||
DECLARE_NO_COPY_CLASS(wxPrinterBase)
|
DECLARE_NO_COPY_CLASS(wxPrinterBase)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrinter
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxPrinter: public wxPrinterBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxPrinter(wxPrintDialogData *data = (wxPrintDialogData *) NULL);
|
||||||
|
virtual ~wxPrinter();
|
||||||
|
|
||||||
|
virtual wxWindow *CreateAbortWindow(wxWindow *parent, wxPrintout *printout);
|
||||||
|
virtual void ReportError(wxWindow *parent, wxPrintout *printout, const wxString& message);
|
||||||
|
|
||||||
|
virtual bool Setup(wxWindow *parent);
|
||||||
|
virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = true);
|
||||||
|
virtual wxDC* PrintDialog(wxWindow *parent);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxPrinterBase *m_pimpl;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_CLASS(wxPrinter)
|
||||||
|
DECLARE_NO_COPY_CLASS(wxPrinter)
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintout
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* wxPrintout
|
|
||||||
* Represents an object via which a document may be printed.
|
* Represents an object via which a document may be printed.
|
||||||
* The programmer derives from this, overrides (at least) OnPrintPage,
|
* The programmer derives from this, overrides (at least) OnPrintPage,
|
||||||
* and passes it to a wxPrinter object for printing, or a wxPrintPreview
|
* and passes it to a wxPrinter object for printing, or a wxPrintPreview
|
||||||
@@ -301,15 +379,16 @@ private:
|
|||||||
DECLARE_NO_COPY_CLASS(wxPreviewControlBar)
|
DECLARE_NO_COPY_CLASS(wxPreviewControlBar)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintPreviewBase
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* wxPrintPreview
|
|
||||||
* Programmer creates an object of this class to preview a wxPrintout.
|
* Programmer creates an object of this class to preview a wxPrintout.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class WXDLLEXPORT wxPrintPreviewBase: public wxObject
|
class WXDLLEXPORT wxPrintPreviewBase: public wxObject
|
||||||
{
|
{
|
||||||
DECLARE_CLASS(wxPrintPreviewBase)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxPrintPreviewBase(wxPrintout *printout,
|
wxPrintPreviewBase(wxPrintout *printout,
|
||||||
wxPrintout *printoutForPrinting = (wxPrintout *) NULL,
|
wxPrintout *printoutForPrinting = (wxPrintout *) NULL,
|
||||||
@@ -320,17 +399,17 @@ public:
|
|||||||
virtual ~wxPrintPreviewBase();
|
virtual ~wxPrintPreviewBase();
|
||||||
|
|
||||||
virtual bool SetCurrentPage(int pageNum);
|
virtual bool SetCurrentPage(int pageNum);
|
||||||
int GetCurrentPage() const { return m_currentPage; };
|
virtual int GetCurrentPage() const;
|
||||||
|
|
||||||
void SetPrintout(wxPrintout *printout) { m_previewPrintout = printout; };
|
virtual void SetPrintout(wxPrintout *printout);
|
||||||
wxPrintout *GetPrintout() const { return m_previewPrintout; };
|
virtual wxPrintout *GetPrintout() const;
|
||||||
wxPrintout *GetPrintoutForPrinting() const { return m_printPrintout; };
|
virtual wxPrintout *GetPrintoutForPrinting() const;
|
||||||
|
|
||||||
void SetFrame(wxFrame *frame) { m_previewFrame = frame; };
|
virtual void SetFrame(wxFrame *frame);
|
||||||
void SetCanvas(wxPreviewCanvas *canvas) { m_previewCanvas = canvas; };
|
virtual void SetCanvas(wxPreviewCanvas *canvas);
|
||||||
|
|
||||||
virtual wxFrame *GetFrame() const { return m_previewFrame; }
|
virtual wxFrame *GetFrame() const;
|
||||||
virtual wxPreviewCanvas *GetCanvas() const { return m_previewCanvas; }
|
virtual wxPreviewCanvas *GetCanvas() const;
|
||||||
|
|
||||||
// The preview canvas should call this from OnPaint
|
// The preview canvas should call this from OnPaint
|
||||||
virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc);
|
virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc);
|
||||||
@@ -344,16 +423,17 @@ public:
|
|||||||
// This is called by wxPrintPreview to render a page into a wxMemoryDC.
|
// This is called by wxPrintPreview to render a page into a wxMemoryDC.
|
||||||
virtual bool RenderPage(int pageNum);
|
virtual bool RenderPage(int pageNum);
|
||||||
|
|
||||||
wxPrintDialogData& GetPrintDialogData() { return m_printDialogData; }
|
|
||||||
|
|
||||||
virtual void SetZoom(int percent);
|
virtual void SetZoom(int percent);
|
||||||
int GetZoom() const { return m_currentZoom; };
|
virtual int GetZoom() const;
|
||||||
|
|
||||||
int GetMaxPage() const { return m_maxPage; }
|
virtual wxPrintDialogData& GetPrintDialogData();
|
||||||
int GetMinPage() const { return m_minPage; }
|
|
||||||
|
|
||||||
bool Ok() const { return m_isOk; }
|
virtual int GetMaxPage() const;
|
||||||
void SetOk(bool ok) { m_isOk = ok; }
|
virtual int GetMinPage() const;
|
||||||
|
|
||||||
|
virtual bool Ok() const;
|
||||||
|
virtual void SetOk(bool ok);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// OVERRIDES
|
// OVERRIDES
|
||||||
@@ -392,11 +472,62 @@ private:
|
|||||||
void Init(wxPrintout *printout, wxPrintout *printoutForPrinting);
|
void Init(wxPrintout *printout, wxPrintout *printoutForPrinting);
|
||||||
|
|
||||||
DECLARE_NO_COPY_CLASS(wxPrintPreviewBase)
|
DECLARE_NO_COPY_CLASS(wxPrintPreviewBase)
|
||||||
|
DECLARE_CLASS(wxPrintPreviewBase)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
//----------------------------------------------------------------------------
|
||||||
* Abort dialog
|
// wxPrintPreview
|
||||||
*/
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxPrintPreview: public wxPrintPreviewBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxPrintPreview(wxPrintout *printout,
|
||||||
|
wxPrintout *printoutForPrinting = (wxPrintout *) NULL,
|
||||||
|
wxPrintDialogData *data = (wxPrintDialogData *) NULL);
|
||||||
|
wxPrintPreview(wxPrintout *printout,
|
||||||
|
wxPrintout *printoutForPrinting,
|
||||||
|
wxPrintData *data);
|
||||||
|
virtual ~wxPrintPreview();
|
||||||
|
|
||||||
|
virtual bool SetCurrentPage(int pageNum);
|
||||||
|
virtual int GetCurrentPage() const;
|
||||||
|
virtual void SetPrintout(wxPrintout *printout);
|
||||||
|
virtual wxPrintout *GetPrintout() const;
|
||||||
|
virtual wxPrintout *GetPrintoutForPrinting() const;
|
||||||
|
virtual void SetFrame(wxFrame *frame);
|
||||||
|
virtual void SetCanvas(wxPreviewCanvas *canvas);
|
||||||
|
|
||||||
|
virtual wxFrame *GetFrame() const;
|
||||||
|
virtual wxPreviewCanvas *GetCanvas() const;
|
||||||
|
virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc);
|
||||||
|
virtual bool DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc);
|
||||||
|
virtual void AdjustScrollbars(wxPreviewCanvas *canvas);
|
||||||
|
virtual bool RenderPage(int pageNum);
|
||||||
|
virtual void SetZoom(int percent);
|
||||||
|
|
||||||
|
virtual bool Print(bool interactive);
|
||||||
|
virtual void DetermineScaling();
|
||||||
|
|
||||||
|
virtual wxPrintDialogData& GetPrintDialogData();
|
||||||
|
|
||||||
|
virtual int GetMaxPage() const;
|
||||||
|
virtual int GetMinPage() const;
|
||||||
|
|
||||||
|
virtual bool Ok() const;
|
||||||
|
virtual void SetOk(bool ok);
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPrintPreviewBase *m_pimpl;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_CLASS(wxPrintPreview)
|
||||||
|
DECLARE_NO_COPY_CLASS(wxPrintPreview)
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintAbortDialog
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxPrintAbortDialog: public wxDialog
|
class WXDLLEXPORT wxPrintAbortDialog: public wxDialog
|
||||||
{
|
{
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
#include "wx/prntbase.h"
|
#include "wx/prntbase.h"
|
||||||
#include "wx/dcprint.h"
|
#include "wx/dcprint.h"
|
||||||
#include "wx/printdlg.h"
|
#include "wx/printdlg.h"
|
||||||
|
#include "wx/print.h"
|
||||||
#include "wx/module.h"
|
#include "wx/module.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -57,26 +58,74 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif // __WXMSW__
|
#endif // __WXMSW__
|
||||||
|
|
||||||
IMPLEMENT_CLASS(wxPrinterBase, wxObject)
|
|
||||||
IMPLEMENT_ABSTRACT_CLASS(wxPrintout, wxObject)
|
|
||||||
IMPLEMENT_CLASS(wxPreviewCanvas, wxWindow)
|
|
||||||
IMPLEMENT_CLASS(wxPreviewControlBar, wxWindow)
|
|
||||||
IMPLEMENT_CLASS(wxPreviewFrame, wxFrame)
|
|
||||||
IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject)
|
IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject)
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog)
|
//----------------------------------------------------------------------------
|
||||||
EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel)
|
// wxPrintFactory
|
||||||
END_EVENT_TABLE()
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxPreviewCanvas, wxScrolledWindow)
|
wxPrintFactory *wxPrintFactory::m_factory = NULL;
|
||||||
EVT_PAINT(wxPreviewCanvas::OnPaint)
|
|
||||||
EVT_CHAR(wxPreviewCanvas::OnChar)
|
|
||||||
EVT_SYS_COLOUR_CHANGED(wxPreviewCanvas::OnSysColourChanged)
|
|
||||||
END_EVENT_TABLE()
|
|
||||||
|
|
||||||
/*
|
void wxPrintFactory::SetPrintFactory( wxPrintFactory *factory )
|
||||||
* Printer
|
{
|
||||||
*/
|
if (wxPrintFactory::m_factory)
|
||||||
|
delete wxPrintFactory::m_factory;
|
||||||
|
|
||||||
|
wxPrintFactory::m_factory = factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintFactory *wxPrintFactory::GetFactory()
|
||||||
|
{
|
||||||
|
if (!wxPrintFactory::m_factory)
|
||||||
|
wxPrintFactory::m_factory = new wxNativePrintFactory;
|
||||||
|
|
||||||
|
return wxPrintFactory::m_factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxNativePrintFactory
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
wxPrinterBase *wxNativePrintFactory::CreatePrinter( wxPrintDialogData *data )
|
||||||
|
{
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
return new wxWindowsPrinter( data );
|
||||||
|
#elif defined(__WXMAC__)
|
||||||
|
return new wxMacPrinter( data );
|
||||||
|
#else
|
||||||
|
return new wxPostScriptPrinter( data );
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
|
||||||
|
wxPrintout *printout, wxPrintDialogData *data )
|
||||||
|
{
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
return new wxWindowsPrintPreview( preview, printout, data );
|
||||||
|
#elif defined(__WXMAC__)
|
||||||
|
return new wxMacPrintPreview( preview, printout, data );
|
||||||
|
#else
|
||||||
|
return new wxPostScriptPrintPreview( preview, printout, data );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
|
||||||
|
wxPrintout *printout, wxPrintData *data )
|
||||||
|
{
|
||||||
|
#if defined(__WXMSW__)
|
||||||
|
return new wxWindowsPrintPreview( preview, printout, data );
|
||||||
|
#elif defined(__WXMAC__)
|
||||||
|
return new wxMacPrintPreview( preview, printout, data );
|
||||||
|
#else
|
||||||
|
return new wxPostScriptPrintPreview( preview, printout, data );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrinterBase
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxPrinterBase, wxObject)
|
||||||
|
|
||||||
wxPrinterBase::wxPrinterBase(wxPrintDialogData *data)
|
wxPrinterBase::wxPrinterBase(wxPrintDialogData *data)
|
||||||
{
|
{
|
||||||
@@ -96,14 +145,6 @@ wxPrinterBase::~wxPrinterBase()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxPrintAbortDialog::OnCancel(wxCommandEvent& WXUNUSED(event))
|
|
||||||
{
|
|
||||||
wxPrinterBase::sm_abortIt = true;
|
|
||||||
wxPrinterBase::sm_abortWindow->Show(false);
|
|
||||||
wxPrinterBase::sm_abortWindow->Close(true);
|
|
||||||
wxPrinterBase::sm_abortWindow = (wxWindow *) NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxWindow *wxPrinterBase::CreateAbortWindow(wxWindow *parent, wxPrintout * printout)
|
wxWindow *wxPrinterBase::CreateAbortWindow(wxWindow *parent, wxPrintout * printout)
|
||||||
{
|
{
|
||||||
wxPrintAbortDialog *dialog = new wxPrintAbortDialog(parent, _("Printing ") , wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE);
|
wxPrintAbortDialog *dialog = new wxPrintAbortDialog(parent, _("Printing ") , wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE);
|
||||||
@@ -126,9 +167,68 @@ void wxPrinterBase::ReportError(wxWindow *parent, wxPrintout *WXUNUSED(printout)
|
|||||||
wxMessageBox(message, _("Printing Error"), wxOK, parent);
|
wxMessageBox(message, _("Printing Error"), wxOK, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
//----------------------------------------------------------------------------
|
||||||
* Printout class
|
// wxPrinter
|
||||||
*/
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxPrinter, wxPrinterBase)
|
||||||
|
|
||||||
|
wxPrinter::wxPrinter(wxPrintDialogData *data)
|
||||||
|
{
|
||||||
|
m_pimpl = wxPrintFactory::GetFactory()->CreatePrinter( data );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrinter::~wxPrinter()
|
||||||
|
{
|
||||||
|
delete m_pimpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxWindow *wxPrinter::CreateAbortWindow(wxWindow *parent, wxPrintout *printout)
|
||||||
|
{
|
||||||
|
return m_pimpl->CreateAbortWindow( parent, printout );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrinter::ReportError(wxWindow *parent, wxPrintout *printout, const wxString& message)
|
||||||
|
{
|
||||||
|
m_pimpl->ReportError( parent, printout, message );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrinter::Setup(wxWindow *parent)
|
||||||
|
{
|
||||||
|
return m_pimpl->Setup( parent );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
||||||
|
{
|
||||||
|
return m_pimpl->Print( parent, printout, prompt );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxDC* wxPrinter::PrintDialog(wxWindow *parent)
|
||||||
|
{
|
||||||
|
return m_pimpl->PrintDialog( parent );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintAbortDialog
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog)
|
||||||
|
EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
void wxPrintAbortDialog::OnCancel(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxPrinterBase::sm_abortIt = true;
|
||||||
|
wxPrinterBase::sm_abortWindow->Show(false);
|
||||||
|
wxPrinterBase::sm_abortWindow->Close(true);
|
||||||
|
wxPrinterBase::sm_abortWindow = (wxWindow *) NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintout
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_ABSTRACT_CLASS(wxPrintout, wxObject)
|
||||||
|
|
||||||
wxPrintout::wxPrintout(const wxString& title)
|
wxPrintout::wxPrintout(const wxString& title)
|
||||||
{
|
{
|
||||||
@@ -180,9 +280,17 @@ void wxPrintout::GetPageInfo(int *minPage, int *maxPage, int *fromPage, int *toP
|
|||||||
*toPage = 1;
|
*toPage = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
//----------------------------------------------------------------------------
|
||||||
* Preview canvas
|
// wxPreviewCanvas
|
||||||
*/
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxPreviewCanvas, wxWindow)
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(wxPreviewCanvas, wxScrolledWindow)
|
||||||
|
EVT_PAINT(wxPreviewCanvas::OnPaint)
|
||||||
|
EVT_CHAR(wxPreviewCanvas::OnChar)
|
||||||
|
EVT_SYS_COLOUR_CHANGED(wxPreviewCanvas::OnSysColourChanged)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
// VZ: the current code doesn't refresh properly without
|
// VZ: the current code doesn't refresh properly without
|
||||||
// wxFULL_REPAINT_ON_RESIZE, this must be fixed as otherwise we have
|
// wxFULL_REPAINT_ON_RESIZE, this must be fixed as otherwise we have
|
||||||
@@ -284,9 +392,11 @@ void wxPreviewCanvas::OnChar(wxKeyEvent &event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
//----------------------------------------------------------------------------
|
||||||
* Preview control bar
|
// wxPreviewControlBar
|
||||||
*/
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxPreviewControlBar, wxWindow)
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel)
|
BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel)
|
||||||
EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnWindowClose)
|
EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnWindowClose)
|
||||||
@@ -533,6 +643,8 @@ int wxPreviewControlBar::GetZoomControl()
|
|||||||
* Preview frame
|
* Preview frame
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxPreviewFrame, wxFrame)
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxPreviewFrame, wxFrame)
|
BEGIN_EVENT_TABLE(wxPreviewFrame, wxFrame)
|
||||||
EVT_CLOSE(wxPreviewFrame::OnCloseWindow)
|
EVT_CLOSE(wxPreviewFrame::OnCloseWindow)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
@@ -702,6 +814,23 @@ bool wxPrintPreviewBase::SetCurrentPage(int pageNum)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wxPrintPreviewBase::GetCurrentPage() const
|
||||||
|
{ return m_currentPage; };
|
||||||
|
void wxPrintPreviewBase::SetPrintout(wxPrintout *printout)
|
||||||
|
{ m_previewPrintout = printout; };
|
||||||
|
wxPrintout *wxPrintPreviewBase::GetPrintout() const
|
||||||
|
{ return m_previewPrintout; };
|
||||||
|
wxPrintout *wxPrintPreviewBase::GetPrintoutForPrinting() const
|
||||||
|
{ return m_printPrintout; };
|
||||||
|
void wxPrintPreviewBase::SetFrame(wxFrame *frame)
|
||||||
|
{ m_previewFrame = frame; };
|
||||||
|
void wxPrintPreviewBase::SetCanvas(wxPreviewCanvas *canvas)
|
||||||
|
{ m_previewCanvas = canvas; };
|
||||||
|
wxFrame *wxPrintPreviewBase::GetFrame() const
|
||||||
|
{ return m_previewFrame; }
|
||||||
|
wxPreviewCanvas *wxPrintPreviewBase::GetCanvas() const
|
||||||
|
{ return m_previewCanvas; }
|
||||||
|
|
||||||
bool wxPrintPreviewBase::PaintPage(wxPreviewCanvas *canvas, wxDC& dc)
|
bool wxPrintPreviewBase::PaintPage(wxPreviewCanvas *canvas, wxDC& dc)
|
||||||
{
|
{
|
||||||
DrawBlankPage(canvas, dc);
|
DrawBlankPage(canvas, dc);
|
||||||
@@ -909,4 +1038,159 @@ void wxPrintPreviewBase::SetZoom(int percent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxPrintDialogData& wxPrintPreviewBase::GetPrintDialogData()
|
||||||
|
{
|
||||||
|
return m_printDialogData;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxPrintPreviewBase::GetZoom() const
|
||||||
|
{ return m_currentZoom; }
|
||||||
|
int wxPrintPreviewBase::GetMaxPage() const
|
||||||
|
{ return m_maxPage; }
|
||||||
|
int wxPrintPreviewBase::GetMinPage() const
|
||||||
|
{ return m_minPage; }
|
||||||
|
bool wxPrintPreviewBase::Ok() const
|
||||||
|
{ return m_isOk; }
|
||||||
|
void wxPrintPreviewBase::SetOk(bool ok)
|
||||||
|
{ m_isOk = ok; }
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxPrintPreview
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxPrintPreview, wxPrintPreviewBase)
|
||||||
|
|
||||||
|
wxPrintPreview::wxPrintPreview(wxPrintout *printout,
|
||||||
|
wxPrintout *printoutForPrinting,
|
||||||
|
wxPrintDialogData *data) :
|
||||||
|
wxPrintPreviewBase( printout, printoutForPrinting, data )
|
||||||
|
{
|
||||||
|
m_pimpl = wxPrintFactory::GetFactory()->
|
||||||
|
CreatePrintPreview( printout, printoutForPrinting, data );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintPreview::wxPrintPreview(wxPrintout *printout,
|
||||||
|
wxPrintout *printoutForPrinting,
|
||||||
|
wxPrintData *data ) :
|
||||||
|
wxPrintPreviewBase( printout, printoutForPrinting, data )
|
||||||
|
{
|
||||||
|
m_pimpl = wxPrintFactory::GetFactory()->
|
||||||
|
CreatePrintPreview( printout, printoutForPrinting, data );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintPreview::~wxPrintPreview()
|
||||||
|
{
|
||||||
|
delete m_pimpl;
|
||||||
|
|
||||||
|
// don't delete twice
|
||||||
|
m_printPrintout = NULL;
|
||||||
|
m_previewPrintout = NULL;
|
||||||
|
m_previewBitmap = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrintPreview::SetCurrentPage(int pageNum)
|
||||||
|
{
|
||||||
|
return m_pimpl->SetCurrentPage( pageNum );
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxPrintPreview::GetCurrentPage() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetCurrentPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::SetPrintout(wxPrintout *printout)
|
||||||
|
{
|
||||||
|
m_pimpl->SetPrintout( printout );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintout *wxPrintPreview::GetPrintout() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetPrintout();
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintout *wxPrintPreview::GetPrintoutForPrinting() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetPrintoutForPrinting();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::SetFrame(wxFrame *frame)
|
||||||
|
{
|
||||||
|
m_pimpl->SetFrame( frame );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::SetCanvas(wxPreviewCanvas *canvas)
|
||||||
|
{
|
||||||
|
m_pimpl->SetCanvas( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFrame *wxPrintPreview::GetFrame() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPreviewCanvas *wxPrintPreview::GetCanvas() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetCanvas();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrintPreview::PaintPage(wxPreviewCanvas *canvas, wxDC& dc)
|
||||||
|
{
|
||||||
|
return m_pimpl->PaintPage( canvas, dc );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrintPreview::DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc)
|
||||||
|
{
|
||||||
|
return m_pimpl->DrawBlankPage( canvas, dc );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::AdjustScrollbars(wxPreviewCanvas *canvas)
|
||||||
|
{
|
||||||
|
m_pimpl->AdjustScrollbars( canvas );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrintPreview::RenderPage(int pageNum)
|
||||||
|
{
|
||||||
|
return m_pimpl->RenderPage( pageNum );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::SetZoom(int percent)
|
||||||
|
{
|
||||||
|
m_pimpl->SetZoom( percent );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintDialogData& wxPrintPreview::GetPrintDialogData()
|
||||||
|
{
|
||||||
|
return m_pimpl->GetPrintDialogData();
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxPrintPreview::GetMaxPage() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetMaxPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxPrintPreview::GetMinPage() const
|
||||||
|
{
|
||||||
|
return m_pimpl->GetMinPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrintPreview::Ok() const
|
||||||
|
{
|
||||||
|
return m_pimpl->Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::SetOk(bool ok)
|
||||||
|
{
|
||||||
|
m_pimpl->SetOk( ok );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxPrintPreview::Print(bool interactive)
|
||||||
|
{
|
||||||
|
return m_pimpl->Print( interactive );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxPrintPreview::DetermineScaling()
|
||||||
|
{
|
||||||
|
m_pimpl->DetermineScaling();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // wxUSE_PRINTING_ARCHITECTURE
|
#endif // wxUSE_PRINTING_ARCHITECTURE
|
||||||
|
Reference in New Issue
Block a user