X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6038ec8eafaf9bab7adf9af4fcc7a5af61bee00a..34af0de434db039e927805e3dd13fee74979c4e9:/src/common/prntbase.cpp diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index e1f655959f..0f2e078466 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: prntbase.cpp +// Name: src/common/prntbase.cpp // Purpose: Printing framework base class implementation // Author: Julian Smart // Modified by: @@ -9,11 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "prntbase.h" - #pragma implementation "printdlg.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -50,17 +45,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 //---------------------------------------------------------------------------- @@ -98,7 +98,7 @@ wxPrinterBase *wxNativePrintFactory::CreatePrinter( wxPrintDialogData *data ) #else return new wxPostScriptPrinter( data ); #endif -}; +} wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview, wxPrintout *printout, wxPrintDialogData *data ) @@ -128,7 +128,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 +140,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,6 +152,18 @@ 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__) @@ -165,14 +177,19 @@ bool wxNativePrintFactory::HasPrintSetupDialog() // the printer from the wxPrintDialog anyway. return true; #endif - + } -wxDialog *wxNativePrintFactory::CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data ) +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 @@ -186,7 +203,7 @@ wxDialog *wxNativePrintFactory::CreatePrintSetupDialog( wxWindow *parent, wxPrin bool wxNativePrintFactory::HasOwnPrintToFile() { // Only relevant for PostScript and here the - // setup dialog provides no "print to file" + // setup dialog provides no "print to file" // option. In the GNOME setup dialog, the // setup dialog has its own print to file. return false; @@ -201,7 +218,7 @@ bool wxNativePrintFactory::HasPrinterLine() wxString wxNativePrintFactory::CreatePrinterLine() { // Only relevant for PostScript for now - + // We should query "lpstat -d" here return _("Generic PostScript"); } @@ -209,13 +226,13 @@ wxString wxNativePrintFactory::CreatePrinterLine() bool wxNativePrintFactory::HasStatusLine() { // Only relevant for PostScript for now - return true; + return true; } wxString wxNativePrintFactory::CreateStatusLine() { // Only relevant for PostScript for now - + // We should query "lpstat -r" or "lpstat -p" here return _("Ready"); } @@ -225,7 +242,7 @@ 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 @@ -238,10 +255,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 //---------------------------------------------------------------------------- @@ -340,31 +374,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, + wxWindowID id, const wxString &title, const wxPoint &pos, const wxSize &size, long style) - : wxDialog - ( - parent, - id, - title.empty() ? wxString(_("Print")) : title, - pos, - size, - 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) @@ -398,11 +425,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 //---------------------------------------------------------------------------- @@ -485,6 +562,9 @@ BEGIN_EVENT_TABLE(wxPreviewCanvas, wxScrolledWindow) EVT_PAINT(wxPreviewCanvas::OnPaint) EVT_CHAR(wxPreviewCanvas::OnChar) EVT_SYS_COLOUR_CHANGED(wxPreviewCanvas::OnSysColourChanged) +#if wxUSE_MOUSEWHEEL + EVT_MOUSEWHEEL(wxPreviewCanvas::OnMouseWheel) +#endif END_EVENT_TABLE() // VZ: the current code doesn't refresh properly without @@ -587,6 +667,50 @@ void wxPreviewCanvas::OnChar(wxKeyEvent &event) } } +#if wxUSE_MOUSEWHEEL + +void wxPreviewCanvas::OnMouseWheel(wxMouseEvent& event) +{ + wxPreviewControlBar * + controlBar = wxStaticCast(GetParent(), wxPreviewFrame)->GetControlBar(); + + if ( controlBar ) + { + if ( event.ControlDown() && event.GetWheelRotation() != 0 ) + { + int currentZoom = controlBar->GetZoomControl(); + + int delta; + if ( currentZoom < 100 ) + delta = 5; + else if ( currentZoom <= 120 ) + delta = 10; + else + delta = 50; + + if ( event.GetWheelRotation() > 0 ) + delta = -delta; + + int newZoom = currentZoom + delta; + if ( newZoom < 10 ) + newZoom = 10; + if ( newZoom > 200 ) + newZoom = 200; + if ( newZoom != currentZoom ) + { + controlBar->SetZoomControl(newZoom); + m_printPreview->SetZoom(newZoom); + Refresh(); + } + return; + } + } + + event.Skip(); +} + +#endif // wxUSE_MOUSEWHEEL + //---------------------------------------------------------------------------- // wxPreviewControlBar //---------------------------------------------------------------------------- @@ -923,7 +1047,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(); } @@ -931,6 +1055,8 @@ void wxPreviewFrame::CreateControlBar() * Print preview */ +IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject) + wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data) @@ -1010,17 +1136,17 @@ bool wxPrintPreviewBase::SetCurrentPage(int pageNum) } int wxPrintPreviewBase::GetCurrentPage() const - { return m_currentPage; }; + { return m_currentPage; } void wxPrintPreviewBase::SetPrintout(wxPrintout *printout) - { m_previewPrintout = printout; }; + { m_previewPrintout = printout; } wxPrintout *wxPrintPreviewBase::GetPrintout() const - { return m_previewPrintout; }; + { return m_previewPrintout; } wxPrintout *wxPrintPreviewBase::GetPrintoutForPrinting() const - { return m_printPrintout; }; + { return m_printPrintout; } void wxPrintPreviewBase::SetFrame(wxFrame *frame) - { m_previewFrame = frame; }; + { m_previewFrame = frame; } void wxPrintPreviewBase::SetCanvas(wxPreviewCanvas *canvas) - { m_previewCanvas = canvas; }; + { m_previewCanvas = canvas; } wxFrame *wxPrintPreviewBase::GetFrame() const { return m_previewFrame; } wxPreviewCanvas *wxPrintPreviewBase::GetCanvas() const @@ -1387,5 +1513,4 @@ void wxPrintPreview::DetermineScaling() m_pimpl->DetermineScaling(); } - #endif // wxUSE_PRINTING_ARCHITECTURE