const LIB_TABLE_ROW* LIB_TABLE::FindRowByURI( const wxString& aURI ) { LIB_TABLE* cur = this; do { cur->ensureIndex(); for( unsigned i = 0; i < cur->rows.size(); i++ ) { wxString tmp = cur->rows[i].GetFullURI( true ); if( tmp.Find( "://" ) != wxNOT_FOUND ) { if( tmp == aURI ) return &cur->rows[i]; // found as URI } else { wxFileName fn = aURI; // This will also test if the file is a symlink so if we are comparing // a symlink to the same real file, the comparison will be true. See // wxFileName::SameAs() in the wxWidgets source. if( fn == wxFileName( tmp ) ) return &cur->rows[i]; // found as full path and file name } } // not found, search fall back table(s), if any } while( ( cur = cur->fallBack ) != 0 ); return NULL; // not found }
const LIB_TABLE_ROW* LIB_TABLE::FindRowByURI( const wxString& aURI ) { LIB_TABLE* cur = this; do { cur->ensureIndex(); for( unsigned i = 0; i < cur->rows.size(); i++ ) { wxString uri = cur->rows[i].GetFullURI( true ); if( wxFileName::GetPathSeparator() == wxChar( '\\' ) && uri.Find( wxChar( '/' ) ) >= 0 ) uri.Replace( "/", "\\" ); if( (wxFileName::IsCaseSensitive() && uri == aURI) || (!wxFileName::IsCaseSensitive() && uri.Upper() == aURI.Upper() ) ) { return &cur->rows[i]; // found } } // not found, search fall back table(s), if any } while( ( cur = cur->fallBack ) != 0 ); return NULL; // not found }
LIB_TABLE_ROW* LIB_TABLE::findRow( const wxString& aNickName ) { LIB_TABLE* cur = (LIB_TABLE*) this; do { cur->ensureIndex(); INDEX_ITER it = cur->nickIndex.find( aNickName ); if( it != cur->nickIndex.end() ) { return &cur->rows[it->second]; // found } // not found, search fall back table(s), if any } while( ( cur = cur->fallBack ) != 0 ); return NULL; // not found }
bool FOOTPRINT_VIEWER_FRAME::ShowModal( wxString* aFootprint, wxWindow* aParent ) { if( aFootprint && !aFootprint->IsEmpty() ) { wxString msg; LIB_TABLE* fpTable = Prj().PcbFootprintLibs(); LIB_ID fpid; fpid.Parse( *aFootprint, LIB_ID::ID_PCB, true ); if( fpid.IsValid() ) { wxString nickname = fpid.GetLibNickname(); if( !fpTable->HasLibrary( fpid.GetLibNickname(), false ) ) { msg.sprintf( _( "The current configuration does not include a library with the\n" "nickname \"%s\". Use Manage Footprint Libraries\n" "to edit the configuration." ), nickname ); DisplayErrorMessage( aParent, _( "Footprint library not found." ), msg ); } else if ( !fpTable->HasLibrary( fpid.GetLibNickname(), true ) ) { msg.sprintf( _( "The library with the nickname \"%s\" is not enabled\n" "in the current configuration. Use Manage Footprint Libraries to\n" "edit the configuration." ), nickname ); DisplayErrorMessage( aParent, _( "Footprint library not enabled." ), msg ); } else { setCurNickname( nickname ); setCurFootprintName( fpid.GetLibItemName() ); ReCreateFootprintList(); } SelectAndViewFootprint( NEW_PART ); } } return KIWAY_PLAYER::ShowModal( aFootprint, aParent ); }
bool LIB_VIEW_FRAME::ShowModal( wxString* aSymbol, wxWindow* aParent ) { if( aSymbol && !aSymbol->IsEmpty() ) { wxString msg; LIB_TABLE* libTable = Prj().SchSymbolLibTable(); LIB_ID libid; libid.Parse( *aSymbol, LIB_ID::ID_SCH, true ); if( libid.IsValid() ) { wxString nickname = libid.GetLibNickname(); if( !libTable->HasLibrary( libid.GetLibNickname(), false ) ) { msg.sprintf( _( "The current configuration does not include a library with the\n" "nickname \"%s\". Use Manage Symbol Libraries\n" "to edit the configuration." ), nickname ); DisplayErrorMessage( aParent, _( "Symbol library not found." ), msg ); } else if ( !libTable->HasLibrary( libid.GetLibNickname(), true ) ) { msg.sprintf( _( "The library with the nickname \"%s\" is not enabled\n" "in the current configuration. Use Manage Symbol Libraries to\n" "edit the configuration." ), nickname ); DisplayErrorMessage( aParent, _( "Symbol library not enabled." ), msg ); } else { SetSelectedLibrary( libid.GetLibNickname() ); SetSelectedComponent( libid.GetLibItemName() ); } } } return KIWAY_PLAYER::ShowModal( aSymbol, aParent ); }