X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8fa2e6a209ab83319bbc4d652067c9123deaa335..a439ecef106bf1e93a2704a8d0fdf392fc2fb2af:/src/generic/printps.cpp diff --git a/src/generic/printps.cpp b/src/generic/printps.cpp index 053b00b275..bab3bf9a56 100644 --- a/src/generic/printps.cpp +++ b/src/generic/printps.cpp @@ -30,6 +30,8 @@ #include "wx/defs.h" +#if wxUSE_PRINTING_ARCHITECTURE + #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/dc.h" @@ -43,6 +45,7 @@ #include "wx/dcprint.h" #include "wx/printdlg.h" #include "wx/generic/prntdlgg.h" +#include "wx/generic/progdlgg.h" #include "wx/paper.h" #include @@ -82,7 +85,12 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro 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; @@ -167,15 +175,20 @@ 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(), + printedPages = 0; // Open the progress bar dialog wxProgressDialog *progressDialog = new wxProgressDialog ( printout->GetTitle(), _("Printing..."), - maxPage-minPage, + totalPages, parent, - /* disable parent only */ true, - /* show abort button */ true); - + wxPD_CAN_ABORT|wxPD_AUTO_HIDE|wxPD_APP_MODAL); + printout->OnBeginPrinting(); bool keepGoing = TRUE; @@ -204,8 +217,8 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro else { wxString msg; - msg.Printf(_("Printing page %d..."), pn); - if(progressDialog->Update(pn-minPage, msg)) + msg.Printf(_("Printing page %d..."), printedPages+1); + if(progressDialog->Update(printedPages++, msg)) { dc->StartPage(); printout->OnPrintPage(pn); @@ -213,16 +226,17 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro } else { - sm_abortIt = true; - keepGoing = false; //FIXME: do we need both? + sm_abortIt = TRUE; + keepGoing = FALSE; } } + wxYield(); } - delete progressDialog; printout->OnEndDocument(); } printout->OnEndPrinting(); + delete progressDialog; wxEndBusyCursor(); @@ -343,3 +357,4 @@ void wxPostScriptPrintPreview::DetermineScaling() } } +#endif