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:
@@ -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;
|
||||
|
@@ -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()
|
||||
{
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user