]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/printps.cpp
return values of overloaded virtuals should match the base class version
[wxWidgets.git] / src / generic / printps.cpp
index 26b6b9108d5291b29ea78cd3324d2b35e88b4309..18653aa45d3a03c71cdd8295fb1571390299d132 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        printps.cpp
+// Name:        src/generic/printps.cpp
 // Purpose:     Postscript print/preview framework
 // Author:      Julian Smart
 // Modified by:
@@ -9,18 +9,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "printps.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
     #pragma hdrstop
 #endif
 
-#include "wx/defs.h"
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
 
 #if wxUSE_PRINTING_ARCHITECTURE && wxUSE_POSTSCRIPT && (!defined(__WXMSW__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW)
 
     #include "wx/intl.h"
     #include "wx/progdlg.h"
     #include "wx/log.h"
+    #include "wx/dcprint.h"
 #endif
 
 #include "wx/generic/printps.h"
-#include "wx/dcprint.h"
 #include "wx/printdlg.h"
 #include "wx/generic/prntdlgg.h"
 #include "wx/generic/progdlgg.h"
@@ -88,47 +82,6 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
 
     printout->SetIsPreview(false);
 
-#if 0
-    // 4/9/99, JACS: this is a silly place to allow preparation, considering
-    // the DC and no parameters have been set in the printout object.
-    // Moved further down.
-
-    // printout->OnPreparePrinting();
-
-    // Get some parameters from the printout, if defined
-    int fromPage, toPage;
-    int minPage, maxPage;
-    printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
-
-    if (maxPage == 0)
-    {
-        sm_lastError = wxPRINTER_ERROR;
-        return false;
-    }
-
-    m_printDialogData.SetMinPage(minPage);
-    m_printDialogData.SetMaxPage(maxPage);
-    if (fromPage != 0)
-        m_printDialogData.SetFromPage(fromPage);
-    if (toPage != 0)
-        m_printDialogData.SetToPage(toPage);
-
-    if (minPage != 0)
-    {
-        m_printDialogData.EnablePageNumbers(true);
-        if (m_printDialogData.GetFromPage() < m_printDialogData.GetMinPage())
-            m_printDialogData.SetFromPage(m_printDialogData.GetMinPage());
-        else if (m_printDialogData.GetFromPage() > m_printDialogData.GetMaxPage())
-            m_printDialogData.SetFromPage(m_printDialogData.GetMaxPage());
-        if (m_printDialogData.GetToPage() > m_printDialogData.GetMaxPage())
-            m_printDialogData.SetToPage(m_printDialogData.GetMaxPage());
-        else if (m_printDialogData.GetToPage() < m_printDialogData.GetMinPage())
-            m_printDialogData.SetToPage(m_printDialogData.GetMinPage());
-    }
-    else
-        m_printDialogData.EnablePageNumbers(false);
-#endif
-
     if (m_printDialogData.GetMinPage() < 1)
         m_printDialogData.SetMinPage(1);
     if (m_printDialogData.GetMaxPage() < 1)
@@ -194,6 +147,11 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
     m_printDialogData.SetMinPage(minPage);
     m_printDialogData.SetMaxPage(maxPage);
 
+    if (m_printDialogData.GetFromPage() < minPage)
+        m_printDialogData.SetFromPage( minPage );
+    if (m_printDialogData.GetToPage() > maxPage)
+        m_printDialogData.SetToPage( maxPage );
+
     int
        pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1,
        totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(),
@@ -273,12 +231,13 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
 wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
 {
     wxDC* dc = (wxDC*) NULL;
-    wxGenericPrintDialog* dialog = new wxGenericPrintDialog(parent, & m_printDialogData);
-    int ret = dialog->ShowModal() ;
-    if (ret == wxID_OK)
+
+    wxGenericPrintDialog dialog( parent, &m_printDialogData );
+    if (dialog.ShowModal() == wxID_OK)
     {
-        dc = dialog->GetPrintDC();
-        m_printDialogData = dialog->GetPrintDialogData();
+        dc = dialog.GetPrintDC();
+        m_printDialogData = dialog.GetPrintDialogData();
+
         if (dc == NULL)
             sm_lastError = wxPRINTER_ERROR;
         else
@@ -287,13 +246,12 @@ wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
     else
         sm_lastError = wxPRINTER_CANCELLED;
 
-    dialog->Destroy();
-
     return dc;
 }
 
-bool wxPostScriptPrinter::Setup(wxWindow *parent)
+bool wxPostScriptPrinter::Setup(wxWindow *WXUNUSED(parent))
 {
+#if 0
     wxGenericPrintDialog* dialog = new wxGenericPrintDialog(parent, & m_printDialogData);
     dialog->GetPrintDialogData().SetSetupDialog(true);
 
@@ -307,6 +265,9 @@ bool wxPostScriptPrinter::Setup(wxWindow *parent)
     dialog->Destroy();
 
     return (ret == wxID_OK);
+#endif
+
+    return false;
 }
 
 // ----------------------------------------------------------------------------
@@ -344,7 +305,16 @@ bool wxPostScriptPrintPreview::Print(bool interactive)
 {
     if (!m_printPrintout)
         return false;
+
+    // Assume that on Unix, the preview may use the PostScript
+    // (generic) version, but printing using the native system is required.
+    // TODO: make a generic print preview class from which wxPostScriptPrintPreview
+    // is derived.
+#ifdef __UNIX__
+    wxPrinter printer(& m_printDialogData);
+#else
     wxPostScriptPrinter printer(& m_printDialogData);
+#endif
     return printer.Print(m_previewFrame, m_printPrintout, interactive);
 }