Show all symbol libraries by default.
Also fixes an issue where the plugin wasn't getting reset if the library type was changed.
This commit is contained in:
parent
e7e1d5140e
commit
33480ecad1
|
@ -56,6 +56,8 @@ void FP_LIB_TABLE_ROW::SetType( const wxString& aType )
|
||||||
|
|
||||||
if( IO_MGR::PCB_FILE_T( -1 ) == type )
|
if( IO_MGR::PCB_FILE_T( -1 ) == type )
|
||||||
type = IO_MGR::KICAD_SEXP;
|
type = IO_MGR::KICAD_SEXP;
|
||||||
|
|
||||||
|
plugin.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -91,8 +91,11 @@ wxString AddFileExtListToFilter( const std::vector<std::string>& aExts )
|
||||||
wxString files_filter = " (";
|
wxString files_filter = " (";
|
||||||
|
|
||||||
// Add extensions to the info message:
|
// Add extensions to the info message:
|
||||||
for( const auto& ext : aExts )
|
for( const std::string& ext : aExts )
|
||||||
{
|
{
|
||||||
|
if( files_filter.length() > 2 )
|
||||||
|
files_filter << "; ";
|
||||||
|
|
||||||
files_filter << "*." << ext;
|
files_filter << "*." << ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,6 +193,12 @@ wxString LegacySymbolLibFileWildcard()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString AllSymbolLibFilesWildcard()
|
||||||
|
{
|
||||||
|
return _( "All KiCad symbol library files" ) + AddFileExtListToFilter( { "kicad_sym", "lib" } );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
wxString ProjectFileWildcard()
|
wxString ProjectFileWildcard()
|
||||||
{
|
{
|
||||||
return _( "KiCad project files" ) + AddFileExtListToFilter( { "kicad_pro" } );
|
return _( "KiCad project files" ) + AddFileExtListToFilter( { "kicad_pro" } );
|
||||||
|
|
|
@ -397,6 +397,39 @@ bool PANEL_SYM_LIB_TABLE::verifyTables()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for( SYMBOL_LIB_TABLE* table : { global_model(), project_model() } )
|
||||||
|
{
|
||||||
|
for( unsigned int r = 0; r < table->GetCount(); ++r )
|
||||||
|
{
|
||||||
|
SYMBOL_LIB_TABLE_ROW& row = dynamic_cast<SYMBOL_LIB_TABLE_ROW&>( table->At( r ) );
|
||||||
|
|
||||||
|
if( !row.GetIsEnabled() )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if( row.Refresh() )
|
||||||
|
{
|
||||||
|
if( table == global_model() )
|
||||||
|
m_parent->m_GlobalTableChanged = true;
|
||||||
|
else
|
||||||
|
m_parent->m_ProjectTableChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch( const IO_ERROR& ioe )
|
||||||
|
{
|
||||||
|
wxString msg = wxString::Format( _( "Symbol library \"%s\" failed to load.\n %s" ),
|
||||||
|
row.GetNickName(),
|
||||||
|
ioe.What() );
|
||||||
|
|
||||||
|
wxMessageDialog errdlg( this, msg, _( "Error Loading Library" ) );
|
||||||
|
errdlg.ShowModal();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,12 +443,11 @@ void PANEL_SYM_LIB_TABLE::pageChangedHandler( wxAuiNotebookEvent& event )
|
||||||
|
|
||||||
void PANEL_SYM_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
|
void PANEL_SYM_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
wxString wildcards = KiCadSymbolLibFileWildcard();
|
wxString wildcards = AllSymbolLibFilesWildcard()
|
||||||
|
+ "|" + KiCadSymbolLibFileWildcard()
|
||||||
|
+ "|" + LegacySymbolLibFileWildcard();
|
||||||
|
|
||||||
wildcards += "|" + LegacySymbolLibFileWildcard();
|
wxFileDialog dlg( this, _( "Select Library" ), m_lastBrowseDir, wxEmptyString, wildcards,
|
||||||
|
|
||||||
wxFileDialog dlg( this, _( "Select Library" ), m_lastBrowseDir,
|
|
||||||
wxEmptyString, wildcards,
|
|
||||||
wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE );
|
wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE );
|
||||||
|
|
||||||
auto result = dlg.ShowModal();
|
auto result = dlg.ShowModal();
|
||||||
|
@ -847,8 +879,7 @@ void InvokeSchEditSymbolLibTable( KIWAY* aKiway, wxWindow *aParent )
|
||||||
if( libEditor )
|
if( libEditor )
|
||||||
{
|
{
|
||||||
// Check if the currently selected symbol library been removed or disabled.
|
// Check if the currently selected symbol library been removed or disabled.
|
||||||
if( !currentLib.empty()
|
if( !currentLib.empty() && !projectTable->HasLibrary( currentLib, true ) )
|
||||||
&& !projectTable->HasLibrary( currentLib, true ) )
|
|
||||||
{
|
{
|
||||||
libEditor->SetCurLib( wxEmptyString );
|
libEditor->SetCurLib( wxEmptyString );
|
||||||
libEditor->emptyScreen();
|
libEditor->emptyScreen();
|
||||||
|
|
|
@ -66,6 +66,23 @@ void SYMBOL_LIB_TABLE_ROW::SetType( const wxString& aType )
|
||||||
|
|
||||||
if( SCH_IO_MGR::SCH_FILE_T( -1 ) == type )
|
if( SCH_IO_MGR::SCH_FILE_T( -1 ) == type )
|
||||||
type = SCH_IO_MGR::SCH_LEGACY;
|
type = SCH_IO_MGR::SCH_LEGACY;
|
||||||
|
|
||||||
|
plugin.release();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SYMBOL_LIB_TABLE_ROW::Refresh()
|
||||||
|
{
|
||||||
|
if( !plugin )
|
||||||
|
{
|
||||||
|
wxArrayString dummyList;
|
||||||
|
|
||||||
|
plugin.set( SCH_IO_MGR::FindPlugin( type ) );
|
||||||
|
plugin->EnumerateSymbolLib( dummyList, GetFullURI( true ), GetProperties() );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,13 @@ public:
|
||||||
*/
|
*/
|
||||||
void SetType( const wxString& aType ) override;
|
void SetType( const wxString& aType ) override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to reload the library.
|
||||||
|
* @return true if a reload was required.
|
||||||
|
* @throws IO_ERROR if the reload was unsuccessful.
|
||||||
|
*/
|
||||||
|
bool Refresh();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SYMBOL_LIB_TABLE_ROW( const SYMBOL_LIB_TABLE_ROW& aRow ) :
|
SYMBOL_LIB_TABLE_ROW( const SYMBOL_LIB_TABLE_ROW& aRow ) :
|
||||||
LIB_TABLE_ROW( aRow ),
|
LIB_TABLE_ROW( aRow ),
|
||||||
|
|
|
@ -95,7 +95,7 @@ void SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync( bool aForce,
|
||||||
it = deleteLibrary( it );
|
it = deleteLibrary( it );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if( m_libMgr->GetLibraryHash( name ) != m_libHashes[name] )
|
else if( aForce || m_libMgr->GetLibraryHash( name ) != m_libHashes[name] )
|
||||||
{
|
{
|
||||||
updateLibrary( *(LIB_TREE_NODE_LIB*) it->get() );
|
updateLibrary( *(LIB_TREE_NODE_LIB*) it->get() );
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,8 @@ void SYMBOL_TREE_SYNCHRONIZING_ADAPTER::updateLibrary( LIB_TREE_NODE_LIB& aLibNo
|
||||||
for( auto nodeIt = aLibNode.m_Children.begin(); nodeIt != aLibNode.m_Children.end(); /**/ )
|
for( auto nodeIt = aLibNode.m_Children.begin(); nodeIt != aLibNode.m_Children.end(); /**/ )
|
||||||
{
|
{
|
||||||
auto aliasIt = std::find_if( aliases.begin(), aliases.end(),
|
auto aliasIt = std::find_if( aliases.begin(), aliases.end(),
|
||||||
[&] ( const LIB_PART* a ) {
|
[&] ( const LIB_PART* a )
|
||||||
|
{
|
||||||
return a->GetName() == (*nodeIt)->m_Name;
|
return a->GetName() == (*nodeIt)->m_Name;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,7 @@ extern wxString PageLayoutDescrFileWildcard();
|
||||||
extern wxString SchematicSymbolFileWildcard();
|
extern wxString SchematicSymbolFileWildcard();
|
||||||
extern wxString KiCadSymbolLibFileWildcard();
|
extern wxString KiCadSymbolLibFileWildcard();
|
||||||
extern wxString LegacySymbolLibFileWildcard();
|
extern wxString LegacySymbolLibFileWildcard();
|
||||||
|
extern wxString AllSymbolLibFilesWildcard();
|
||||||
extern wxString ProjectFileWildcard();
|
extern wxString ProjectFileWildcard();
|
||||||
extern wxString LegacyProjectFileWildcard();
|
extern wxString LegacyProjectFileWildcard();
|
||||||
extern wxString AllProjectFilesWildcard();
|
extern wxString AllProjectFilesWildcard();
|
||||||
|
|
Loading…
Reference in New Issue