// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem
-// Licence: wxWindows license
+// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#include "wx/dcmemory.h"
#include "wx/stattext.h"
#include "wx/intl.h"
-#endif
+#include "wx/textdlg.h"
+#include "wx/sizer.h"
+#endif // !WX_PRECOMP
#include "wx/prntbase.h"
#include "wx/dcprint.h"
#include <stdlib.h>
#include <string.h>
-#include <wx/sizer.h>
-
#ifdef __WXMSW__
#include "wx/msw/private.h"
#include <commdlg.h>
EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint)
EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPreviousButton)
EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNextButton)
+ EVT_BUTTON(wxID_PREVIEW_FIRST, wxPreviewControlBar::OnFirstButton)
+ EVT_BUTTON(wxID_PREVIEW_LAST, wxPreviewControlBar::OnLastButton)
+ EVT_BUTTON(wxID_PREVIEW_GOTO, wxPreviewControlBar::OnGotoButton)
EVT_CHAR(wxPreviewControlBar::OnChar)
EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom)
EVT_PAINT(wxPreviewControlBar::OnPaint)
OnNext(); break;
case WXK_PRIOR:
OnPrevious(); break;
+ case WXK_HOME:
+ OnFirst(); break;
+ case WXK_END:
+ OnLast(); break;
+ case WXK_TAB:
+ OnGoto(); break;
default:
event.Skip();
}
}
}
+void wxPreviewControlBar::OnFirst(void)
+{
+ wxPrintPreviewBase *preview = GetPrintPreview();
+ if (preview)
+ {
+ int currentPage = preview->GetMinPage();
+ if (preview->GetPrintout()->HasPage(currentPage))
+ {
+ preview->SetCurrentPage(currentPage);
+ }
+ }
+}
+
+void wxPreviewControlBar::OnLast(void)
+{
+ wxPrintPreviewBase *preview = GetPrintPreview();
+ if (preview)
+ {
+ int currentPage = preview->GetMaxPage();
+ if (preview->GetPrintout()->HasPage(currentPage))
+ {
+ preview->SetCurrentPage(currentPage);
+ }
+ }
+}
+
+void wxPreviewControlBar::OnGoto(void)
+{
+ wxPrintPreviewBase *preview = GetPrintPreview();
+ if (preview)
+ {
+ long currentPage;
+
+ if (preview->GetMinPage() > 0)
+ {
+ wxString strPrompt;
+ wxString strPage;
+
+ strPrompt.Printf( wxT("%d...%d"),
+ preview->GetMinPage(), preview->GetMaxPage());
+ strPage.Printf( wxT("%d"), preview->GetCurrentPage() );
+
+ strPage =
+ wxGetTextFromUser( strPrompt, _("Goto Page"), strPage);
+
+ if ( strPage.ToLong( ¤tPage ) )
+ if (preview->GetPrintout()->HasPage(currentPage))
+ {
+ preview->SetCurrentPage(currentPage);
+ }
+ }
+ }
+}
+
void wxPreviewControlBar::OnZoom(wxCommandEvent& WXUNUSED(event))
{
int zoom = GetZoomControl();
SetFont(buttonFont);
*/
- int buttonWidth = 65;
+ int buttonWidth = 60;
+ int buttonNavigation = 30;
#ifdef __WXGTK__
int buttonHeight = -1;
#else
x += gap + buttonWidth;
}
+ if (m_buttonFlags & wxPREVIEW_FIRST)
+ {
+ m_firstPageButton = new wxButton(this, wxID_PREVIEW_FIRST, wxT("|<<"), wxPoint(x, y),
+ wxSize(buttonNavigation, buttonHeight));
+ x += gap + buttonNavigation;
+ }
+
if (m_buttonFlags & wxPREVIEW_PREVIOUS)
{
m_previousPageButton = new wxButton(this, wxID_PREVIEW_PREVIOUS, wxT("<<"), wxPoint(x, y),
- wxSize(buttonWidth, buttonHeight));
- x += gap + buttonWidth;
+ wxSize(buttonNavigation, buttonHeight));
+ x += gap + buttonNavigation;
}
if (m_buttonFlags & wxPREVIEW_NEXT)
{
m_nextPageButton = new wxButton(this, wxID_PREVIEW_NEXT, wxT(">>"),
- wxPoint(x, y), wxSize(buttonWidth, buttonHeight));
+ wxPoint(x, y), wxSize(buttonNavigation, buttonHeight));
+ x += gap + buttonNavigation;
+ }
+
+ if (m_buttonFlags & wxPREVIEW_LAST)
+ {
+ m_lastPageButton = new wxButton(this, wxID_PREVIEW_LAST, wxT(">>|"), wxPoint(x, y),
+ wxSize(buttonNavigation, buttonHeight));
+ x += gap + buttonNavigation;
+ }
+
+ if (m_buttonFlags & wxPREVIEW_GOTO)
+ {
+ m_gotoPageButton = new wxButton(this, wxID_PREVIEW_GOTO, wxT("Goto..."), wxPoint(x, y),
+ wxSize(buttonWidth, buttonHeight));
x += gap + buttonWidth;
}
if (m_buttonFlags & wxPREVIEW_ZOOM)
{
- static const char *choices[] =
+ static const wxChar *choices[] =
{
- "10%", "15%", "20%", "25%", "30%", "35%", "40%", "45%", "50%", "55%",
- "60%", "65%", "70%", "75%", "80%", "85%", "90%", "95%", "100%", "110%",
- "120%", "150%", "200%"
+ wxT("10%"), wxT("15%"), wxT("20%"), wxT("25%"), wxT("30%"), wxT("35%"), wxT("40%"), wxT("45%"), wxT("50%"), wxT("55%"),
+ wxT("60%"), wxT("65%"), wxT("70%"), wxT("75%"), wxT("80%"), wxT("85%"), wxT("90%"), wxT("95%"), wxT("100%"), wxT("110%"),
+ wxT("120%"), wxT("150%"), wxT("200%")
};
int n = WXSIZEOF(choices);
void wxPreviewControlBar::SetZoomControl(int zoom)
{
- char buf[20];
- sprintf(buf, "%d%%", zoom);
-// Someone is calling methods that do no exist in wxChoice!! So I'll just comment out for VA for now
+ wxChar buf[20];
+ wxSprintf( buf, wxT("%d%%"), zoom );
+
if (m_zoomControl)
m_zoomControl->SetStringSelection(buf);
}
if (m_previewCanvas)
{
if (!RenderPage(pageNum))
- return FALSE;
+ return FALSE;
m_previewCanvas->Refresh();
}
return TRUE;
if (!m_previewBitmap)
if (!RenderPage(m_currentPage))
- return FALSE;
+ return FALSE;
if (!m_previewBitmap)
return FALSE;