sm_abortWindow = (wxWindow *) NULL;
if (!printout)
+ {
+ sm_lastError = wxPRINTER_ERROR;
return FALSE;
+ }
printout->SetIsPreview(FALSE);
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
if (maxPage == 0)
+ {
+ sm_lastError = wxPRINTER_ERROR;
return FALSE;
+ }
m_printDialogData.SetMinPage(minPage);
m_printDialogData.SetMaxPage(maxPage);
}
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;
}
logPPIPrinterY = 100;
*/
- logPPIPrinterX = 72;
- logPPIPrinterY = 72;
+ logPPIPrinterX = wxPostScriptDC::GetResolution();
+ logPPIPrinterY = wxPostScriptDC::GetResolution();
printout->SetPPIScreen(logPPIScreenX, logPPIScreenY);
printout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY);
printout->OnBeginPrinting();
+ sm_lastError = wxPRINTER_NO_ERROR;
+
bool keepGoing = TRUE;
int copyCount;
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);
if (sm_abortIt)
{
keepGoing = FALSE;
+ sm_lastError = wxPRINTER_CANCELLED;
break;
}
else
else
{
sm_abortIt = TRUE;
+ sm_lastError = wxPRINTER_CANCELLED;
keepGoing = FALSE;
}
}
delete dc;
- return TRUE;
+ return (sm_lastError == wxPRINTER_NO_ERROR);
}
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;
{
m_previewPrintout->SetPPIScreen(100, 100);
// m_previewPrintout->SetPPIPrinter(100, 100);
- m_previewPrintout->SetPPIPrinter(72, 72);
+ m_previewPrintout->SetPPIPrinter(wxPostScriptDC::GetResolution(), wxPostScriptDC::GetResolution());
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
+ sizeDevUnits.x = (wxCoord)((float)sizeDevUnits.x * wxPostScriptDC::GetResolution() / 72.0);
+ sizeDevUnits.y = (wxCoord)((float)sizeDevUnits.y * wxPostScriptDC::GetResolution() / 72.0);
wxSize sizeTenthsMM(paper->GetSize());
wxSize sizeMM(sizeTenthsMM.x / 10, sizeTenthsMM.y / 10);
}
// At 100%, the page should look about page-size on the screen.
- m_previewScale = (float)0.8;
+ m_previewScale = (float)0.8 * 72.0 / (float)wxPostScriptDC::GetResolution();
}
}