Clean up file format error message a bit more

If a FUTURE_FORMAT_ERROR wraps another FUTURE_FORMAT_ERROR, only print
the error for it once.
This commit is contained in:
Chris Pavlina 2017-01-27 07:27:53 -05:00
parent 3ffc17c27b
commit 498e8b122a
1 changed files with 18 additions and 8 deletions

View File

@ -2,7 +2,7 @@
* 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) 2007-2016 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2007-2016 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 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
@ -90,13 +90,23 @@ void PARSE_ERROR::init( const wxString& aProblem, const char* aThrowersFile,
FUTURE_FORMAT_ERROR::FUTURE_FORMAT_ERROR( const PARSE_ERROR& aParseError, const wxString& aRequiredVersion ) : FUTURE_FORMAT_ERROR::FUTURE_FORMAT_ERROR( const PARSE_ERROR& aParseError, const wxString& aRequiredVersion ) :
PARSE_ERROR(), requiredVersion( aRequiredVersion ) PARSE_ERROR(), requiredVersion( aRequiredVersion )
{ {
problem.Printf( _( // Avoid double-printing the error message
"KiCad was unable to open this file, as it was created with a more " bool wrapped_same_type = !!( dynamic_cast<const FUTURE_FORMAT_ERROR *>( &aParseError ) );
"recent version than the one you are running. To open it, you'll need "
"to upgrade KiCad to a more recent version.\n\n" if( wrapped_same_type )
"Date of KiCad version required (or newer): %s\n\n" {
"Full error text:\n%s" ), problem = aParseError.Problem();
requiredVersion, aParseError.Problem() ); }
else
{
problem.Printf( _(
"KiCad was unable to open this file, as it was created with a more "
"recent version than the one you are running. To open it, you'll need "
"to upgrade KiCad to a more recent version.\n\n"
"Date of KiCad version required (or newer): %s\n\n"
"Full error text:\n%s" ),
requiredVersion, aParseError.Problem() );
}
lineNumber = aParseError.lineNumber; lineNumber = aParseError.lineNumber;
byteIndex = aParseError.byteIndex; byteIndex = aParseError.byteIndex;