X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2179d57968969c418e7e4b26bbb152e8b1564de7..3fa4bd0e78b0607dc7c89deebbef2377658874bd:/src/generic/printps.cpp diff --git a/src/generic/printps.cpp b/src/generic/printps.cpp index ec2b99b5d3..f819ed81ee 100644 --- a/src/generic/printps.cpp +++ b/src/generic/printps.cpp @@ -54,10 +54,8 @@ // wxWin macros // ---------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxPostScriptPrinter, wxPrinterBase) IMPLEMENT_CLASS(wxPostScriptPrintPreview, wxPrintPreviewBase) -#endif // ============================================================================ // implementation @@ -82,10 +80,18 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro sm_abortWindow = (wxWindow *) NULL; if (!printout) + { + sm_lastError = wxPRINTER_ERROR; return FALSE; + } printout->SetIsPreview(FALSE); - printout->OnPreparePrinting(); + + // 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; @@ -93,7 +99,10 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage); if (maxPage == 0) + { + sm_lastError = wxPRINTER_ERROR; return FALSE; + } m_printDialogData.SetMinPage(minPage); m_printDialogData.SetMaxPage(maxPage); @@ -128,13 +137,14 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro } else { - dc = new wxPostScriptDC(wxThePrintSetupData->GetPrinterFile(), FALSE, (wxWindow *) NULL); + dc = new wxPostScriptDC(GetPrintDialogData().GetPrintData()); } // May have pressed cancel. if (!dc || !dc->Ok()) { if (dc) delete dc; + sm_lastError = wxPRINTER_ERROR; return FALSE; } @@ -170,6 +180,8 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro // Create an abort window wxBeginBusyCursor(); + printout->OnPreparePrinting(); + int pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1, totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(), @@ -184,6 +196,8 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro printout->OnBeginPrinting(); + sm_lastError = wxPRINTER_NO_ERROR; + bool keepGoing = TRUE; int copyCount; @@ -192,11 +206,15 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage())) { wxEndBusyCursor(); - wxMessageBox(_("Could not start printing."), _("Print Error"), wxOK, parent); + wxLogError(_("Could not start printing.")); + sm_lastError = wxPRINTER_ERROR; break; } if (sm_abortIt) + { + sm_lastError = wxPRINTER_CANCELLED; break; + } int pn; for (pn = m_printDialogData.GetFromPage(); keepGoing && (pn <= m_printDialogData.GetToPage()) && printout->HasPage(pn); @@ -205,6 +223,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro if (sm_abortIt) { keepGoing = FALSE; + sm_lastError = wxPRINTER_CANCELLED; break; } else @@ -220,6 +239,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro else { sm_abortIt = TRUE; + sm_lastError = wxPRINTER_CANCELLED; keepGoing = FALSE; } } @@ -235,7 +255,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro delete dc; - return TRUE; + return (sm_lastError == wxPRINTER_NO_ERROR); } wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent) @@ -247,7 +267,14 @@ wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent) { dc = dialog->GetPrintDC(); m_printDialogData = dialog->GetPrintDialogData(); + if (dc == NULL) + sm_lastError = wxPRINTER_ERROR; + else + sm_lastError = wxPRINTER_NO_ERROR; } + else + sm_lastError = wxPRINTER_CANCELLED; + dialog->Destroy(); return dc;