class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase;
class WXDLLIMPEXP_FWD_CORE wxPrintPreview;
class WXDLLIMPEXP_FWD_CORE wxPrintAbortDialog;
+class WXDLLIMPEXP_FWD_CORE wxStaticText;
class wxPrintPageMaxCtrl;
class wxPrintPageTextCtrl;
long style = wxDEFAULT_DIALOG_STYLE,
const wxString& name = wxT("dialog"));
+ void SetProgress(int currentPage, int totalPages,
+ int currentCopy, int totalCopies);
+
void OnCancel(wxCommandEvent& event);
private:
+ wxStaticText *m_progress;
+
DECLARE_EVENT_TABLE()
wxDECLARE_NO_COPY_CLASS(wxPrintAbortDialog);
};
const wxString& name)
: wxDialog(parent, wxID_ANY, _("Printing"), pos, size, style, name)
{
- wxBoxSizer *button_sizer = new wxBoxSizer(wxVERTICAL);
- button_sizer->Add(new wxStaticText(this, wxID_ANY, _("Please wait while printing\n") + documentTitle), 0, wxALL, 10 );
- button_sizer->Add(new wxButton(this, wxID_CANCEL, wxT("Cancel") ), 0, wxALL | wxALIGN_CENTER, 10);
-
- SetAutoLayout(true);
- SetSizer(button_sizer);
-
- button_sizer->Fit(this);
- button_sizer->SetSizeHints(this);
+ wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
+ mainSizer->Add(new wxStaticText(this, wxID_ANY, _("Please wait while printing...")),
+ wxSizerFlags().Expand().DoubleBorder());
+
+ wxFlexGridSizer *gridSizer = new wxFlexGridSizer(2, wxSize(20, 0));
+ gridSizer->Add(new wxStaticText(this, wxID_ANY, _("Document:")));
+ gridSizer->AddGrowableCol(1);
+ gridSizer->Add(new wxStaticText(this, wxID_ANY, documentTitle));
+ gridSizer->Add(new wxStaticText(this, wxID_ANY, _("Progress:")));
+ m_progress = new wxStaticText(this, wxID_ANY, _("Preparing"));
+ m_progress->SetMinSize(wxSize(250, -1));
+ gridSizer->Add(m_progress);
+ mainSizer->Add(gridSizer, wxSizerFlags().Expand().DoubleBorder(wxLEFT | wxRIGHT));
+
+ mainSizer->Add(CreateStdDialogButtonSizer(wxCANCEL),
+ wxSizerFlags().Expand().DoubleBorder());
+
+ SetSizerAndFit(mainSizer);
+}
+
+void wxPrintAbortDialog::SetProgress(int currentPage, int totalPages,
+ int currentCopy, int totalCopies)
+{
+ wxString text;
+ text.Printf(_("Printing page %d of %d"), currentPage, totalPages);
+ if ( totalCopies > 1 )
+ text += wxString::Format(_(" (copy %d of %d)"), currentCopy, totalCopies);
+ m_progress->SetLabel(text);
}
void wxPrintAbortDialog::OnCancel(wxCommandEvent& WXUNUSED(event))
maxPageNum = m_printDialogData.GetToPage();
}
- int copyCount;
- for ( copyCount = 1;
- copyCount <= m_printDialogData.GetNoCopies();
- copyCount++ )
+ const int maxCopyCount = m_printDialogData.GetNoCopies();
+ for ( int copyCount = 1; copyCount <= maxCopyCount; copyCount++ )
{
if ( !printout->OnBeginDocument(minPageNum, maxPageNum) )
{
pn <= maxPageNum && printout->HasPage(pn);
pn++ )
{
+ win->SetProgress(pn - minPageNum + 1,
+ maxPageNum - minPageNum + 1,
+ copyCount, maxCopyCount);
+
if ( sm_abortIt )
{
sm_lastError = wxPRINTER_CANCELLED;