Symbol editor: allow to inject the symbol list into DIALOG_LIB_FIELDS

This will permit editing fields for subsets (e.g. only symbols in
a certain inheritance hierarchy)
This commit is contained in:
John Beard 2025-09-02 18:28:23 +08:00
parent 1f1f8699e0
commit 9b14434fc3
3 changed files with 12 additions and 13 deletions

View File

@ -235,13 +235,13 @@ protected:
}; };
DIALOG_LIB_FIELDS::DIALOG_LIB_FIELDS( SYMBOL_EDIT_FRAME* parent, wxString libId ) : DIALOG_LIB_FIELDS::DIALOG_LIB_FIELDS( SYMBOL_EDIT_FRAME* parent, wxString libId, const wxArrayString& aSymbolNames ) :
DIALOG_LIB_FIELDS_BASE( parent, wxID_ANY, wxString::Format( _( "Symbol Library Fields: %s" ), libId ) ), DIALOG_LIB_FIELDS_BASE( parent, wxID_ANY, wxString::Format( _( "Symbol Library Fields: %s" ), libId ) ),
m_libId( libId ), m_libId( libId ),
m_parent( parent ) m_parent( parent )
{ {
// Get all symbols from the library // Get all symbols from the library
loadSymbols(); loadSymbols( aSymbolNames );
m_bRefresh->SetBitmap( KiBitmapBundle( BITMAPS::small_refresh ) ); m_bRefresh->SetBitmap( KiBitmapBundle( BITMAPS::small_refresh ) );
@ -392,25 +392,21 @@ void DIALOG_LIB_FIELDS::OnInit()
} }
void DIALOG_LIB_FIELDS::loadSymbols() void DIALOG_LIB_FIELDS::loadSymbols( const wxArrayString& aSymbolNames )
{ {
// Clear any existing data // Clear any existing data
m_symbolsList.clear(); m_symbolsList.clear();
try try
{ {
// Get all symbol names from the library manager if( aSymbolNames.IsEmpty() )
wxArrayString symbolNames;
m_parent->GetLibManager().GetSymbolNames( m_libId, symbolNames );
if( symbolNames.IsEmpty() )
{ {
wxMessageBox( wxString::Format( _( "No symbols found in library %s." ), m_libId ) ); wxMessageBox( wxString::Format( _( "No symbols found in library %s." ), m_libId ) );
return; return;
} }
// Load each symbol from the library manager and add it to our list // Load each symbol from the library manager and add it to our list
for( const wxString& symbolName : symbolNames ) for( const wxString& symbolName : aSymbolNames )
{ {
LIB_SYMBOL* symbol = nullptr; LIB_SYMBOL* symbol = nullptr;
@ -1154,4 +1150,3 @@ void DIALOG_LIB_FIELDS::SetupAllColumnProperties()
m_dataModel->SetSorting( sortCol, sortAscending ); m_dataModel->SetSorting( sortCol, sortAscending );
m_grid->SetSortingColumn( sortCol, sortAscending ); m_grid->SetSortingColumn( sortCol, sortAscending );
} }

View File

@ -30,7 +30,7 @@ class LIB_SYMBOL;
class DIALOG_LIB_FIELDS : public DIALOG_LIB_FIELDS_BASE class DIALOG_LIB_FIELDS : public DIALOG_LIB_FIELDS_BASE
{ {
public: public:
DIALOG_LIB_FIELDS( SYMBOL_EDIT_FRAME* parent, wxString libId ); DIALOG_LIB_FIELDS( SYMBOL_EDIT_FRAME* parent, wxString libId, const wxArrayString& aSymbolNames );
~DIALOG_LIB_FIELDS() override; ~DIALOG_LIB_FIELDS() override;
void OnInit(); void OnInit();
@ -68,7 +68,7 @@ private:
void SetupColumnProperties( int aCol ); void SetupColumnProperties( int aCol );
void SetupAllColumnProperties(); void SetupAllColumnProperties();
void loadSymbols(); void loadSymbols( const wxArrayString& aSymbolNames );
wxString m_libId; wxString m_libId;
SYMBOL_EDIT_FRAME* m_parent; SYMBOL_EDIT_FRAME* m_parent;

View File

@ -921,7 +921,11 @@ int SYMBOL_EDITOR_CONTROL::ShowLibraryTable( const TOOL_EVENT& aEvent )
SYMBOL_EDIT_FRAME* editFrame = getEditFrame<SYMBOL_EDIT_FRAME>(); SYMBOL_EDIT_FRAME* editFrame = getEditFrame<SYMBOL_EDIT_FRAME>();
wxString libName = editFrame->GetTreeLIBID().GetLibNickname(); wxString libName = editFrame->GetTreeLIBID().GetLibNickname();
DIALOG_LIB_FIELDS dlg( editFrame, libName ); // Get all symbol names from the library manager
wxArrayString symbolNames;
editFrame->GetLibManager().GetSymbolNames( libName, symbolNames );
DIALOG_LIB_FIELDS dlg( editFrame, libName, symbolNames );
dlg.SetTitle( _( "Library Fields" ) ); dlg.SetTitle( _( "Library Fields" ) );
dlg.ShowModal(); dlg.ShowModal();
return 0; return 0;