bool FOOTPRINT_EDIT_FRAME::SaveFootprint( MODULE* aModule ) { wxString libraryName = aModule->GetFPID().GetLibNickname(); wxString footprintName = aModule->GetFPID().GetLibItemName(); bool nameChanged = m_footprintNameWhenLoaded != footprintName; if( aModule->GetLink() ) { if( SaveFootprintToBoard( false ) ) { m_footprintNameWhenLoaded = footprintName; return true; } else return false; } else if( libraryName.IsEmpty() || footprintName.IsEmpty() ) { if( SaveFootprintAs( aModule ) ) { m_footprintNameWhenLoaded = footprintName; SyncLibraryTree( true ); return true; } else return false; } FP_LIB_TABLE* tbl = Prj().PcbFootprintLibs(); // Legacy libraries are readable, but modifying legacy format is not allowed // So prompt the user if he try to add/replace a footprint in a legacy lib wxString libfullname = tbl->FindRow( libraryName )->GetFullURI(); if( IO_MGR::GuessPluginTypeFromLibPath( libfullname ) == IO_MGR::LEGACY ) { DisplayInfoMessage( this, INFO_LEGACY_LIB_WARN_EDIT ); return false; } if( nameChanged ) { LIB_ID oldFPID( libraryName, m_footprintNameWhenLoaded ); DeleteModuleFromLibrary( oldFPID, false ); } if( !saveFootprintInLibrary( aModule, libraryName ) ) return false; if( nameChanged ) { m_footprintNameWhenLoaded = footprintName; SyncLibraryTree( true ); } return true; }
void FOOTPRINT_VIEWER_FRAME::UpdateTitle() { wxString title; wxString path; title.Printf( _( "Footprint Library Browser" ) + L" \u2014 %s", getCurNickname().size() ? getCurNickname() : _( "no library selected" ) ); // Now, add the full path, for info if( getCurNickname().size() ) { FP_LIB_TABLE* libtable = Prj().PcbFootprintLibs(); const LIB_TABLE_ROW* row = libtable->FindRow( getCurNickname() ); if( row ) title << L" \u2014 " << row->GetFullURI( true ); } SetTitle( title ); }