Added MODULE::RunOnChildren().
This commit is contained in:
parent
32065b339a
commit
e4efe212d6
|
@ -200,46 +200,25 @@ void PCB_BASE_FRAME::ViewReloadBoard( const BOARD* aBoard ) const
|
|||
KIGFX::VIEW* view = m_galCanvas->GetView();
|
||||
view->Clear();
|
||||
|
||||
// All of PCB drawing elements should be added to the VIEW
|
||||
// in order to be displayed
|
||||
// All the PCB drawable items should be added to the VIEW in order to be displayed
|
||||
|
||||
// Load zones
|
||||
for( int i = 0; i < aBoard->GetAreaCount(); ++i )
|
||||
{
|
||||
view->Add( (KIGFX::VIEW_ITEM*) ( aBoard->GetArea( i ) ) );
|
||||
}
|
||||
|
||||
// Load drawings
|
||||
for( BOARD_ITEM* drawing = aBoard->m_Drawings; drawing; drawing = drawing->Next() )
|
||||
{
|
||||
view->Add( drawing );
|
||||
}
|
||||
|
||||
// Load tracks
|
||||
for( TRACK* track = aBoard->m_Track; track; track = track->Next() )
|
||||
{
|
||||
view->Add( track );
|
||||
}
|
||||
|
||||
// Load modules and its additional elements
|
||||
for( MODULE* module = aBoard->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
// Load module's pads
|
||||
for( D_PAD* pad = module->Pads().GetFirst(); pad; pad = pad->Next() )
|
||||
{
|
||||
view->Add( pad );
|
||||
}
|
||||
|
||||
// Load module's drawing (mostly silkscreen)
|
||||
for( BOARD_ITEM* drawing = module->GraphicalItems().GetFirst(); drawing;
|
||||
drawing = drawing->Next() )
|
||||
{
|
||||
view->Add( drawing );
|
||||
}
|
||||
|
||||
// Load module's texts (name and value)
|
||||
view->Add( &module->Reference() );
|
||||
view->Add( &module->Value() );
|
||||
// Load items that belong to a module
|
||||
module->RunOnChildren( std::bind1st( std::mem_fun( &KIGFX::VIEW::Add ), view ) );
|
||||
|
||||
// Add the module itself
|
||||
view->Add( module );
|
||||
|
@ -247,9 +226,7 @@ void PCB_BASE_FRAME::ViewReloadBoard( const BOARD* aBoard ) const
|
|||
|
||||
// Segzones (equivalent of ZONE_CONTAINER for legacy boards)
|
||||
for( SEGZONE* zone = aBoard->m_Zone; zone; zone = zone->Next() )
|
||||
{
|
||||
view->Add( zone );
|
||||
}
|
||||
|
||||
// Add an entry for the worksheet layout
|
||||
KIGFX::WORKSHEET_VIEWITEM* worksheet = new KIGFX::WORKSHEET_VIEWITEM(
|
||||
|
|
|
@ -728,6 +728,19 @@ EDA_ITEM* MODULE::Clone() const
|
|||
}
|
||||
|
||||
|
||||
void MODULE::RunOnChildren( boost::function<void (BOARD_ITEM*)> aFunction )
|
||||
{
|
||||
for( D_PAD* pad = m_Pads.GetFirst(); pad; pad = pad->Next() )
|
||||
aFunction( static_cast<BOARD_ITEM*>( pad ) );
|
||||
|
||||
for( BOARD_ITEM* drawing = m_Drawings.GetFirst(); drawing; drawing = drawing->Next() )
|
||||
aFunction( drawing );
|
||||
|
||||
aFunction( static_cast<BOARD_ITEM*>( m_Reference ) );
|
||||
aFunction( static_cast<BOARD_ITEM*>( m_Value ) );
|
||||
}
|
||||
|
||||
|
||||
void MODULE::ViewUpdate( int aUpdateFlags )
|
||||
{
|
||||
if( !m_view )
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include <PolyLine.h>
|
||||
#include "zones.h"
|
||||
|
||||
#include <boost/function.hpp>
|
||||
|
||||
class LINE_READER;
|
||||
class EDA_3D_CANVAS;
|
||||
|
@ -447,6 +448,14 @@ public:
|
|||
|
||||
EDA_ITEM* Clone() const;
|
||||
|
||||
/**
|
||||
* Function RunOnChildren
|
||||
*
|
||||
* Invokes a function on all BOARD_ITEMs that belong to the module (pads, drawings, texts).
|
||||
* @param aFunction is the function to be invoked.
|
||||
*/
|
||||
void RunOnChildren( boost::function<void (BOARD_ITEM*)> aFunction );
|
||||
|
||||
/// @copydoc VIEW_ITEM::ViewUpdate()
|
||||
void ViewUpdate( int aUpdateFlags );
|
||||
|
||||
|
|
Loading…
Reference in New Issue