Pcbnew: GEDA plugin fixes and improvements.
Fix a bug in library cache modification check. The Pcbnew footprint file extension (.kicad_mod) was used instead of the GEDA footprint file extension (.fp) which always caused the cache to reload on every library call. Allow for partially cached libraries rather. Remove #ifdefed out exception throw in FootprintEnumerate(). Exceptions should not be disabled in plugins.
This commit is contained in:
parent
33e0758636
commit
d37a33723a
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2016 Wayne Stambaugh <stambaughw@verizon.net>
|
* Copyright (C) 2012-2017 Wayne Stambaugh <stambaughw@verizon.net>
|
||||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -326,11 +326,10 @@ void GPCB_FPL_CACHE::Load()
|
||||||
catch( const IO_ERROR& ioe )
|
catch( const IO_ERROR& ioe )
|
||||||
{
|
{
|
||||||
if( !cacheErrorMsg.IsEmpty() )
|
if( !cacheErrorMsg.IsEmpty() )
|
||||||
cacheErrorMsg += "\n";
|
cacheErrorMsg += "\n\n";
|
||||||
|
|
||||||
cacheErrorMsg += ioe.What();
|
cacheErrorMsg += ioe.What();
|
||||||
}
|
}
|
||||||
|
|
||||||
} while( dir.GetNext( &fpFileName ) );
|
} while( dir.GetNext( &fpFileName ) );
|
||||||
|
|
||||||
// Remember the file modification time of library file when the
|
// Remember the file modification time of library file when the
|
||||||
|
@ -338,10 +337,8 @@ void GPCB_FPL_CACHE::Load()
|
||||||
// reload the cache as needed.
|
// reload the cache as needed.
|
||||||
m_mod_time = GetLibModificationTime();
|
m_mod_time = GetLibModificationTime();
|
||||||
|
|
||||||
#if 0
|
|
||||||
if( !cacheErrorMsg.IsEmpty() )
|
if( !cacheErrorMsg.IsEmpty() )
|
||||||
THROW_IO_ERROR( cacheErrorMsg );
|
THROW_IO_ERROR( cacheErrorMsg );
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -390,7 +387,7 @@ bool GPCB_FPL_CACHE::IsModified( const wxString& aLibPath, const wxString& aFoot
|
||||||
wxFileName fn = m_lib_path;
|
wxFileName fn = m_lib_path;
|
||||||
|
|
||||||
fn.SetName( it->second->GetFileName().GetName() );
|
fn.SetName( it->second->GetFileName().GetName() );
|
||||||
fn.SetExt( KiCadFootprintFileExtension );
|
fn.SetExt( GedaPcbFootprintLibFileExtension );
|
||||||
|
|
||||||
if( !fn.FileExists() )
|
if( !fn.FileExists() )
|
||||||
{
|
{
|
||||||
|
@ -989,30 +986,28 @@ wxArrayString GPCB_PLUGIN::FootprintEnumerate( const wxString& aLibraryPath,
|
||||||
|
|
||||||
init( aProperties );
|
init( aProperties );
|
||||||
|
|
||||||
#if 1 // Set to 0 to only read directory contents, not load cache.
|
wxString errorMsg;
|
||||||
|
|
||||||
cacheLib( aLibraryPath );
|
// Some of the files may have been parsed correctly so we want to add the valid files to
|
||||||
|
// the library.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cacheLib( aLibraryPath );
|
||||||
|
}
|
||||||
|
catch( const IO_ERROR& ioe )
|
||||||
|
{
|
||||||
|
errorMsg = ioe.What();
|
||||||
|
}
|
||||||
|
|
||||||
const MODULE_MAP& mods = m_cache->GetModules();
|
const MODULE_MAP& mods = m_cache->GetModules();
|
||||||
|
|
||||||
|
|
||||||
for( MODULE_CITER it = mods.begin(); it != mods.end(); ++it )
|
for( MODULE_CITER it = mods.begin(); it != mods.end(); ++it )
|
||||||
{
|
{
|
||||||
ret.Add( FROM_UTF8( it->first.c_str() ) );
|
ret.Add( FROM_UTF8( it->first.c_str() ) );
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
wxString fpFileName;
|
|
||||||
wxString wildcard = wxT( "*." ) + GedaPcbFootprintLibFileExtension;
|
|
||||||
|
|
||||||
if( dir.GetFirst( &fpFileName, wildcard, wxDIR_FILES ) )
|
if( !errorMsg.IsEmpty() )
|
||||||
{
|
THROW_IO_ERROR( errorMsg );
|
||||||
do
|
|
||||||
{
|
|
||||||
wxFileName fn( aLibraryPath, fpFileName );
|
|
||||||
ret.Add( fn.GetName() );
|
|
||||||
} while( dir.GetNext( &fpFileName ) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue