diff --git a/eeschema/libedit.cpp b/eeschema/libedit.cpp index c22deaea94..8e37b8ebc5 100644 --- a/eeschema/libedit.cpp +++ b/eeschema/libedit.cpp @@ -45,6 +45,9 @@ #include #include +#include +#include + #include @@ -533,30 +536,33 @@ void LIB_EDIT_FRAME::DeleteOnePart( wxCommandEvent& event ) } } - lib->GetAliasNames( nameList ); + COMPONENT_TREE_SEARCH_CONTAINER search_container( Prj().SchLibs() ); - if( nameList.IsEmpty() ) + search_container.AddLibrary( *lib ); + + wxString dialogTitle; + dialogTitle.Printf( _( "Delete Component (%u items loaded)" ), search_container.GetComponentsCount() ); + + DIALOG_CHOOSE_COMPONENT dlg( this, dialogTitle, &search_container, m_convert ); + + if( dlg.ShowModal() == wxID_CANCEL ) { - msg.Printf( _( "Part library '%s' is empty." ), GetChars( lib->GetName() ) ); - wxMessageBox( msg, _( "Delete Entry Error" ), wxID_OK | wxICON_EXCLAMATION, this ); return; } - msg.Printf( _( "Select one of %d components to delete\nfrom library '%s'." ), - int( nameList.GetCount() ), - GetChars( lib->GetName() ) ); + LIB_ALIAS* const alias = dlg.GetSelectedAlias( &m_unit ); - wxSingleChoiceDialog dlg( this, msg, _( "Delete Part" ), nameList ); - - if( dlg.ShowModal() == wxID_CANCEL || dlg.GetStringSelection().IsEmpty() ) + if( !alias || !alias->GetLib() ) + { return; + } - libEntry = lib->FindAlias( dlg.GetStringSelection() ); + libEntry = lib->FindAlias( alias->GetName() ); if( !libEntry ) { msg.Printf( _( "Entry '%s' not found in library '%s'." ), - GetChars( dlg.GetStringSelection() ), + GetChars( alias->GetName() ), GetChars( lib->GetName() ) ); DisplayError( this, msg ); return;