bool ROUTER_TOOL::prepareInteractive() { int routingLayer = getStartLayer ( m_startItem ); m_frame->SetActiveLayer( ToLAYER_ID ( routingLayer ) ); // fixme: switch on invisible layer if( m_startItem && m_startItem->Net() >= 0 ) { highlightNet( true, m_startItem->Net() ); // Update track width and via size shown in main toolbar comboboxes m_frame->SetCurrentNetClass( m_startItem->Parent()->GetNetClass()->GetName() ); } else m_frame->SetCurrentNetClass( NETCLASS::Default ); m_ctls->ForceCursorPosition( false ); m_ctls->SetAutoPan( true ); PNS_SIZES_SETTINGS sizes ( m_router->Sizes() ); sizes.Init ( m_board, m_startItem ); sizes.AddLayerPair ( m_frame->GetScreen()->m_Route_Layer_TOP, m_frame->GetScreen()->m_Route_Layer_BOTTOM ); m_router->UpdateSizes( sizes ); if ( !m_router->StartRouting( m_startSnapPoint, m_startItem, routingLayer ) ) { wxMessageBox ( m_router->FailureReason(), _( "Error" ) ); highlightNet ( false ); return false; } m_endItem = NULL; m_endSnapPoint = m_startSnapPoint; return true; }