More detailed error messages when loading Gerber or drill files and if no room to load some files.

This commit is contained in:
jean-pierre charras 2017-01-26 13:16:49 +01:00
parent 361c0c2e21
commit aac13e7ae1
1 changed files with 75 additions and 14 deletions

View File

@ -34,6 +34,7 @@
#include <common.h>
#include <class_drawpanel.h>
#include <reporter.h>
#include <html_messagebox.h>
#include <gerbview_frame.h>
#include <gerbview_id.h>
@ -197,8 +198,13 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName )
}
// Read gerber files: each file is loaded on a new GerbView layer
bool success = true;
int layer = getActiveLayer();
// Manage errors when loading files
wxString msg;
WX_STRING_REPORTER reporter( &msg );
for( unsigned ii = 0; ii < filenamesList.GetCount(); ii++ )
{
filename = filenamesList[ii];
@ -216,11 +222,23 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName )
layer = getNextAvailableLayer( layer );
if( layer == NO_AVAILABLE_LAYERS )
if( layer == NO_AVAILABLE_LAYERS && ii < filenamesList.GetCount()-1 )
{
wxString msg = wxT( "No more empty available layers.\n"
"The remaining gerber files will not be loaded." );
wxMessageBox( msg );
success = false;
reporter.Report( _( "No available graphic layer in Gerbview to load files" ),
REPORTER::RPT_ERROR );
// Report the name of not loaded files:
ii += 1;
while( ii < filenamesList.GetCount() )
{
filename = filenamesList[ii++];
wxString txt;
txt.Printf( _( "\nNot loaded: '%s'" ),
GetChars( filename.GetFullName() ) );
reporter.Report( txt, REPORTER::RPT_ERROR );
}
break;
}
@ -228,6 +246,13 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName )
}
}
if( !success )
{
HTML_MESSAGE_BOX mbox( this, _( "Errors" ) );
mbox.ListSet( msg );
mbox.ShowModal();
}
Zoom_Automatique( false );
// Synchronize layers tools with actual active layer:
@ -235,7 +260,7 @@ bool GERBVIEW_FRAME::LoadGerberFiles( const wxString& aFullFileName )
setActiveLayer( getActiveLayer() );
m_LayersManager->UpdateLayerIcons();
syncLayerBox();
return true;
return success;
}
@ -280,9 +305,14 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName )
m_mruPath = currentPath;
}
// Read gerber files: each file is loaded on a new GerbView layer
// Read Excellon drill files: each file is loaded on a new GerbView layer
bool success = true;
int layer = getActiveLayer();
// Manage errors when loading files
wxString msg;
WX_STRING_REPORTER reporter( &msg );
for( unsigned ii = 0; ii < filenamesList.GetCount(); ii++ )
{
filename = filenamesList[ii];
@ -301,11 +331,23 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName )
layer = getNextAvailableLayer( layer );
if( layer == NO_AVAILABLE_LAYERS )
if( layer == NO_AVAILABLE_LAYERS && ii < filenamesList.GetCount()-1 )
{
wxString msg = wxT( "No more empty available layers.\n"
"The remaining gerber files will not be loaded." );
wxMessageBox( msg );
success = false;
reporter.Report( _( "No available graphic layer in Gerbview to load files" ),
REPORTER::RPT_ERROR );
// Report the name of not loaded files:
ii += 1;
while( ii < filenamesList.GetCount() )
{
filename = filenamesList[ii++];
wxString txt;
txt.Printf( _( "\nNot loaded: '%s'" ),
GetChars( filename.GetFullName() ) );
reporter.Report( txt, REPORTER::RPT_ERROR );
}
break;
}
@ -313,6 +355,13 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName )
}
}
if( !success )
{
HTML_MESSAGE_BOX mbox( this, _( "Errors" ) );
mbox.ListSet( msg );
mbox.ShowModal();
}
Zoom_Automatique( false );
// Synchronize layers tools with actual active layer:
@ -321,7 +370,7 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName )
m_LayersManager->UpdateLayerIcons();
syncLayerBox();
return true;
return success;
}
@ -430,9 +479,17 @@ bool GERBVIEW_FRAME::unarchiveFiles( const wxString& aFullFileName, REPORTER* aR
if( aReporter )
{
msg = _( "No available graphic layer in Gerbview.\n"
"The remaining files will not be loaded." );
msg = _( "No available graphic layer in Gerbview to load files" );
aReporter->Report( msg, REPORTER::RPT_ERROR );
// Report the name of not loaded files:
while( !localfilename.IsEmpty() )
{
msg.Printf( _( "\nNot loaded: '%s'" ),
GetChars( localfilename.AfterLast( ':' ) ) );
aReporter->Report( msg, REPORTER::RPT_ERROR );
localfilename = zipfilesys.FindNext();
}
}
break;
}
@ -487,7 +544,11 @@ bool GERBVIEW_FRAME::LoadZipArchiveFile( const wxString& aFullFileName )
bool success = unarchiveFiles( filename.GetFullPath(), &reporter );
if( !success )
wxMessageBox( msg );
{
HTML_MESSAGE_BOX mbox( this, _( "Errors" ) );
mbox.ListSet( msg );
mbox.ShowModal();
}
}
Zoom_Automatique( false );