Improve print preview appearance and functionality.

Allow to directly enter the page number in the print preview itself instead of
opening a separate dialog in order to do it.

Rearrange the buttons in more visually appealing groups and replace the text
arrows in them with the images.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-01-03 15:57:21 +00:00
parent 8d96f54dfd
commit 825794618f
2 changed files with 421 additions and 114 deletions

View File

@@ -40,6 +40,7 @@ class WXDLLIMPEXP_FWD_CORE wxPreviewFrame;
class WXDLLIMPEXP_FWD_CORE wxPrintFactory;
class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase;
class WXDLLIMPEXP_FWD_CORE wxPrintPreview;
class wxPrintPageTextCtrl;
//----------------------------------------------------------------------------
// error consts
@@ -434,6 +435,8 @@ private:
#define wxID_PREVIEW_FIRST 6
#define wxID_PREVIEW_LAST 7
#define wxID_PREVIEW_GOTO 8
#define wxID_PREVIEW_ZOOM_IN 9
#define wxID_PREVIEW_ZOOM_OUT 10
class WXDLLIMPEXP_CORE wxPreviewControlBar: public wxPanel
{
@@ -455,35 +458,64 @@ public:
virtual wxPrintPreviewBase *GetPrintPreview() const
{ return m_printPreview; }
// Implementation only from now on.
void OnWindowClose(wxCommandEvent& event);
void OnNext();
void OnPrevious();
void OnFirst();
void OnLast();
void OnGoto();
void OnGotoPage();
void OnPrint();
void OnPrintButton(wxCommandEvent& WXUNUSED(event)) { OnPrint(); }
void OnNextButton(wxCommandEvent & WXUNUSED(event)) { OnNext(); }
void OnPreviousButton(wxCommandEvent & WXUNUSED(event)) { OnPrevious(); }
void OnFirstButton(wxCommandEvent & WXUNUSED(event)) { OnFirst(); }
void OnLastButton(wxCommandEvent & WXUNUSED(event)) { OnLast(); }
void OnGotoButton(wxCommandEvent & WXUNUSED(event)) { OnGoto(); }
void OnZoom(wxCommandEvent& event);
void OnPaint(wxPaintEvent& event);
void OnUpdateNextButton(wxUpdateUIEvent& event)
{ event.Enable(IsNextEnabled()); }
void OnUpdatePreviousButton(wxUpdateUIEvent& event)
{ event.Enable(IsPreviousEnabled()); }
void OnUpdateFirstButton(wxUpdateUIEvent& event)
{ event.Enable(IsFirstEnabled()); }
void OnUpdateLastButton(wxUpdateUIEvent& event)
{ event.Enable(IsLastEnabled()); }
void OnUpdateZoomInButton(wxUpdateUIEvent& event)
{ event.Enable(IsZoomInEnabled()); }
void OnUpdateZoomOutButton(wxUpdateUIEvent& event)
{ event.Enable(IsZoomOutEnabled()); }
// These methods are not private because they are called by wxPreviewCanvas.
void DoZoomIn();
void DoZoomOut();
protected:
wxPrintPreviewBase* m_printPreview;
wxButton* m_closeButton;
wxButton* m_nextPageButton;
wxButton* m_previousPageButton;
wxButton* m_printButton;
wxChoice* m_zoomControl;
wxButton* m_firstPageButton;
wxButton* m_lastPageButton;
wxButton* m_gotoPageButton;
wxPrintPageTextCtrl* m_currentPageText;
long m_buttonFlags;
private:
void DoGotoPage(int page);
void DoZoom();
bool IsNextEnabled() const;
bool IsPreviousEnabled() const;
bool IsFirstEnabled() const;
bool IsLastEnabled() const;
bool IsZoomInEnabled() const;
bool IsZoomOutEnabled() const;
void OnZoomInButton(wxCommandEvent & WXUNUSED(event)) { DoZoomIn(); }
void OnZoomOutButton(wxCommandEvent & WXUNUSED(event)) { DoZoomOut(); }
void OnZoomChoice(wxCommandEvent& WXUNUSED(event)) { DoZoom(); }
DECLARE_EVENT_TABLE()
wxDECLARE_NO_COPY_CLASS(wxPreviewControlBar);
};