wxString LIB_CIRCLE::GetSelectMenuText() const { return wxString::Format( _( "Circle center (%s, %s), radius %s" ), GetChars( CoordinateToString( m_Pos.x ) ), GetChars( CoordinateToString( m_Pos.y ) ), GetChars( CoordinateToString( m_Radius ) ) ); }
wxString LIB_POLYLINE::GetSelectMenuText() const { return wxString::Format( _( "Polyline at (%s, %s) with %d points" ), GetChars( CoordinateToString( m_PolyPoints[0].x ) ), GetChars( CoordinateToString( m_PolyPoints[0].y ) ), int( m_PolyPoints.size() ) ); }
wxString LIB_CIRCLE::GetSelectMenuText() const { return wxString::Format( _( "Circle center (%s, %s), radius %s" ), GetChars( CoordinateToString( m_Pos.x, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Pos.y, EESCHEMA_INTERNAL_UNIT ) ), GetChars( CoordinateToString( m_Radius, EESCHEMA_INTERNAL_UNIT ) ) ); }
wxString LIB_RECTANGLE::GetSelectMenuText() const { return wxString::Format( _( "Rectangle from (%s, %s) to (%s, %s)" ), GetChars( CoordinateToString( m_Pos.x ) ), GetChars( CoordinateToString( m_Pos.y ) ), GetChars( CoordinateToString( m_End.x ) ), GetChars( CoordinateToString( m_End.y ) ) ); }
wxString& operator <<( wxString& aString, const wxPoint& aPos ) { aString << wxT( "@ (" ) << CoordinateToString( aPos.x ); aString << wxT( "," ) << CoordinateToString( aPos.y ); aString << wxT( ")" ); return aString; }
void DIALOG_NETLIST::OnTestFootprintsClick( wxCommandEvent& event ) { if( m_parent->GetBoard()->m_Modules == NULL ) { DisplayInfoMessage( this, _( "No footprints" ) ); return; } // Lists of duplicates, missing references and not in netlist footprints: std::vector <MODULE*> duplicate; wxArrayString missing; std::vector <MODULE*> notInNetlist; wxString netlistFilename = m_NetlistFilenameCtrl->GetValue(); if( !verifyFootprints( netlistFilename, wxEmptyString, duplicate, missing, notInNetlist ) ) return; #define ERR_CNT_MAX 100 // Max number of errors to output in dialog // to avoid a too long message list wxString list; // The messages to display m_parent->SetLastNetListRead( netlistFilename ); int err_cnt = 0; // Search for duplicate footprints. if( duplicate.size() == 0 ) list << wxT("<p><b>") << _( "No duplicate." ) << wxT("</b></p>"); else { list << wxT("<p><b>") << _( "Duplicates:" ) << wxT("</b></p>"); for( unsigned ii = 0; ii < duplicate.size(); ii++ ) { MODULE* module = duplicate[ii]; if( module->GetReference().IsEmpty() ) list << wxT("<br>") << wxT("[noref)"); else list << wxT("<br>") << module->GetReference(); list << wxT(" (<i>") << module->GetValue() << wxT("</i>)"); list << wxT(" @ "); list << CoordinateToString( module->GetPosition().x ), list << wxT(", ") << CoordinateToString( module->GetPosition().y ), err_cnt++; if( ERR_CNT_MAX < err_cnt ) break; } } // Search for missing modules on board. if( missing.size() == 0 ) list << wxT("<p><b>") << _( "No missing footprints." ) << wxT("</b></p>"); else { list << wxT("<p><b>") << _( "Missing:" ) << wxT("</b></p>"); for( unsigned ii = 0; ii < missing.size(); ii += 2 ) { list << wxT("<br>") << missing[ii]; list << wxT(" (<i>") << missing[ii+1] << wxT("</i>)"); err_cnt++; if( ERR_CNT_MAX < err_cnt ) break; } } // Search for modules found on board but not in net list. if( notInNetlist.size() == 0 ) list << wxT( "<p><b>" ) << _( "No extra footprints." ) << wxT( "</b></p>" ); else { list << wxT( "<p><b>" ) << _( "Not in Netlist:" ) << wxT( "</b></p>" ); for( unsigned ii = 0; ii < notInNetlist.size(); ii++ ) { MODULE* module = notInNetlist[ii]; if( module->GetReference().IsEmpty() ) list << wxT( "<br>" ) << wxT( "[noref)" ); else list << wxT( "<br>" ) << module->GetReference() ; list << wxT( " (<i>" ) << module->GetValue() << wxT( "</i>)" ); list << wxT( " @ " ); list << CoordinateToString( module->GetPosition().x ), list << wxT( ", " ) << CoordinateToString( module->GetPosition().y ), err_cnt++; if( ERR_CNT_MAX < err_cnt ) break; } } if( ERR_CNT_MAX < err_cnt ) { list << wxT( "<p><b>" ) << _( "Too many errors: some are skipped" ) << wxT( "</b></p>" ); } HTML_MESSAGE_BOX dlg( this, _( "Check footprints" ) ); dlg.AddHTML_Text( list ); dlg.ShowModal(); }