From 64e1e419c88e2166dc3df3e19fdd502a1fcafd7c Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Wed, 9 Jul 2014 11:22:43 +0200 Subject: [PATCH] Next/previous footprint toolbar buttons are handled in the Module Viewer using GAL canvas. --- pcbnew/modview_frame.cpp | 33 ++++++++++++++++++++------------- pcbnew/modview_frame.h | 5 +++-- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/pcbnew/modview_frame.cpp b/pcbnew/modview_frame.cpp index 0a50ed6eb9..cd0622fd12 100644 --- a/pcbnew/modview_frame.cpp +++ b/pcbnew/modview_frame.cpp @@ -356,6 +356,15 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList() } +void FOOTPRINT_VIEWER_FRAME::UseGalCanvas( bool aEnable ) +{ + EDA_DRAW_FRAME::UseGalCanvas( aEnable ); + + if( aEnable ) + GetGalCanvas()->StartDrawing(); +} + + void FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList() { m_footprintList->Clear(); @@ -455,15 +464,7 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event ) UpdateTitle(); if( IsGalCanvasActive() ) - { - static_cast( GetGalCanvas() )->DisplayBoard( m_Pcb ); - - // Autozoom - m_Pcb->ComputeBoundingBox( false ); - EDA_RECT boardBbox = m_Pcb->GetBoundingBox(); - GetGalCanvas()->GetView()->SetViewport( BOX2D( boardBbox.GetOrigin(), - boardBbox.GetSize() ) ); - } + redrawGal(); Zoom_Automatique( false ); m_canvas->Refresh(); @@ -846,8 +847,12 @@ void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode ) GetBoard()->Add( footprint, ADD_APPEND ); Update3D_Frame(); + + if( IsGalCanvasActive() ) + redrawGal(); } + UpdateTitle(); Zoom_Automatique( false ); m_canvas->Refresh(); @@ -873,10 +878,12 @@ void FOOTPRINT_VIEWER_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) } -void FOOTPRINT_VIEWER_FRAME::UseGalCanvas( bool aEnable ) +void FOOTPRINT_VIEWER_FRAME::redrawGal() { - EDA_DRAW_FRAME::UseGalCanvas( aEnable ); + static_cast( GetGalCanvas() )->DisplayBoard( m_Pcb ); - if( aEnable ) - GetGalCanvas()->StartDrawing(); + // Autozoom + m_Pcb->ComputeBoundingBox( false ); + EDA_RECT boardBbox = m_Pcb->GetBoundingBox(); + GetGalCanvas()->GetView()->SetViewport( BOX2D( boardBbox.GetOrigin(), boardBbox.GetSize() ) ); } diff --git a/pcbnew/modview_frame.h b/pcbnew/modview_frame.h index 0301cfd52f..4dd1210979 100644 --- a/pcbnew/modview_frame.h +++ b/pcbnew/modview_frame.h @@ -69,6 +69,8 @@ public: */ void ReCreateLibraryList(); + ///> @copydoc EDA_DRAW_FRAME::UseGalCanvas() + virtual void UseGalCanvas( bool aEnable ); private: @@ -170,8 +172,7 @@ private: void SaveCopyInUndoList( BOARD_ITEM*, UNDO_REDO_T, const wxPoint& ) {} void SaveCopyInUndoList( const PICKED_ITEMS_LIST&, UNDO_REDO_T, const wxPoint &) {} - ///> @copydoc EDA_DRAW_FRAME::UseGalCanvas() - virtual void UseGalCanvas( bool aEnable ); + void redrawGal(); DECLARE_EVENT_TABLE() };