added wxPrinter::GetLastError

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2000-07-03 20:22:33 +00:00
parent 62786fc3be
commit 3c10c250ff
4 changed files with 65 additions and 3 deletions

View File

@@ -38,6 +38,15 @@ class WXDLLEXPORT wxPreviewCanvas;
class WXDLLEXPORT wxPreviewControlBar;
class WXDLLEXPORT wxPreviewFrame;
enum wxPrinterError
{
wxPRINTER_NO_ERROR = 0,
wxPRINTER_CANCELLED,
wxPRINTER_ERROR
};
/*
* Represents the printer: manages printing a wxPrintout object
*/
@@ -56,6 +65,8 @@ public:
wxPrintDialogData& GetPrintDialogData() const
{ return (wxPrintDialogData&) m_printDialogData; }
bool GetAbort() const { return sm_abortIt; }
static wxPrinterError GetLastError() { return sm_lastError; }
///////////////////////////////////////////////////////////////////////////
// OVERRIDES
@@ -67,6 +78,9 @@ public:
protected:
wxPrintDialogData m_printDialogData;
wxPrintout* m_currentPrintout;
static wxPrinterError sm_lastError;
public:
static wxWindow* sm_abortWindow;
static bool sm_abortIt;

View File

@@ -82,10 +82,12 @@ wxPrinterBase::wxPrinterBase(wxPrintDialogData *data)
sm_abortIt = FALSE;
if (data)
m_printDialogData = (*data);
sm_lastError = wxPRINTER_NO_ERROR;
}
wxWindow *wxPrinterBase::sm_abortWindow = (wxWindow *) NULL;
bool wxPrinterBase::sm_abortIt = FALSE;
wxPrinterError wxPrinterBase::sm_lastError = wxPRINTER_NO_ERROR;
wxPrinterBase::~wxPrinterBase()
{

View File

@@ -80,7 +80,10 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
sm_abortWindow = (wxWindow *) NULL;
if (!printout)
{
sm_lastError = wxPRINTER_ERROR;
return FALSE;
}
printout->SetIsPreview(FALSE);
@@ -96,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);
@@ -138,6 +144,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
if (!dc || !dc->Ok())
{
if (dc) delete dc;
sm_lastError = wxPRINTER_ERROR;
return FALSE;
}
@@ -189,6 +196,8 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
printout->OnBeginPrinting();
sm_lastError = wxPRINTER_NO_ERROR;
bool keepGoing = TRUE;
int copyCount;
@@ -197,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);
@@ -210,6 +223,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
if (sm_abortIt)
{
keepGoing = FALSE;
sm_lastError = wxPRINTER_CANCELLED;
break;
}
else
@@ -225,6 +239,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
else
{
sm_abortIt = TRUE;
sm_lastError = wxPRINTER_CANCELLED;
keepGoing = FALSE;
}
}
@@ -240,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)
@@ -252,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;

View File

@@ -100,7 +100,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
sm_abortWindow = NULL;
if (!printout)
{
sm_lastError = wxPRINTER_ERROR;
return FALSE;
}
printout->SetIsPreview(FALSE);
@@ -115,7 +118,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
if (maxPage == 0)
{
sm_lastError = wxPRINTER_ERROR;
return FALSE;
}
m_printDialogData.SetMinPage(minPage);
m_printDialogData.SetMaxPage(maxPage);
@@ -175,6 +181,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
if (logPPIPrinterX == 0 || logPPIPrinterY == 0)
{
delete dc;
sm_lastError = wxPRINTER_ERROR;
return FALSE;
}
@@ -222,6 +229,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
{
wxEndBusyCursor();
wxLogDebug(wxT("Could not create an abort dialog."));
sm_lastError = wxPRINTER_ERROR;
delete dc;
}
@@ -231,6 +239,8 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
printout->OnBeginPrinting();
sm_lastError = wxPRINTER_NO_ERROR;
int copyCount;
for ( copyCount = 1;
copyCount <= m_printDialogData.GetNoCopies();
@@ -240,10 +250,14 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
{
wxEndBusyCursor();
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();
@@ -252,6 +266,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
{
if ( sm_abortIt )
{
sm_lastError = wxPRINTER_CANCELLED;
break;
}
@@ -260,7 +275,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
dc->EndPage();
if ( !cont )
{
sm_lastError = wxPRINTER_CANCELLED;
break;
}
}
printout->OnEndDocument();
@@ -279,7 +297,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
delete dc;
return TRUE;
return (sm_lastError == wxPRINTER_NO_ERROR);
}
wxDC* wxWindowsPrinter::PrintDialog(wxWindow *parent)
@@ -293,7 +311,13 @@ wxDC* wxWindowsPrinter::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;
return dc;
}