Printing improvements: GetPageInfo() gets called after the DC has
been set and after OnPreparePrinting() has been called so it can report the number of pages accurately; doesn't try to set number of pages in print dialog, in common with other Windows apps; wxHTML easy printing's preview shows number of pages correctly; preview scrollbars are set correctly; keyboard navigation improved git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
3d16b99ece
commit
d2b354f9c9
@ -126,6 +126,13 @@ All GUI ports:
|
|||||||
- send menu update events only when a menu is about to be used (MSW/GTK)
|
- send menu update events only when a menu is about to be used (MSW/GTK)
|
||||||
- improved event processing performance (Hans Van Leemputten)
|
- improved event processing performance (Hans Van Leemputten)
|
||||||
- added wxMirrorDC class
|
- added wxMirrorDC class
|
||||||
|
- printing improvements: GetPageInfo() gets called after the DC has
|
||||||
|
been set and after OnPreparePrinting() has been called so it can
|
||||||
|
report the number of pages accurately; doesn't try to set
|
||||||
|
number of pages in print dialog, in common with other Windows apps;
|
||||||
|
wxHTML easy printing's preview shows number of pages
|
||||||
|
correctly; preview scrollbars are set correctly; keyboard navigation
|
||||||
|
improved
|
||||||
|
|
||||||
Unix:
|
Unix:
|
||||||
|
|
||||||
|
@ -786,7 +786,7 @@ reference) and to return a tuple of four integers.
|
|||||||
}
|
}
|
||||||
|
|
||||||
\perlnote{When this method is overridden in a derived class,
|
\perlnote{When this method is overridden in a derived class,
|
||||||
it must not take any parameters, an return a 4-element list.
|
it must not take any parameters, and returns a 4-element list.
|
||||||
}
|
}
|
||||||
|
|
||||||
\membersection{wxPrintout::GetPageSizeMM}\label{wxprintoutgetpagesizemm}
|
\membersection{wxPrintout::GetPageSizeMM}\label{wxprintoutgetpagesizemm}
|
||||||
@ -981,7 +981,7 @@ internally.
|
|||||||
|
|
||||||
\membersection{wxPrintPreview::GetCanvas}\label{wxprintpreviewgetcanvas}
|
\membersection{wxPrintPreview::GetCanvas}\label{wxprintpreviewgetcanvas}
|
||||||
|
|
||||||
\func{wxWindow* }{GetCanvas}{\void}
|
\func{wxPreviewCanvas* }{GetCanvas}{\void}
|
||||||
|
|
||||||
Gets the preview window used for displaying the print preview image.
|
Gets the preview window used for displaying the print preview image.
|
||||||
|
|
||||||
@ -1067,7 +1067,7 @@ Renders a page into a wxMemoryDC. Used internally by wxPrintPreview.
|
|||||||
|
|
||||||
\membersection{wxPrintPreview::SetCanvas}\label{wxprintpreviewsetcanvas}
|
\membersection{wxPrintPreview::SetCanvas}\label{wxprintpreviewsetcanvas}
|
||||||
|
|
||||||
\func{void}{SetCanvas}{\param{wxWindow* }{window}}
|
\func{void}{SetCanvas}{\param{wxPreviewCanvas** }{window}}
|
||||||
|
|
||||||
Sets the window to be used for displaying the print preview image.
|
Sets the window to be used for displaying the print preview image.
|
||||||
|
|
||||||
|
@ -179,6 +179,8 @@ wxMiscellaneous
|
|||||||
has been destroyed or recreated. On wxMSW, this is done in
|
has been destroyed or recreated. On wxMSW, this is done in
|
||||||
~wxToolBar. On wxGTK, in SetToolBar. In wxMac, not at all,
|
~wxToolBar. On wxGTK, in SetToolBar. In wxMac, not at all,
|
||||||
but sending a wxSizeEvent will do it.
|
but sending a wxSizeEvent will do it.
|
||||||
|
- Need wxRect wxToolBar::GetToolRect(int id) or similar so we can
|
||||||
|
align a popup menu with a toolbar button.
|
||||||
- wxMac font selector dialog is the generic font selector -
|
- wxMac font selector dialog is the generic font selector -
|
||||||
horrible.
|
horrible.
|
||||||
- No Append(wxArrayString&) for wxChoice and wxComboBox in wxGTK.
|
- No Append(wxArrayString&) for wxChoice and wxComboBox in wxGTK.
|
||||||
|
@ -152,6 +152,7 @@ public:
|
|||||||
bool HasPage(int page);
|
bool HasPage(int page);
|
||||||
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
|
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
|
||||||
bool OnBeginDocument(int startPage, int endPage);
|
bool OnBeginDocument(int startPage, int endPage);
|
||||||
|
void OnPreparePrinting();
|
||||||
|
|
||||||
// Adds input filter
|
// Adds input filter
|
||||||
static void AddFilter(wxHtmlFilter *filter);
|
static void AddFilter(wxHtmlFilter *filter);
|
||||||
|
@ -171,6 +171,7 @@ public:
|
|||||||
~wxPreviewCanvas();
|
~wxPreviewCanvas();
|
||||||
|
|
||||||
void OnPaint(wxPaintEvent& event);
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
void OnChar(wxKeyEvent &event);
|
||||||
|
|
||||||
// Responds to colour changes
|
// Responds to colour changes
|
||||||
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
||||||
@ -204,8 +205,11 @@ public:
|
|||||||
virtual void Initialize();
|
virtual void Initialize();
|
||||||
virtual void CreateCanvas();
|
virtual void CreateCanvas();
|
||||||
virtual void CreateControlBar();
|
virtual void CreateControlBar();
|
||||||
|
|
||||||
|
inline wxPreviewControlBar* GetControlBar() const { return m_controlBar; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxWindow* m_previewCanvas;
|
wxPreviewCanvas* m_previewCanvas;
|
||||||
wxPreviewControlBar* m_controlBar;
|
wxPreviewControlBar* m_controlBar;
|
||||||
wxPrintPreviewBase* m_printPreview;
|
wxPrintPreviewBase* m_printPreview;
|
||||||
|
|
||||||
@ -253,7 +257,7 @@ public:
|
|||||||
wxWindow *parent,
|
wxWindow *parent,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
long style = 0,
|
long style = wxTAB_TRAVERSAL,
|
||||||
const wxString& name = wxT("panel"));
|
const wxString& name = wxT("panel"));
|
||||||
~wxPreviewControlBar();
|
~wxPreviewControlBar();
|
||||||
|
|
||||||
@ -275,7 +279,6 @@ public:
|
|||||||
void OnFirstButton(wxCommandEvent & WXUNUSED(event)) { OnFirst(); }
|
void OnFirstButton(wxCommandEvent & WXUNUSED(event)) { OnFirst(); }
|
||||||
void OnLastButton(wxCommandEvent & WXUNUSED(event)) { OnLast(); }
|
void OnLastButton(wxCommandEvent & WXUNUSED(event)) { OnLast(); }
|
||||||
void OnGotoButton(wxCommandEvent & WXUNUSED(event)) { OnGoto(); }
|
void OnGotoButton(wxCommandEvent & WXUNUSED(event)) { OnGoto(); }
|
||||||
void OnChar(wxKeyEvent &event);
|
|
||||||
void OnZoom(wxCommandEvent& event);
|
void OnZoom(wxCommandEvent& event);
|
||||||
void OnPaint(wxPaintEvent& event);
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
|
||||||
@ -322,16 +325,19 @@ public:
|
|||||||
wxPrintout *GetPrintoutForPrinting() const { return m_printPrintout; };
|
wxPrintout *GetPrintoutForPrinting() const { return m_printPrintout; };
|
||||||
|
|
||||||
void SetFrame(wxFrame *frame) { m_previewFrame = frame; };
|
void SetFrame(wxFrame *frame) { m_previewFrame = frame; };
|
||||||
void SetCanvas(wxWindow *canvas) { m_previewCanvas = canvas; };
|
void SetCanvas(wxPreviewCanvas *canvas) { m_previewCanvas = canvas; };
|
||||||
|
|
||||||
virtual wxFrame *GetFrame() const { return m_previewFrame; }
|
virtual wxFrame *GetFrame() const { return m_previewFrame; }
|
||||||
virtual wxWindow *GetCanvas() const { return m_previewCanvas; }
|
virtual wxPreviewCanvas *GetCanvas() const { return m_previewCanvas; }
|
||||||
|
|
||||||
// The preview canvas should call this from OnPaint
|
// The preview canvas should call this from OnPaint
|
||||||
virtual bool PaintPage(wxWindow *canvas, wxDC& dc);
|
virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc);
|
||||||
|
|
||||||
// This draws a blank page onto the preview canvas
|
// This draws a blank page onto the preview canvas
|
||||||
virtual bool DrawBlankPage(wxWindow *canvas, wxDC& dc);
|
virtual bool DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc);
|
||||||
|
|
||||||
|
// Adjusts the scrollbars for the current scale
|
||||||
|
virtual void AdjustScrollbars(wxPreviewCanvas *canvas);
|
||||||
|
|
||||||
// This is called by wxPrintPreview to render a page into a wxMemoryDC.
|
// This is called by wxPrintPreview to render a page into a wxMemoryDC.
|
||||||
virtual bool RenderPage(int pageNum);
|
virtual bool RenderPage(int pageNum);
|
||||||
@ -362,7 +368,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxPrintDialogData m_printDialogData;
|
wxPrintDialogData m_printDialogData;
|
||||||
wxWindow* m_previewCanvas;
|
wxPreviewCanvas* m_previewCanvas;
|
||||||
wxFrame* m_previewFrame;
|
wxFrame* m_previewFrame;
|
||||||
wxBitmap* m_previewBitmap;
|
wxBitmap* m_previewBitmap;
|
||||||
wxPrintout* m_previewPrintout;
|
wxPrintout* m_previewPrintout;
|
||||||
|
@ -776,10 +776,10 @@ wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData)
|
|||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
m_printDlgData = NULL;
|
m_printDlgData = NULL;
|
||||||
#endif
|
#endif
|
||||||
m_printFromPage = 0;
|
m_printFromPage = 1;
|
||||||
m_printToPage = 0;
|
m_printToPage = 0;
|
||||||
m_printMinPage = 0;
|
m_printMinPage = 1;
|
||||||
m_printMaxPage = 0;
|
m_printMaxPage = 9999;
|
||||||
m_printNoCopies = 1;
|
m_printNoCopies = 1;
|
||||||
m_printAllPages = FALSE;
|
m_printAllPages = FALSE;
|
||||||
m_printCollate = FALSE;
|
m_printCollate = FALSE;
|
||||||
@ -897,7 +897,7 @@ void wxPrintDialogData::ConvertToNative()
|
|||||||
pd->Flags |= PD_NOSELECTION;
|
pd->Flags |= PD_NOSELECTION;
|
||||||
if ( !m_printEnablePageNumbers )
|
if ( !m_printEnablePageNumbers )
|
||||||
pd->Flags |= PD_NOPAGENUMS;
|
pd->Flags |= PD_NOPAGENUMS;
|
||||||
else if ( (!m_printAllPages) && (!m_printSelection) )
|
else if ( (!m_printAllPages) && (!m_printSelection) && (m_printFromPage != 0) && (m_printToPage != 0))
|
||||||
pd->Flags |= PD_PAGENUMS;
|
pd->Flags |= PD_PAGENUMS;
|
||||||
if ( m_printEnableHelp )
|
if ( m_printEnableHelp )
|
||||||
pd->Flags |= PD_SHOWHELP;
|
pd->Flags |= PD_SHOWHELP;
|
||||||
|
@ -70,6 +70,7 @@ END_EVENT_TABLE()
|
|||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxPreviewCanvas, wxScrolledWindow)
|
BEGIN_EVENT_TABLE(wxPreviewCanvas, wxScrolledWindow)
|
||||||
EVT_PAINT(wxPreviewCanvas::OnPaint)
|
EVT_PAINT(wxPreviewCanvas::OnPaint)
|
||||||
|
EVT_CHAR(wxPreviewCanvas::OnChar)
|
||||||
EVT_SYS_COLOUR_CHANGED(wxPreviewCanvas::OnSysColourChanged)
|
EVT_SYS_COLOUR_CHANGED(wxPreviewCanvas::OnSysColourChanged)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
@ -197,7 +198,7 @@ wxScrolledWindow(parent, -1, pos, size, style, name)
|
|||||||
#endif
|
#endif
|
||||||
SetBackgroundColour(wxSystemSettings::GetColour(colourIndex));
|
SetBackgroundColour(wxSystemSettings::GetColour(colourIndex));
|
||||||
|
|
||||||
SetScrollbars(15, 18, 100, 100);
|
SetScrollbars(10, 10, 100, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPreviewCanvas::~wxPreviewCanvas()
|
wxPreviewCanvas::~wxPreviewCanvas()
|
||||||
@ -239,6 +240,38 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event)
|
|||||||
wxWindow::OnSysColourChanged(event);
|
wxWindow::OnSysColourChanged(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxPreviewCanvas::OnChar(wxKeyEvent &event)
|
||||||
|
{
|
||||||
|
if (event.GetKeyCode() == WXK_ESCAPE)
|
||||||
|
{
|
||||||
|
((wxPreviewFrame*) GetParent())->Close(TRUE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!event.ControlDown())
|
||||||
|
{
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPreviewControlBar* controlBar = ((wxPreviewFrame*) GetParent())->GetControlBar();
|
||||||
|
switch(event.GetKeyCode())
|
||||||
|
{
|
||||||
|
case WXK_NEXT:
|
||||||
|
controlBar->OnNext(); break;
|
||||||
|
case WXK_PRIOR:
|
||||||
|
controlBar->OnPrevious(); break;
|
||||||
|
case WXK_HOME:
|
||||||
|
controlBar->OnFirst(); break;
|
||||||
|
case WXK_END:
|
||||||
|
controlBar->OnLast(); break;
|
||||||
|
case WXK_TAB:
|
||||||
|
controlBar->OnGoto(); break;
|
||||||
|
default:
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Preview control bar
|
* Preview control bar
|
||||||
*/
|
*/
|
||||||
@ -251,7 +284,6 @@ BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel)
|
|||||||
EVT_BUTTON(wxID_PREVIEW_FIRST, wxPreviewControlBar::OnFirstButton)
|
EVT_BUTTON(wxID_PREVIEW_FIRST, wxPreviewControlBar::OnFirstButton)
|
||||||
EVT_BUTTON(wxID_PREVIEW_LAST, wxPreviewControlBar::OnLastButton)
|
EVT_BUTTON(wxID_PREVIEW_LAST, wxPreviewControlBar::OnLastButton)
|
||||||
EVT_BUTTON(wxID_PREVIEW_GOTO, wxPreviewControlBar::OnGotoButton)
|
EVT_BUTTON(wxID_PREVIEW_GOTO, wxPreviewControlBar::OnGotoButton)
|
||||||
EVT_CHAR(wxPreviewControlBar::OnChar)
|
|
||||||
EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom)
|
EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom)
|
||||||
EVT_PAINT(wxPreviewControlBar::OnPaint)
|
EVT_PAINT(wxPreviewControlBar::OnPaint)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
@ -297,25 +329,6 @@ void wxPreviewControlBar::OnPrint(wxCommandEvent& WXUNUSED(event))
|
|||||||
preview->Print(TRUE);
|
preview->Print(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxPreviewControlBar::OnChar(wxKeyEvent &event)
|
|
||||||
{
|
|
||||||
switch(event.GetKeyCode())
|
|
||||||
{
|
|
||||||
case WXK_NEXT:
|
|
||||||
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::OnNext(void)
|
void wxPreviewControlBar::OnNext(void)
|
||||||
{
|
{
|
||||||
wxPrintPreviewBase *preview = GetPrintPreview();
|
wxPrintPreviewBase *preview = GetPrintPreview();
|
||||||
@ -384,12 +397,12 @@ void wxPreviewControlBar::OnGoto(void)
|
|||||||
wxString strPrompt;
|
wxString strPrompt;
|
||||||
wxString strPage;
|
wxString strPage;
|
||||||
|
|
||||||
strPrompt.Printf( wxT("%d...%d"),
|
strPrompt.Printf( _("Enter a page number between %d and %d:"),
|
||||||
preview->GetMinPage(), preview->GetMaxPage());
|
preview->GetMinPage(), preview->GetMaxPage());
|
||||||
strPage.Printf( wxT("%d"), preview->GetCurrentPage() );
|
strPage.Printf( wxT("%d"), preview->GetCurrentPage() );
|
||||||
|
|
||||||
strPage =
|
strPage =
|
||||||
wxGetTextFromUser( strPrompt, _("Goto Page"), strPage);
|
wxGetTextFromUser( strPrompt, _("Goto Page"), strPage, GetParent());
|
||||||
|
|
||||||
if ( strPage.ToLong( ¤tPage ) )
|
if ( strPage.ToLong( ¤tPage ) )
|
||||||
if (preview->GetPrintout()->HasPage(currentPage))
|
if (preview->GetPrintout()->HasPage(currentPage))
|
||||||
@ -571,6 +584,10 @@ void wxPreviewFrame::Initialize()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
|
|
||||||
|
m_printPreview->AdjustScrollbars(m_previewCanvas);
|
||||||
|
m_previewCanvas->SetFocus();
|
||||||
|
m_controlBar->SetFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxPreviewFrame::CreateCanvas()
|
void wxPreviewFrame::CreateCanvas()
|
||||||
@ -632,13 +649,8 @@ void wxPrintPreviewBase::Init(wxPrintout *printout,
|
|||||||
m_pageWidth = 0;
|
m_pageWidth = 0;
|
||||||
m_pageHeight = 0;
|
m_pageHeight = 0;
|
||||||
m_printingPrepared = FALSE;
|
m_printingPrepared = FALSE;
|
||||||
|
m_minPage = 1;
|
||||||
// Too soon! Moved to RenderPage.
|
m_maxPage = 1;
|
||||||
// printout->OnPreparePrinting();
|
|
||||||
|
|
||||||
// Get some parameters from the printout, if defined
|
|
||||||
int selFrom, selTo;
|
|
||||||
printout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPrintPreviewBase::~wxPrintPreviewBase()
|
wxPrintPreviewBase::~wxPrintPreviewBase()
|
||||||
@ -662,17 +674,20 @@ bool wxPrintPreviewBase::SetCurrentPage(int pageNum)
|
|||||||
delete m_previewBitmap;
|
delete m_previewBitmap;
|
||||||
m_previewBitmap = NULL;
|
m_previewBitmap = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_previewCanvas)
|
if (m_previewCanvas)
|
||||||
{
|
{
|
||||||
|
AdjustScrollbars(m_previewCanvas);
|
||||||
|
|
||||||
if (!RenderPage(pageNum))
|
if (!RenderPage(pageNum))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
m_previewCanvas->Refresh();
|
m_previewCanvas->Refresh();
|
||||||
|
m_previewCanvas->SetFocus();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc)
|
bool wxPrintPreviewBase::PaintPage(wxPreviewCanvas *canvas, wxDC& dc)
|
||||||
{
|
{
|
||||||
DrawBlankPage(canvas, dc);
|
DrawBlankPage(canvas, dc);
|
||||||
|
|
||||||
@ -708,6 +723,29 @@ bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adjusts the scrollbars for the current scale
|
||||||
|
void wxPrintPreviewBase::AdjustScrollbars(wxPreviewCanvas *canvas)
|
||||||
|
{
|
||||||
|
if (!canvas)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
int canvasWidth, canvasHeight;
|
||||||
|
canvas->GetSize(&canvasWidth, &canvasHeight);
|
||||||
|
|
||||||
|
double zoomScale = ((float)m_currentZoom/(float)100);
|
||||||
|
double actualWidth = (zoomScale*m_pageWidth*m_previewScale);
|
||||||
|
double actualHeight = (zoomScale*m_pageHeight*m_previewScale);
|
||||||
|
|
||||||
|
// Set the scrollbars appropriately
|
||||||
|
int totalWidth = actualWidth + 2*m_leftMargin;
|
||||||
|
int totalHeight = actualHeight + 2*m_topMargin;
|
||||||
|
int scrollUnitsX = totalWidth/10;
|
||||||
|
int scrollUnitsY = totalHeight/10;
|
||||||
|
wxSize virtualSize = canvas->GetVirtualSize();
|
||||||
|
if (virtualSize.GetWidth() != totalWidth || virtualSize.GetHeight() != totalHeight)
|
||||||
|
canvas->SetScrollbars(10, 10, scrollUnitsX, scrollUnitsY, 0, 0, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
bool wxPrintPreviewBase::RenderPage(int pageNum)
|
bool wxPrintPreviewBase::RenderPage(int pageNum)
|
||||||
{
|
{
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
@ -758,6 +796,8 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
|
|||||||
if (!m_printingPrepared)
|
if (!m_printingPrepared)
|
||||||
{
|
{
|
||||||
m_previewPrintout->OnPreparePrinting();
|
m_previewPrintout->OnPreparePrinting();
|
||||||
|
int selFrom, selTo;
|
||||||
|
m_previewPrintout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo);
|
||||||
m_printingPrepared = TRUE;
|
m_printingPrepared = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -797,7 +837,7 @@ bool wxPrintPreviewBase::RenderPage(int pageNum)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc)
|
bool wxPrintPreviewBase::DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc)
|
||||||
{
|
{
|
||||||
int canvasWidth, canvasHeight;
|
int canvasWidth, canvasHeight;
|
||||||
canvas->GetSize(&canvasWidth, &canvasHeight);
|
canvas->GetSize(&canvasWidth, &canvasHeight);
|
||||||
@ -851,10 +891,12 @@ void wxPrintPreviewBase::SetZoom(int percent)
|
|||||||
|
|
||||||
if (m_previewCanvas)
|
if (m_previewCanvas)
|
||||||
{
|
{
|
||||||
|
AdjustScrollbars(m_previewCanvas);
|
||||||
RenderPage(m_currentPage);
|
RenderPage(m_currentPage);
|
||||||
((wxScrolledWindow *) m_previewCanvas)->Scroll(0, 0);
|
((wxScrolledWindow *) m_previewCanvas)->Scroll(0, 0);
|
||||||
m_previewCanvas->Clear();
|
m_previewCanvas->Clear();
|
||||||
m_previewCanvas->Refresh();
|
m_previewCanvas->Refresh();
|
||||||
|
m_previewCanvas->SetFocus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +88,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
|
|
||||||
printout->SetIsPreview(FALSE);
|
printout->SetIsPreview(FALSE);
|
||||||
|
|
||||||
|
#if 0
|
||||||
// 4/9/99, JACS: this is a silly place to allow preparation, considering
|
// 4/9/99, JACS: this is a silly place to allow preparation, considering
|
||||||
// the DC and no parameters have been set in the printout object.
|
// the DC and no parameters have been set in the printout object.
|
||||||
// Moved further down.
|
// Moved further down.
|
||||||
@ -126,7 +127,12 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_printDialogData.EnablePageNumbers(FALSE);
|
m_printDialogData.EnablePageNumbers(FALSE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (m_printDialogData.GetMinPage() < 1)
|
||||||
|
m_printDialogData.SetMinPage(1);
|
||||||
|
if (m_printDialogData.GetMaxPage() < 1)
|
||||||
|
m_printDialogData.SetMaxPage(9999);
|
||||||
|
|
||||||
// Create a suitable device context
|
// Create a suitable device context
|
||||||
wxDC *dc = (wxDC *) NULL;
|
wxDC *dc = (wxDC *) NULL;
|
||||||
@ -171,6 +177,23 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
|||||||
|
|
||||||
printout->OnPreparePrinting();
|
printout->OnPreparePrinting();
|
||||||
|
|
||||||
|
// Get some parameters from the printout, if defined
|
||||||
|
int fromPage, toPage;
|
||||||
|
int minPage, maxPage;
|
||||||
|
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
||||||
|
|
||||||
|
if (maxPage == 0)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
|
wxEndBusyCursor();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only set min and max, because from and to have been
|
||||||
|
// set by the user
|
||||||
|
m_printDialogData.SetMinPage(minPage);
|
||||||
|
m_printDialogData.SetMaxPage(maxPage);
|
||||||
|
|
||||||
int
|
int
|
||||||
pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1,
|
pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1,
|
||||||
totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(),
|
totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(),
|
||||||
|
@ -178,13 +178,11 @@ void wxHtmlPrintout::AddFilter(wxHtmlFilter *filter)
|
|||||||
m_Filters.Append(filter);
|
m_Filters.Append(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
|
void wxHtmlPrintout::OnPreparePrinting()
|
||||||
{
|
{
|
||||||
int pageWidth, pageHeight, mm_w, mm_h, scr_w, scr_h, dc_w, dc_h;
|
int pageWidth, pageHeight, mm_w, mm_h, scr_w, scr_h, dc_w, dc_h;
|
||||||
float ppmm_h, ppmm_v;
|
float ppmm_h, ppmm_v;
|
||||||
|
|
||||||
if (!wxPrintout::OnBeginDocument(startPage, endPage)) return FALSE;
|
|
||||||
|
|
||||||
GetPageSizePixels(&pageWidth, &pageHeight);
|
GetPageSizePixels(&pageWidth, &pageHeight);
|
||||||
GetPageSizeMM(&mm_w, &mm_h);
|
GetPageSizeMM(&mm_w, &mm_h);
|
||||||
ppmm_h = (float)pageWidth / mm_w;
|
ppmm_h = (float)pageWidth / mm_w;
|
||||||
@ -236,6 +234,12 @@ bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
|
|||||||
));
|
));
|
||||||
m_Renderer->SetHtmlText(m_Document, m_BasePath, m_BasePathIsDir);
|
m_Renderer->SetHtmlText(m_Document, m_BasePath, m_BasePathIsDir);
|
||||||
CountPages();
|
CountPages();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
|
||||||
|
{
|
||||||
|
if (!wxPrintout::OnBeginDocument(startPage, endPage)) return FALSE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,9 +260,9 @@ bool wxHtmlPrintout::OnPrintPage(int page)
|
|||||||
void wxHtmlPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
|
void wxHtmlPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
|
||||||
{
|
{
|
||||||
*minPage = 1;
|
*minPage = 1;
|
||||||
*maxPage = wxHTML_PRINT_MAX_PAGES;
|
*maxPage = m_NumPages;
|
||||||
*selPageFrom = 1;
|
*selPageFrom = 1;
|
||||||
*selPageTo = wxHTML_PRINT_MAX_PAGES;
|
*selPageTo = m_NumPages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -535,38 +535,11 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
printout->SetIsPreview(FALSE);
|
printout->SetIsPreview(FALSE);
|
||||||
printout->OnPreparePrinting();
|
if (m_printDialogData.GetMinPage() < 1)
|
||||||
|
m_printDialogData.SetMinPage(1);
|
||||||
// Get some parameters from the printout, if defined
|
if (m_printDialogData.GetMaxPage() < 1)
|
||||||
int fromPage, toPage;
|
m_printDialogData.SetMaxPage(9999);
|
||||||
int minPage, maxPage;
|
|
||||||
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
|
||||||
|
|
||||||
if (maxPage == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
m_printDialogData.SetMinPage(minPage);
|
|
||||||
m_printDialogData.SetMaxPage(maxPage);
|
|
||||||
if (fromPage != 0)
|
|
||||||
m_printDialogData.SetFromPage(fromPage);
|
|
||||||
if (toPage != 0)
|
|
||||||
m_printDialogData.SetToPage(toPage);
|
|
||||||
|
|
||||||
if (minPage != 0)
|
|
||||||
{
|
|
||||||
m_printDialogData.EnablePageNumbers(TRUE);
|
|
||||||
if (m_printDialogData.GetFromPage() < m_printDialogData.GetMinPage())
|
|
||||||
m_printDialogData.SetFromPage(m_printDialogData.GetMinPage());
|
|
||||||
else if (m_printDialogData.GetFromPage() > m_printDialogData.GetMaxPage())
|
|
||||||
m_printDialogData.SetFromPage(m_printDialogData.GetMaxPage());
|
|
||||||
if (m_printDialogData.GetToPage() > m_printDialogData.GetMaxPage())
|
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetMaxPage());
|
|
||||||
else if (m_printDialogData.GetToPage() < m_printDialogData.GetMinPage())
|
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetMinPage());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_printDialogData.EnablePageNumbers(FALSE);
|
|
||||||
|
|
||||||
// Create a suitable device context
|
// Create a suitable device context
|
||||||
wxDC *dc = NULL;
|
wxDC *dc = NULL;
|
||||||
if (prompt)
|
if (prompt)
|
||||||
@ -609,6 +582,24 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
|||||||
// Create an abort window
|
// Create an abort window
|
||||||
wxBeginBusyCursor();
|
wxBeginBusyCursor();
|
||||||
|
|
||||||
|
printout->OnPreparePrinting();
|
||||||
|
|
||||||
|
// Get some parameters from the printout, if defined
|
||||||
|
int fromPage, toPage;
|
||||||
|
int minPage, maxPage;
|
||||||
|
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
||||||
|
|
||||||
|
if (maxPage == 0)
|
||||||
|
{
|
||||||
|
wxEndBusyCursor();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only set min and max, because from and to have been
|
||||||
|
// set by the user
|
||||||
|
m_printDialogData.SetMinPage(minPage);
|
||||||
|
m_printDialogData.SetMaxPage(maxPage);
|
||||||
|
|
||||||
wxWindow *win = CreateAbortWindow(parent, printout);
|
wxWindow *win = CreateAbortWindow(parent, printout);
|
||||||
wxSafeYield(win,true);
|
wxSafeYield(win,true);
|
||||||
|
|
||||||
|
@ -535,38 +535,11 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
printout->SetIsPreview(FALSE);
|
printout->SetIsPreview(FALSE);
|
||||||
printout->OnPreparePrinting();
|
if (m_printDialogData.GetMinPage() < 1)
|
||||||
|
m_printDialogData.SetMinPage(1);
|
||||||
// Get some parameters from the printout, if defined
|
if (m_printDialogData.GetMaxPage() < 1)
|
||||||
int fromPage, toPage;
|
m_printDialogData.SetMaxPage(9999);
|
||||||
int minPage, maxPage;
|
|
||||||
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
|
||||||
|
|
||||||
if (maxPage == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
m_printDialogData.SetMinPage(minPage);
|
|
||||||
m_printDialogData.SetMaxPage(maxPage);
|
|
||||||
if (fromPage != 0)
|
|
||||||
m_printDialogData.SetFromPage(fromPage);
|
|
||||||
if (toPage != 0)
|
|
||||||
m_printDialogData.SetToPage(toPage);
|
|
||||||
|
|
||||||
if (minPage != 0)
|
|
||||||
{
|
|
||||||
m_printDialogData.EnablePageNumbers(TRUE);
|
|
||||||
if (m_printDialogData.GetFromPage() < m_printDialogData.GetMinPage())
|
|
||||||
m_printDialogData.SetFromPage(m_printDialogData.GetMinPage());
|
|
||||||
else if (m_printDialogData.GetFromPage() > m_printDialogData.GetMaxPage())
|
|
||||||
m_printDialogData.SetFromPage(m_printDialogData.GetMaxPage());
|
|
||||||
if (m_printDialogData.GetToPage() > m_printDialogData.GetMaxPage())
|
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetMaxPage());
|
|
||||||
else if (m_printDialogData.GetToPage() < m_printDialogData.GetMinPage())
|
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetMinPage());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_printDialogData.EnablePageNumbers(FALSE);
|
|
||||||
|
|
||||||
// Create a suitable device context
|
// Create a suitable device context
|
||||||
wxDC *dc = NULL;
|
wxDC *dc = NULL;
|
||||||
if (prompt)
|
if (prompt)
|
||||||
@ -609,6 +582,24 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
|
|||||||
// Create an abort window
|
// Create an abort window
|
||||||
wxBeginBusyCursor();
|
wxBeginBusyCursor();
|
||||||
|
|
||||||
|
printout->OnPreparePrinting();
|
||||||
|
|
||||||
|
// Get some parameters from the printout, if defined
|
||||||
|
int fromPage, toPage;
|
||||||
|
int minPage, maxPage;
|
||||||
|
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
||||||
|
|
||||||
|
if (maxPage == 0)
|
||||||
|
{
|
||||||
|
wxEndBusyCursor();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only set min and max, because from and to have been
|
||||||
|
// set by the user
|
||||||
|
m_printDialogData.SetMinPage(minPage);
|
||||||
|
m_printDialogData.SetMaxPage(maxPage);
|
||||||
|
|
||||||
wxWindow *win = CreateAbortWindow(parent, printout);
|
wxWindow *win = CreateAbortWindow(parent, printout);
|
||||||
wxSafeYield(win,true);
|
wxSafeYield(win,true);
|
||||||
|
|
||||||
|
@ -107,43 +107,10 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
|
|
||||||
printout->SetIsPreview(FALSE);
|
printout->SetIsPreview(FALSE);
|
||||||
|
|
||||||
// 4/9/99, JACS: this is a silly place to allow preparation, considering
|
if (m_printDialogData.GetMinPage() < 1)
|
||||||
// the DC and no parameters have been set in the printout object.
|
m_printDialogData.SetMinPage(1);
|
||||||
// Moved further down.
|
if (m_printDialogData.GetMaxPage() < 1)
|
||||||
// printout->OnPreparePrinting();
|
m_printDialogData.SetMaxPage(9999);
|
||||||
|
|
||||||
// Get some parameters from the printout, if defined
|
|
||||||
int fromPage, toPage;
|
|
||||||
int minPage, maxPage;
|
|
||||||
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
|
||||||
|
|
||||||
if (maxPage == 0)
|
|
||||||
{
|
|
||||||
sm_lastError = wxPRINTER_ERROR;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_printDialogData.SetMinPage(minPage);
|
|
||||||
m_printDialogData.SetMaxPage(maxPage);
|
|
||||||
if (fromPage != 0)
|
|
||||||
m_printDialogData.SetFromPage(fromPage);
|
|
||||||
if (toPage != 0)
|
|
||||||
m_printDialogData.SetToPage(toPage);
|
|
||||||
|
|
||||||
if (minPage != 0)
|
|
||||||
{
|
|
||||||
m_printDialogData.EnablePageNumbers(TRUE);
|
|
||||||
if (m_printDialogData.GetFromPage() < m_printDialogData.GetMinPage())
|
|
||||||
m_printDialogData.SetFromPage(m_printDialogData.GetMinPage());
|
|
||||||
else if (m_printDialogData.GetFromPage() > m_printDialogData.GetMaxPage())
|
|
||||||
m_printDialogData.SetFromPage(m_printDialogData.GetMaxPage());
|
|
||||||
if (m_printDialogData.GetToPage() > m_printDialogData.GetMaxPage())
|
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetMaxPage());
|
|
||||||
else if (m_printDialogData.GetToPage() < m_printDialogData.GetMinPage())
|
|
||||||
m_printDialogData.SetToPage(m_printDialogData.GetMinPage());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_printDialogData.EnablePageNumbers(FALSE);
|
|
||||||
|
|
||||||
// Create a suitable device context
|
// Create a suitable device context
|
||||||
wxDC *dc = NULL;
|
wxDC *dc = NULL;
|
||||||
@ -155,7 +122,6 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// dc = new wxPrinterDC("", "", "", FALSE, m_printData.GetOrientation());
|
|
||||||
dc = new wxPrinterDC(m_printDialogData.GetPrintData());
|
dc = new wxPrinterDC(m_printDialogData.GetPrintData());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,6 +169,23 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
|
|||||||
|
|
||||||
printout->OnPreparePrinting();
|
printout->OnPreparePrinting();
|
||||||
|
|
||||||
|
// Get some parameters from the printout, if defined
|
||||||
|
int fromPage, toPage;
|
||||||
|
int minPage, maxPage;
|
||||||
|
printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
|
||||||
|
|
||||||
|
if (maxPage == 0)
|
||||||
|
{
|
||||||
|
sm_lastError = wxPRINTER_ERROR;
|
||||||
|
wxEndBusyCursor();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only set min and max, because from and to have been
|
||||||
|
// set by the user
|
||||||
|
m_printDialogData.SetMinPage(minPage);
|
||||||
|
m_printDialogData.SetMaxPage(maxPage);
|
||||||
|
|
||||||
wxWindow *win = CreateAbortWindow(parent, printout);
|
wxWindow *win = CreateAbortWindow(parent, printout);
|
||||||
wxYield();
|
wxYield();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user