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 wxPreviewControlBar;
|
||||||
class WXDLLEXPORT wxPreviewFrame;
|
class WXDLLEXPORT wxPreviewFrame;
|
||||||
|
|
||||||
|
|
||||||
|
enum wxPrinterError
|
||||||
|
{
|
||||||
|
wxPRINTER_NO_ERROR = 0,
|
||||||
|
wxPRINTER_CANCELLED,
|
||||||
|
wxPRINTER_ERROR
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Represents the printer: manages printing a wxPrintout object
|
* Represents the printer: manages printing a wxPrintout object
|
||||||
*/
|
*/
|
||||||
@@ -57,6 +66,8 @@ public:
|
|||||||
{ return (wxPrintDialogData&) m_printDialogData; }
|
{ return (wxPrintDialogData&) m_printDialogData; }
|
||||||
bool GetAbort() const { return sm_abortIt; }
|
bool GetAbort() const { return sm_abortIt; }
|
||||||
|
|
||||||
|
static wxPrinterError GetLastError() { return sm_lastError; }
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// OVERRIDES
|
// OVERRIDES
|
||||||
|
|
||||||
@@ -67,6 +78,9 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
wxPrintDialogData m_printDialogData;
|
wxPrintDialogData m_printDialogData;
|
||||||
wxPrintout* m_currentPrintout;
|
wxPrintout* m_currentPrintout;
|
||||||
|
|
||||||
|
static wxPrinterError sm_lastError;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static wxWindow* sm_abortWindow;
|
static wxWindow* sm_abortWindow;
|
||||||
static bool sm_abortIt;
|
static bool sm_abortIt;
|
||||||
|
@@ -82,10 +82,12 @@ wxPrinterBase::wxPrinterBase(wxPrintDialogData *data)
|
|||||||
sm_abortIt = FALSE;
|
sm_abortIt = FALSE;
|
||||||
if (data)
|
if (data)
|
||||||
m_printDialogData = (*data);
|
m_printDialogData = (*data);
|
||||||
|
sm_lastError = wxPRINTER_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindow *wxPrinterBase::sm_abortWindow = (wxWindow *) NULL;
|
wxWindow *wxPrinterBase::sm_abortWindow = (wxWindow *) NULL;
|
||||||
bool wxPrinterBase::sm_abortIt = FALSE;
|
bool wxPrinterBase::sm_abortIt = FALSE;
|
||||||
|
wxPrinterError wxPrinterBase::sm_lastError = wxPRINTER_NO_ERROR;
|
||||||
|
|
||||||
wxPrinterBase::~wxPrinterBase()
|
wxPrinterBase::~wxPrinterBase()
|
||||||
{
|
{
|
||||||
|
@@ -80,7 +80,10 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
sm_abortWindow = (wxWindow *) NULL;
|
sm_abortWindow = (wxWindow *) NULL;
|
||||||
|
|
||||||
if (!printout)
|
if (!printout)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
printout->SetIsPreview(FALSE);
|
printout->SetIsPreview(FALSE);
|
||||||
|
|
||||||
@@ -96,7 +99,10 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
||||||
|
|
||||||
if (maxPage == 0)
|
if (maxPage == 0)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
m_printDialogData.SetMinPage(minPage);
|
m_printDialogData.SetMinPage(minPage);
|
||||||
m_printDialogData.SetMaxPage(maxPage);
|
m_printDialogData.SetMaxPage(maxPage);
|
||||||
@@ -138,6 +144,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
if (!dc || !dc->Ok())
|
if (!dc || !dc->Ok())
|
||||||
{
|
{
|
||||||
if (dc) delete dc;
|
if (dc) delete dc;
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,6 +196,8 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
|
|
||||||
printout->OnBeginPrinting();
|
printout->OnBeginPrinting();
|
||||||
|
|
||||||
|
sm_lastError = wxPRINTER_NO_ERROR;
|
||||||
|
|
||||||
bool keepGoing = TRUE;
|
bool keepGoing = TRUE;
|
||||||
|
|
||||||
int copyCount;
|
int copyCount;
|
||||||
@@ -197,11 +206,15 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))
|
if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))
|
||||||
{
|
{
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
wxMessageBox(_("Could not start printing."), _("Print Error"), wxOK, parent);
|
wxLogError(_("Could not start printing."));
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sm_abortIt)
|
if (sm_abortIt)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
int pn;
|
int pn;
|
||||||
for (pn = m_printDialogData.GetFromPage(); keepGoing && (pn <= m_printDialogData.GetToPage()) && printout->HasPage(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)
|
if (sm_abortIt)
|
||||||
{
|
{
|
||||||
keepGoing = FALSE;
|
keepGoing = FALSE;
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -225,6 +239,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sm_abortIt = TRUE;
|
sm_abortIt = TRUE;
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
keepGoing = FALSE;
|
keepGoing = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -240,7 +255,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
|
|
||||||
delete dc;
|
delete dc;
|
||||||
|
|
||||||
return TRUE;
|
return (sm_lastError == wxPRINTER_NO_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
|
wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
|
||||||
@@ -252,7 +267,14 @@ wxDC* wxPostScriptPrinter::PrintDialog(wxWindow *parent)
|
|||||||
{
|
{
|
||||||
dc = dialog->GetPrintDC();
|
dc = dialog->GetPrintDC();
|
||||||
m_printDialogData = dialog->GetPrintDialogData();
|
m_printDialogData = dialog->GetPrintDialogData();
|
||||||
|
if (dc == NULL)
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
|
else
|
||||||
|
sm_lastError = wxPRINTER_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
|
|
||||||
dialog->Destroy();
|
dialog->Destroy();
|
||||||
|
|
||||||
return dc;
|
return dc;
|
||||||
|
@@ -100,7 +100,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
sm_abortWindow = NULL;
|
sm_abortWindow = NULL;
|
||||||
|
|
||||||
if (!printout)
|
if (!printout)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
printout->SetIsPreview(FALSE);
|
printout->SetIsPreview(FALSE);
|
||||||
|
|
||||||
@@ -115,7 +118,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
||||||
|
|
||||||
if (maxPage == 0)
|
if (maxPage == 0)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
m_printDialogData.SetMinPage(minPage);
|
m_printDialogData.SetMinPage(minPage);
|
||||||
m_printDialogData.SetMaxPage(maxPage);
|
m_printDialogData.SetMaxPage(maxPage);
|
||||||
@@ -175,6 +181,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
if (logPPIPrinterX == 0 || logPPIPrinterY == 0)
|
if (logPPIPrinterX == 0 || logPPIPrinterY == 0)
|
||||||
{
|
{
|
||||||
delete dc;
|
delete dc;
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,6 +229,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
{
|
{
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
wxLogDebug(wxT("Could not create an abort dialog."));
|
wxLogDebug(wxT("Could not create an abort dialog."));
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
|
|
||||||
delete dc;
|
delete dc;
|
||||||
}
|
}
|
||||||
@@ -231,6 +239,8 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
|
|
||||||
printout->OnBeginPrinting();
|
printout->OnBeginPrinting();
|
||||||
|
|
||||||
|
sm_lastError = wxPRINTER_NO_ERROR;
|
||||||
|
|
||||||
int copyCount;
|
int copyCount;
|
||||||
for ( copyCount = 1;
|
for ( copyCount = 1;
|
||||||
copyCount <= m_printDialogData.GetNoCopies();
|
copyCount <= m_printDialogData.GetNoCopies();
|
||||||
@@ -240,10 +250,14 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
{
|
{
|
||||||
wxEndBusyCursor();
|
wxEndBusyCursor();
|
||||||
wxLogError(_("Could not start printing."));
|
wxLogError(_("Could not start printing."));
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sm_abortIt)
|
if (sm_abortIt)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
int pn;
|
int pn;
|
||||||
for ( pn = m_printDialogData.GetFromPage();
|
for ( pn = m_printDialogData.GetFromPage();
|
||||||
@@ -252,6 +266,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
{
|
{
|
||||||
if ( sm_abortIt )
|
if ( sm_abortIt )
|
||||||
{
|
{
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,7 +275,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
dc->EndPage();
|
dc->EndPage();
|
||||||
|
|
||||||
if ( !cont )
|
if ( !cont )
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printout->OnEndDocument();
|
printout->OnEndDocument();
|
||||||
@@ -279,7 +297,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
|
|
||||||
delete dc;
|
delete dc;
|
||||||
|
|
||||||
return TRUE;
|
return (sm_lastError == wxPRINTER_NO_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDC* wxWindowsPrinter::PrintDialog(wxWindow *parent)
|
wxDC* wxWindowsPrinter::PrintDialog(wxWindow *parent)
|
||||||
@@ -293,7 +311,13 @@ wxDC* wxWindowsPrinter::PrintDialog(wxWindow *parent)
|
|||||||
{
|
{
|
||||||
dc = dialog.GetPrintDC();
|
dc = dialog.GetPrintDC();
|
||||||
m_printDialogData = dialog.GetPrintDialogData();
|
m_printDialogData = dialog.GetPrintDialogData();
|
||||||
|
if (dc == NULL)
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
|
else
|
||||||
|
sm_lastError = wxPRINTER_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
sm_lastError = wxPRINTER_CANCELLED;
|
||||||
|
|
||||||
return dc;
|
return dc;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user