X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d2b354f9c9f1473b2d6ff0ab643ebf57dcbfb656..d11e8786ed13b72766eea18cb577cc00f9f08f41:/include/wx/prntbase.h diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index 42e04bf85f..3307ba26af 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -12,7 +12,7 @@ #ifndef _WX_PRNTBASEH__ #define _WX_PRNTBASEH__ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "prntbase.h" #endif @@ -32,12 +32,20 @@ class WXDLLEXPORT wxButton; class WXDLLEXPORT wxChoice; class WXDLLEXPORT wxPrintout; class WXDLLEXPORT wxPrinterBase; +class WXDLLEXPORT wxPrintDialogBase; class WXDLLEXPORT wxPrintDialog; +class WXDLLEXPORT wxPageSetupDialogBase; +class WXDLLEXPORT wxPageSetupDialog; class WXDLLEXPORT wxPrintPreviewBase; class WXDLLEXPORT wxPreviewCanvas; class WXDLLEXPORT wxPreviewControlBar; class WXDLLEXPORT wxPreviewFrame; +class WXDLLEXPORT wxPrintFactory; +class WXDLLEXPORT wxPrintNativeDataBase; +//---------------------------------------------------------------------------- +// error consts +//---------------------------------------------------------------------------- enum wxPrinterError { @@ -46,6 +54,110 @@ enum wxPrinterError wxPRINTER_ERROR }; +//---------------------------------------------------------------------------- +// wxPrintFactory +//---------------------------------------------------------------------------- + +class WXDLLEXPORT wxPrintFactory +{ +public: + wxPrintFactory() {} + virtual ~wxPrintFactory() {} + + 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; + + virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent, + wxPrintDialogData *data = NULL ) = 0; + virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent, + wxPrintData *data ) = 0; + + virtual wxPageSetupDialogBase *CreatePageSetupDialog( wxWindow *parent, + wxPageSetupDialogData * data = NULL ) = 0; + + // What to do and what to show in the wxPrintDialog + // a) Use the generic print setup dialog or a native one? + virtual bool HasPrintSetupDialog() = 0; + virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data ) = 0; + // b) Provide the "print to file" option ourselves or via print setup? + virtual bool HasOwnPrintToFile() = 0; + // c) Show current printer + virtual bool HasPrinterLine() = 0; + virtual wxString CreatePrinterLine() = 0; + // d) Show Status line for current printer? + virtual bool HasStatusLine() = 0; + virtual wxString CreateStatusLine() = 0; + + + virtual wxPrintNativeDataBase *CreatePrintNativeData() = 0; + + static void SetPrintFactory( wxPrintFactory *factory ); + static wxPrintFactory *GetFactory(); + static wxPrintFactory *m_factory; +}; + +class WXDLLEXPORT wxNativePrintFactory: public wxPrintFactory +{ +public: + 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 ); + + virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent, + wxPrintDialogData *data = NULL ); + virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent, + wxPrintData *data ); + + virtual wxPageSetupDialogBase *CreatePageSetupDialog( wxWindow *parent, + wxPageSetupDialogData * data = NULL ); + + virtual bool HasPrintSetupDialog(); + virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data ); + virtual bool HasOwnPrintToFile(); + virtual bool HasPrinterLine(); + virtual wxString CreatePrinterLine(); + virtual bool HasStatusLine(); + virtual wxString CreateStatusLine(); + + virtual wxPrintNativeDataBase *CreatePrintNativeData(); +}; + +//---------------------------------------------------------------------------- +// wxPrintNativeDataBase +//---------------------------------------------------------------------------- + +class WXDLLEXPORT wxPrintNativeDataBase: public wxObject +{ +public: + wxPrintNativeDataBase(); + virtual ~wxPrintNativeDataBase() {} + + virtual bool TransferTo( wxPrintData &data ) = 0; + virtual bool TransferFrom( const wxPrintData &data ) = 0; + + virtual bool Ok() const = 0; + + int m_ref; + +private: + DECLARE_CLASS(wxPrintNativeDataBase) + DECLARE_NO_COPY_CLASS(wxPrintNativeDataBase) +}; + +//---------------------------------------------------------------------------- +// wxPrinterBase +//---------------------------------------------------------------------------- /* * Represents the printer: manages printing a wxPrintout object @@ -60,25 +172,24 @@ public: virtual wxWindow *CreateAbortWindow(wxWindow *parent, wxPrintout *printout); virtual void ReportError(wxWindow *parent, wxPrintout *printout, const wxString& message); - wxPrintDialogData& GetPrintDialogData() const - { return (wxPrintDialogData&) m_printDialogData; } + virtual wxPrintDialogData& GetPrintDialogData() const; bool GetAbort() const { return sm_abortIt; } - + static wxPrinterError GetLastError() { return sm_lastError; } /////////////////////////////////////////////////////////////////////////// // OVERRIDES virtual bool Setup(wxWindow *parent) = 0; - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE) = 0; + virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = true) = 0; virtual wxDC* PrintDialog(wxWindow *parent) = 0; protected: wxPrintDialogData m_printDialogData; wxPrintout* m_currentPrintout; - + static wxPrinterError sm_lastError; - + public: static wxWindow* sm_abortWindow; static bool sm_abortIt; @@ -88,8 +199,38 @@ private: 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); + + virtual wxPrintDialogData& GetPrintDialogData() const; + +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. * The programmer derives from this, overrides (at least) OnPrintPage, * and passes it to a wxPrinter object for printing, or a wxPrintPreview @@ -212,6 +353,7 @@ protected: wxPreviewCanvas* m_previewCanvas; wxPreviewControlBar* m_controlBar; wxPrintPreviewBase* m_printPreview; + wxWindowDisabler* m_windowDisabler; private: DECLARE_CLASS(wxPreviewFrame) @@ -267,13 +409,14 @@ public: virtual wxPrintPreviewBase *GetPrintPreview() const { return m_printPreview; } - void OnPrint(wxCommandEvent& event); void OnWindowClose(wxCommandEvent& event); void OnNext(); void OnPrevious(); void OnFirst(); void OnLast(); void OnGoto(); + void OnPrint(); + void OnPrintButton(wxCommandEvent& WXUNUSED(event)) { OnPrint(); } void OnNextButton(wxCommandEvent & WXUNUSED(event)) { OnNext(); } void OnPreviousButton(wxCommandEvent & WXUNUSED(event)) { OnPrevious(); } void OnFirstButton(wxCommandEvent & WXUNUSED(event)) { OnFirst(); } @@ -299,15 +442,16 @@ private: DECLARE_NO_COPY_CLASS(wxPreviewControlBar) }; +//---------------------------------------------------------------------------- +// wxPrintPreviewBase +//---------------------------------------------------------------------------- + /* - * wxPrintPreview * Programmer creates an object of this class to preview a wxPrintout. */ class WXDLLEXPORT wxPrintPreviewBase: public wxObject { - DECLARE_CLASS(wxPrintPreviewBase) - public: wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting = (wxPrintout *) NULL, @@ -318,17 +462,17 @@ public: virtual ~wxPrintPreviewBase(); virtual bool SetCurrentPage(int pageNum); - int GetCurrentPage() const { return m_currentPage; }; + virtual int GetCurrentPage() const; - void SetPrintout(wxPrintout *printout) { m_previewPrintout = printout; }; - wxPrintout *GetPrintout() const { return m_previewPrintout; }; - wxPrintout *GetPrintoutForPrinting() const { return m_printPrintout; }; + virtual void SetPrintout(wxPrintout *printout); + virtual wxPrintout *GetPrintout() const; + virtual wxPrintout *GetPrintoutForPrinting() const; - void SetFrame(wxFrame *frame) { m_previewFrame = frame; }; - void SetCanvas(wxPreviewCanvas *canvas) { m_previewCanvas = canvas; }; + virtual void SetFrame(wxFrame *frame); + virtual void SetCanvas(wxPreviewCanvas *canvas); - virtual wxFrame *GetFrame() const { return m_previewFrame; } - virtual wxPreviewCanvas *GetCanvas() const { return m_previewCanvas; } + virtual wxFrame *GetFrame() const; + virtual wxPreviewCanvas *GetCanvas() const; // The preview canvas should call this from OnPaint virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc); @@ -342,16 +486,17 @@ public: // This is called by wxPrintPreview to render a page into a wxMemoryDC. virtual bool RenderPage(int pageNum); - wxPrintDialogData& GetPrintDialogData() { return m_printDialogData; } virtual void SetZoom(int percent); - int GetZoom() const { return m_currentZoom; }; + virtual int GetZoom() const; - int GetMaxPage() const { return m_maxPage; } - int GetMinPage() const { return m_minPage; } + virtual wxPrintDialogData& GetPrintDialogData(); + + virtual int GetMaxPage() const; + virtual int GetMinPage() const; - bool Ok() const { return m_isOk; } - void SetOk(bool ok) { m_isOk = ok; } + virtual bool Ok() const; + virtual void SetOk(bool ok); /////////////////////////////////////////////////////////////////////////// // OVERRIDES @@ -390,11 +535,62 @@ private: void Init(wxPrintout *printout, wxPrintout *printoutForPrinting); 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 { @@ -405,7 +601,7 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxT("dialog")) - : wxDialog(parent, -1, title, pos, size, style, name) + : wxDialog(parent, wxID_ANY, title, pos, size, style, name) { }