/////////////////////////////////////////////////////////////////////////////
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "prntbase.h"
+ #pragma implementation "prntbase.h"
+ #pragma implementation "printdlg.h"
#endif
// For compilers that support precompilation, includes "wx.h".
//----------------------------------------------------------------------------
wxPrintFactory *wxPrintFactory::m_factory = NULL;
-
+
void wxPrintFactory::SetPrintFactory( wxPrintFactory *factory )
-{
- if (wxPrintFactory::m_factory)
+{
+ if (wxPrintFactory::m_factory)
delete wxPrintFactory::m_factory;
-
- wxPrintFactory::m_factory = factory;
+
+ wxPrintFactory::m_factory = factory;
}
wxPrintFactory *wxPrintFactory::GetFactory()
{
if (!wxPrintFactory::m_factory)
- wxPrintFactory::m_factory = new wxNativePrintFactory;
+ wxPrintFactory::m_factory = new wxNativePrintFactory;
return wxPrintFactory::m_factory;
}
//----------------------------------------------------------------------------
wxPrinterBase *wxNativePrintFactory::CreatePrinter( wxPrintDialogData *data )
-{
-#if defined(__WXMSW__)
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
return new wxWindowsPrinter( data );
#elif defined(__WXMAC__)
return new wxMacPrinter( data );
+#elif defined(__WXPM__)
+ return new wxOS2Printer( data );
#else
return new wxPostScriptPrinter( data );
#endif
};
-wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
+wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
wxPrintout *printout, wxPrintDialogData *data )
{
-#if defined(__WXMSW__)
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
return new wxWindowsPrintPreview( preview, printout, data );
#elif defined(__WXMAC__)
return new wxMacPrintPreview( preview, printout, data );
+#elif defined(__WXPM__)
+ return new wxOS2PrintPreview( preview, printout, data );
#else
return new wxPostScriptPrintPreview( preview, printout, data );
#endif
}
-wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
+wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
wxPrintout *printout, wxPrintData *data )
{
-#if defined(__WXMSW__)
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
return new wxWindowsPrintPreview( preview, printout, data );
#elif defined(__WXMAC__)
return new wxMacPrintPreview( preview, printout, data );
+#elif defined(__WXPM__)
+ return new wxOS2PrintPreview( preview, printout, data );
#else
return new wxPostScriptPrintPreview( preview, printout, data );
#endif
}
+wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent,
+ wxPrintDialogData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintDialog( parent, data );
+#elif defined(__WXMAC__)
+ return new wxMacPrintDialog( parent, data );
+#else
+ return new wxGenericPrintDialog( parent, data );
+#endif
+}
+
+wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent,
+ wxPrintData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintDialog( parent, data );
+#elif defined(__WXMAC__)
+ return new wxMacPrintDialog( parent, data );
+#else
+ return new wxGenericPrintDialog( 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;
+#else
+ return new wxPostScriptPrintNativeData;
+#endif
+}
+
+//----------------------------------------------------------------------------
+// wxPrintNativeDataBase
+//----------------------------------------------------------------------------
+
+IMPLEMENT_ABSTRACT_CLASS(wxPrintNativeDataBase, wxObject)
+
+wxPrintNativeDataBase::wxPrintNativeDataBase()
+{
+ m_ref = 1;
+}
+
//----------------------------------------------------------------------------
// wxPrinterBase
//----------------------------------------------------------------------------
wxMessageBox(message, _("Printing Error"), wxOK, parent);
}
+wxPrintDialogData& wxPrinterBase::GetPrintDialogData() const
+{
+ return (wxPrintDialogData&) m_printDialogData;
+}
+
//----------------------------------------------------------------------------
// wxPrinter
//----------------------------------------------------------------------------
return m_pimpl->PrintDialog( parent );
}
+wxPrintDialogData& wxPrinter::GetPrintDialogData() const
+{
+ return m_pimpl->GetPrintDialogData();
+}
+
+// ---------------------------------------------------------------------------
+// wxPrintDialogBase: the common dialog for printing.
+// ---------------------------------------------------------------------------
+
+IMPLEMENT_ABSTRACT_CLASS(wxPrintDialogBase, wxObject)
+
+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.
+// ---------------------------------------------------------------------------
+
+IMPLEMENT_CLASS(wxPrintDialog, wxObject)
+
+wxPrintDialog::wxPrintDialog(wxWindow *parent, wxPrintDialogData* data)
+{
+ m_pimpl = wxPrintFactory::GetFactory()->CreatePrintDialog( parent, data );
+}
+
+wxPrintDialog::wxPrintDialog(wxWindow *parent, wxPrintData* data)
+{
+ m_pimpl = wxPrintFactory::GetFactory()->CreatePrintDialog( parent, data );
+}
+
+wxPrintDialog::~wxPrintDialog()
+{
+ delete m_pimpl;
+}
+
+int wxPrintDialog::ShowModal()
+{
+ return m_pimpl->ShowModal();
+}
+
+wxPrintDialogData& wxPrintDialog::GetPrintDialogData()
+{
+ return m_pimpl->GetPrintDialogData();
+}
+
+wxPrintData& wxPrintDialog::GetPrintData()
+{
+ return m_pimpl->GetPrintData();
+}
+wxDC *wxPrintDialog::GetPrintDC()
+{
+ return m_pimpl->GetPrintDC();
+}
+
//----------------------------------------------------------------------------
// wxPrintAbortDialog
//----------------------------------------------------------------------------
return true;
}
-int wxPrintPreviewBase::GetCurrentPage() const
+int wxPrintPreviewBase::GetCurrentPage() const
{ return m_currentPage; };
-void wxPrintPreviewBase::SetPrintout(wxPrintout *printout)
+void wxPrintPreviewBase::SetPrintout(wxPrintout *printout)
{ m_previewPrintout = printout; };
-wxPrintout *wxPrintPreviewBase::GetPrintout() const
+wxPrintout *wxPrintPreviewBase::GetPrintout() const
{ return m_previewPrintout; };
-wxPrintout *wxPrintPreviewBase::GetPrintoutForPrinting() const
+wxPrintout *wxPrintPreviewBase::GetPrintoutForPrinting() const
{ return m_printPrintout; };
-void wxPrintPreviewBase::SetFrame(wxFrame *frame)
+void wxPrintPreviewBase::SetFrame(wxFrame *frame)
{ m_previewFrame = frame; };
-void wxPrintPreviewBase::SetCanvas(wxPreviewCanvas *canvas)
+void wxPrintPreviewBase::SetCanvas(wxPreviewCanvas *canvas)
{ m_previewCanvas = canvas; };
-wxFrame *wxPrintPreviewBase::GetFrame() const
+wxFrame *wxPrintPreviewBase::GetFrame() const
{ return m_previewFrame; }
-wxPreviewCanvas *wxPrintPreviewBase::GetCanvas() const
+wxPreviewCanvas *wxPrintPreviewBase::GetCanvas() const
{ return m_previewCanvas; }
bool wxPrintPreviewBase::PaintPage(wxPreviewCanvas *canvas, wxDC& dc)
}
}
-wxPrintDialogData& wxPrintPreviewBase::GetPrintDialogData()
-{
+wxPrintDialogData& wxPrintPreviewBase::GetPrintDialogData()
+{
return m_printDialogData;
}
-int wxPrintPreviewBase::GetZoom() const
+int wxPrintPreviewBase::GetZoom() const
{ return m_currentZoom; }
-int wxPrintPreviewBase::GetMaxPage() const
+int wxPrintPreviewBase::GetMaxPage() const
{ return m_maxPage; }
-int wxPrintPreviewBase::GetMinPage() const
+int wxPrintPreviewBase::GetMinPage() const
{ return m_minPage; }
-bool wxPrintPreviewBase::Ok() const
+bool wxPrintPreviewBase::Ok() const
{ return m_isOk; }
-void wxPrintPreviewBase::SetOk(bool ok)
+void wxPrintPreviewBase::SetOk(bool ok)
{ m_isOk = ok; }
//----------------------------------------------------------------------------
// wxPrintPreview
wxPrintPreview::~wxPrintPreview()
{
delete m_pimpl;
-
+
// don't delete twice
m_printPrintout = NULL;
m_previewPrintout = NULL;
return m_pimpl->SetCurrentPage( pageNum );
}
-int wxPrintPreview::GetCurrentPage() const
-{
+int wxPrintPreview::GetCurrentPage() const
+{
return m_pimpl->GetCurrentPage();
}
-void wxPrintPreview::SetPrintout(wxPrintout *printout)
-{
+void wxPrintPreview::SetPrintout(wxPrintout *printout)
+{
m_pimpl->SetPrintout( printout );
}
-wxPrintout *wxPrintPreview::GetPrintout() const
-{
+wxPrintout *wxPrintPreview::GetPrintout() const
+{
return m_pimpl->GetPrintout();
}
-wxPrintout *wxPrintPreview::GetPrintoutForPrinting() const
-{
+wxPrintout *wxPrintPreview::GetPrintoutForPrinting() const
+{
return m_pimpl->GetPrintoutForPrinting();
}
-void wxPrintPreview::SetFrame(wxFrame *frame)
-{
+void wxPrintPreview::SetFrame(wxFrame *frame)
+{
m_pimpl->SetFrame( frame );
}
-void wxPrintPreview::SetCanvas(wxPreviewCanvas *canvas)
-{
+void wxPrintPreview::SetCanvas(wxPreviewCanvas *canvas)
+{
m_pimpl->SetCanvas( canvas );
}
-wxFrame *wxPrintPreview::GetFrame() const
+wxFrame *wxPrintPreview::GetFrame() const
{
return m_pimpl->GetFrame();
}
-wxPreviewCanvas *wxPrintPreview::GetCanvas() const
-{
+wxPreviewCanvas *wxPrintPreview::GetCanvas() const
+{
return m_pimpl->GetCanvas();
}