libedit: Improved selection process for DeleteComponent

- Reused SelectComponent dialog
- Reduced selection to current library only
- Ability to filter component for deletion
This commit is contained in:
Oliver 2017-02-02 21:38:34 +11:00 committed by Chris Pavlina
parent 702795f4a9
commit 4ba0fef8c1
1 changed files with 18 additions and 12 deletions

View File

@ -45,6 +45,9 @@
#include <template_fieldnames.h>
#include <wildcards_and_files_ext.h>
#include <dialog_choose_component.h>
#include <component_tree_search_container.h>
#include <dialogs/dialog_lib_new_component.h>
@ -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;