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 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;

View File

@@ -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()
{ {

View File

@@ -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;

View File

@@ -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;
} }