X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/21708c73313af6d66a2c35b86073d223496f53fa..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/common/prntbase.cpp?ds=sidebyside diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 590624296f..b3f2e48a3d 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -50,17 +50,22 @@ #include #include -#ifdef __WXMSW__ - #include "wx/msw/private.h" - #include +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) +#include "wx/msw/printdlg.h" +#elif defined(__WXMAC__) +#include "wx/mac/printdlg.h" +#include "wx/mac/private/print.h" +#else +#include "wx/generic/prntdlgg.h" +#endif +#ifdef __WXMSW__ + #include "wx/msw/wrapcdlg.h" #ifndef __WIN32__ #include #endif #endif // __WXMSW__ -IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject) - //---------------------------------------------------------------------------- // wxPrintFactory //---------------------------------------------------------------------------- @@ -128,7 +133,7 @@ wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *previe #endif } -wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent, +wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent, wxPrintDialogData *data ) { #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) @@ -140,7 +145,7 @@ wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent, #endif } -wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent, +wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent, wxPrintData *data ) { #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) @@ -152,12 +157,97 @@ wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent, #endif } +wxPageSetupDialogBase *wxNativePrintFactory::CreatePageSetupDialog( wxWindow *parent, + wxPageSetupDialogData *data ) +{ +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) + return new wxWindowsPageSetupDialog( parent, data ); +#elif defined(__WXMAC__) + return new wxMacPageSetupDialog( parent, data ); +#else + return new wxGenericPageSetupDialog( parent, data ); +#endif +} + +bool wxNativePrintFactory::HasPrintSetupDialog() +{ +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) + return false; +#elif defined(__WXMAC__) + return false; +#else + // Only here do we need to provide the print setup + // dialog ourselves, the other platforms either have + // none, don't make it accessible or let you configure + // the printer from the wxPrintDialog anyway. + return true; +#endif + +} + +wxDialog *wxNativePrintFactory::CreatePrintSetupDialog( wxWindow *parent, + wxPrintData *data ) +{ +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) + wxUnusedVar(parent); + wxUnusedVar(data); + return NULL; +#elif defined(__WXMAC__) + wxUnusedVar(parent); + wxUnusedVar(data); + return NULL; +#else + // Only here do we need to provide the print setup + // dialog ourselves, the other platforms either have + // none, don't make it accessible or let you configure + // the printer from the wxPrintDialog anyway. + return new wxGenericPrintSetupDialog( parent, data ); +#endif +} + +bool wxNativePrintFactory::HasOwnPrintToFile() +{ + // Only relevant for PostScript and here the + // setup dialog provides no "print to file" + // option. In the GNOME setup dialog, the + // setup dialog has its own print to file. + return false; +} + +bool wxNativePrintFactory::HasPrinterLine() +{ + // Only relevant for PostScript for now + return true; +} + +wxString wxNativePrintFactory::CreatePrinterLine() +{ + // Only relevant for PostScript for now + + // We should query "lpstat -d" here + return _("Generic PostScript"); +} + +bool wxNativePrintFactory::HasStatusLine() +{ + // Only relevant for PostScript for now + return true; +} + +wxString wxNativePrintFactory::CreateStatusLine() +{ + // Only relevant for PostScript for now + + // We should query "lpstat -r" or "lpstat -p" here + return _("Ready"); +} + wxPrintNativeDataBase *wxNativePrintFactory::CreatePrintNativeData() { #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) return new wxWindowsPrintNativeData; #elif defined(__WXMAC__) - return new wxMacPrintNativeData; + return new wxMacCarbonPrintData; #else return new wxPostScriptPrintNativeData; #endif @@ -170,10 +260,27 @@ wxPrintNativeDataBase *wxNativePrintFactory::CreatePrintNativeData() IMPLEMENT_ABSTRACT_CLASS(wxPrintNativeDataBase, wxObject) wxPrintNativeDataBase::wxPrintNativeDataBase() -{ - m_ref = 1; +{ + m_ref = 1; } +//---------------------------------------------------------------------------- +// wxPrintFactoryModule +//---------------------------------------------------------------------------- + +class wxPrintFactoryModule: public wxModule +{ +public: + wxPrintFactoryModule() {} + bool OnInit() { return true; } + void OnExit() { wxPrintFactory::SetPrintFactory( NULL ); } + +private: + DECLARE_DYNAMIC_CLASS(wxPrintFactoryModule) +}; + +IMPLEMENT_DYNAMIC_CLASS(wxPrintFactoryModule, wxModule) + //---------------------------------------------------------------------------- // wxPrinterBase //---------------------------------------------------------------------------- @@ -272,19 +379,24 @@ wxPrintDialogData& wxPrinter::GetPrintDialogData() const } // --------------------------------------------------------------------------- -// wxPrintDialogBase: the common dialog for printing. +// wxPrintDialogBase: the dialog for printing. // --------------------------------------------------------------------------- -IMPLEMENT_ABSTRACT_CLASS(wxPrintDialogBase, wxObject) +IMPLEMENT_ABSTRACT_CLASS(wxPrintDialogBase, wxDialog) -wxPrintDialogBase::wxPrintDialogBase(wxWindow *parent, wxWindowID id, - const wxString &title, const wxPoint &pos, const wxSize &size, long style ) : - wxDialog( parent, id, title, pos, size, style ) +wxPrintDialogBase::wxPrintDialogBase(wxWindow *parent, + wxWindowID id, + const wxString &title, + const wxPoint &pos, + const wxSize &size, + long style) + : wxDialog( parent, id, title.empty() ? wxString(_("Print")) : title, + pos, size, style ) { } // --------------------------------------------------------------------------- -// wxPrintDialog: the common dialog for printing. +// wxPrintDialog: the dialog for printing // --------------------------------------------------------------------------- IMPLEMENT_CLASS(wxPrintDialog, wxObject) @@ -318,11 +430,61 @@ wxPrintData& wxPrintDialog::GetPrintData() { return m_pimpl->GetPrintData(); } + wxDC *wxPrintDialog::GetPrintDC() { return m_pimpl->GetPrintDC(); } +// --------------------------------------------------------------------------- +// wxPageSetupDialogBase: the page setup dialog +// --------------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxPageSetupDialogBase, wxDialog) + +wxPageSetupDialogBase::wxPageSetupDialogBase(wxWindow *parent, + wxWindowID id, + const wxString &title, + const wxPoint &pos, + const wxSize &size, + long style) + : wxDialog( parent, id, title.empty() ? wxString(_("Page setup")) : title, + pos, size, style ) +{ +} + +// --------------------------------------------------------------------------- +// wxPageSetupDialog: the page setup dialog +// --------------------------------------------------------------------------- + +IMPLEMENT_CLASS(wxPageSetupDialog, wxObject) + +wxPageSetupDialog::wxPageSetupDialog(wxWindow *parent, wxPageSetupDialogData *data ) +{ + m_pimpl = wxPrintFactory::GetFactory()->CreatePageSetupDialog( parent, data ); +} + +wxPageSetupDialog::~wxPageSetupDialog() +{ + delete m_pimpl; +} + +int wxPageSetupDialog::ShowModal() +{ + return m_pimpl->ShowModal(); +} + +wxPageSetupDialogData& wxPageSetupDialog::GetPageSetupDialogData() +{ + return m_pimpl->GetPageSetupDialogData(); +} + +// old name +wxPageSetupDialogData& wxPageSetupDialog::GetPageSetupData() +{ + return m_pimpl->GetPageSetupDialogData(); +} + //---------------------------------------------------------------------------- // wxPrintAbortDialog //---------------------------------------------------------------------------- @@ -843,7 +1005,7 @@ void wxPreviewFrame::CreateControlBar() if (m_printPreview->GetPrintoutForPrinting()) buttons |= wxPREVIEW_PRINT; - m_controlBar = new wxPreviewControlBar(m_printPreview, buttons, this, wxPoint(0, 0), wxSize(400, 40)); + m_controlBar = new wxPreviewControlBar(m_printPreview, buttons, this, wxPoint(0,0), wxSize(400, 40)); m_controlBar->CreateButtons(); } @@ -851,6 +1013,8 @@ void wxPreviewFrame::CreateControlBar() * Print preview */ +IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject) + wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data)