modview: Re-instate the try/catch block when loading
Setting up the footprint viewer will attempt to load the current footprint. If the library does not exist, the loader will throw an IO_ERROR that needs to be caught. Fixes: lp:1789626 * https://bugs.launchpad.net/kicad/+bug/1789626
This commit is contained in:
parent
d6b95236a4
commit
ee12fe6eff
|
@ -634,16 +634,30 @@ bool FOOTPRINT_VIEWER_FRAME::ShowModal( wxString* aFootprint, wxWindow* aResulta
|
||||||
if( aFootprint && !aFootprint->IsEmpty() )
|
if( aFootprint && !aFootprint->IsEmpty() )
|
||||||
{
|
{
|
||||||
LIB_ID fpid;
|
LIB_ID fpid;
|
||||||
|
// Loading the footprint will throw an IO Error on a missing footprint library
|
||||||
fpid.Parse( *aFootprint, LIB_ID::ID_PCB, true );
|
try
|
||||||
|
|
||||||
if( fpid.IsValid() )
|
|
||||||
{
|
{
|
||||||
setCurNickname( fpid.GetLibNickname() );
|
fpid.Parse( *aFootprint, LIB_ID::ID_PCB, true );
|
||||||
setCurFootprintName( fpid.GetLibItemName() );
|
|
||||||
ReCreateFootprintList();
|
if( fpid.IsValid() )
|
||||||
SelectAndViewFootprint( NEW_PART );
|
{
|
||||||
|
setCurNickname( fpid.GetLibNickname() );
|
||||||
|
setCurFootprintName( fpid.GetLibItemName() );
|
||||||
|
ReCreateFootprintList();
|
||||||
|
SelectAndViewFootprint( NEW_PART );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch( const IO_ERROR& ioe )
|
||||||
|
{
|
||||||
|
wxString msg = wxString::Format(
|
||||||
|
_( "Could not load footprint \"%s\" from library \"%s\".\n\nError %s." ),
|
||||||
|
GetChars( fpid.GetLibItemName() ),
|
||||||
|
GetChars( fpid.GetLibNickname() ),
|
||||||
|
GetChars( ioe.What() ) );
|
||||||
|
|
||||||
|
DisplayError( this, msg );
|
||||||
|
}
|
||||||
|
catch( ... ) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
return KIWAY_PLAYER::ShowModal( aFootprint, aResultantFocusWindow );
|
return KIWAY_PLAYER::ShowModal( aFootprint, aResultantFocusWindow );
|
||||||
|
|
Loading…
Reference in New Issue