X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d427503c3696486ef84cd0e5081884ccd8d6b434..1c383dbac927bbcc728365b2f8894a5ce676b19b:/src/common/prntbase.cpp diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 0c2aba22e5..ce52bc53fd 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -220,8 +220,9 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event) BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel) EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnWindowClose) EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) - EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) - EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) + EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPreviousButton) + EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNextButton) + EVT_CHAR(wxPreviewControlBar::OnChar) EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) EVT_PAINT(wxPreviewControlBar::OnPaint) END_EVENT_TABLE() @@ -267,7 +268,20 @@ void wxPreviewControlBar::OnPrint(wxCommandEvent& WXUNUSED(event)) preview->Print(TRUE); } -void wxPreviewControlBar::OnNext(wxCommandEvent& WXUNUSED(event)) +void wxPreviewControlBar::OnChar(wxKeyEvent &event) +{ + switch(event.KeyCode()) + { + case WXK_NEXT: + OnNext(); break; + case WXK_PRIOR: + OnPrevious(); break; + default: + event.Skip(); + } +} + +void wxPreviewControlBar::OnNext(void) { wxPrintPreviewBase *preview = GetPrintPreview(); if (preview) @@ -282,7 +296,7 @@ void wxPreviewControlBar::OnNext(wxCommandEvent& WXUNUSED(event)) } } -void wxPreviewControlBar::OnPrevious(wxCommandEvent& WXUNUSED(event)) +void wxPreviewControlBar::OnPrevious(void) { wxPrintPreviewBase *preview = GetPrintPreview(); if (preview) @@ -370,14 +384,21 @@ void wxPreviewControlBar::CreateButtons() "120%", "150%", "200%" }; - m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM, - wxPoint(x, y), wxSize(100, -1)); - - // Yes, this look stupid, but this is because gcc gives up otherwise. int n = WXSIZEOF(choices); - for ( int i = 0; i < n; i++ ) - m_zoomControl->Append(choices[i]); - + + wxString* strings = new wxString[n]; + int i; + for (i = 0; i < n; i++ ) + strings[i] = choices[i]; + + m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM, + wxPoint(x, y), + wxSize(100, -1), + n, + strings + ); + delete[] strings; + SetZoomControl(m_printPreview->GetZoom()); } @@ -388,6 +409,7 @@ 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 if (m_zoomControl) m_zoomControl->SetStringSelection(buf); } @@ -395,7 +417,7 @@ void wxPreviewControlBar::SetZoomControl(int zoom) int wxPreviewControlBar::GetZoomControl() { wxChar buf[20]; - if (m_zoomControl && (m_zoomControl->GetStringSelection() != _T(""))) + if (m_zoomControl && (m_zoomControl->GetStringSelection() != wxT(""))) { wxStrcpy(buf, m_zoomControl->GetStringSelection()); buf[wxStrlen(buf) - 1] = 0; @@ -410,7 +432,7 @@ int wxPreviewControlBar::GetZoomControl() */ BEGIN_EVENT_TABLE(wxPreviewFrame, wxFrame) -EVT_CLOSE(wxPreviewFrame::OnCloseWindow) + EVT_CLOSE(wxPreviewFrame::OnCloseWindow) END_EVENT_TABLE() wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *preview, wxFrame *parent, const wxString& title, @@ -549,8 +571,10 @@ void wxPrintPreviewBase::Init(wxPrintout *printout, m_leftMargin = 40; m_pageWidth = 0; m_pageHeight = 0; + m_printingPrepared = FALSE; - printout->OnPreparePrinting(); + // Too soon! Moved to RenderPage. + // printout->OnPreparePrinting(); // Get some parameters from the printout, if defined int selFrom, selTo; @@ -664,6 +688,13 @@ bool wxPrintPreviewBase::RenderPage(int pageNum) m_previewPrintout->SetDC(&memoryDC); m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight); + // Need to delay OnPreparePrinting until here, so we have enough information. + if (!m_printingPrepared) + { + m_previewPrintout->OnPreparePrinting(); + m_printingPrepared = TRUE; + } + m_previewPrintout->OnBeginPrinting(); if (!m_previewPrintout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))