*) Change LEGACY_PLUGIN to respect saving and loading of UNDEFINED_DRILL_DIAMETER.

*) Allow building without defining 
        USE_NEW_PCBNEW_LOAD & USE_NEW_PCBNEW_SAVE.
	pcbnew/files.cpp would not link.
This commit is contained in:
Dick Hollenbeck 2012-04-08 14:01:54 -05:00
parent 9c16a218c0
commit 149f6d807d
2 changed files with 33 additions and 10 deletions

View File

@ -456,8 +456,10 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
pcbFileName = GetScreen()->GetFileName();
#if defined( USE_NEW_PCBNEW_LOAD ) || defined( USE_NEW_PCBNEW_SAVE )
if( pcbFileName.GetExt().IsEmpty() )
pcbFileName.SetExt( IO_MGR::GetFileExtension( (IO_MGR::PCB_FILE_T) wildcardIndex ) );
#endif
if( !IsWritable( pcbFileName ) )
return false;
@ -468,9 +470,8 @@ bool PCB_EDIT_FRAME::SavePcbFile( const wxString& aFileName, bool aCreateBackupF
backupFileName = pcbFileName;
backupFileName.SetExt( pcbBackupFileExtension );
/* If an old backup file exists, delete it. If an old board file exists, rename
* it to the backup file name
*/
// If an old backup file exists, delete it. If an old board file exists, rename
// it to the backup file name.
if( pcbFileName.FileExists() )
{
// Remove the old file xxx.000 if it exists.

View File

@ -317,11 +317,15 @@ void LEGACY_PLUGIN::checkVersion()
int ver = 1; // if sccanf fails
sscanf( line, "PCBNEW-BOARD Version %d", &ver );
#if !defined(DEBUG)
if( ver > LEGACY_BOARD_FILE_VERSION )
{
m_error.Printf( VERSION_ERROR_FORMAT, ver );
// "File '%s' is format version: %d.\nI only support format version <= %d.\nPlease upgrade PCBNew to load this file."
m_error.Printf( VERSION_ERROR_FORMAT,
m_reader->GetSource().GetData(), ver, LEGACY_BOARD_FILE_VERSION );
THROW_IO_ERROR( m_error );
}
#endif
m_loading_format_version = ver;
}
@ -343,8 +347,14 @@ void LEGACY_PLUGIN::loadGENERAL()
{
#if defined(USE_PCBNEW_NANOMETRES)
diskToBiu = 1000000.0;
#elif defined(DEBUG)
// mm to deci-mils:
// advanced testing of round tripping only, not supported in non DEBUG build
diskToBiu = 10000/25.4;
#else
THROW_IO_ERROR( _( "May not load new *.brd file into 'PCBNew compiled for deci-mils'" ) );
THROW_IO_ERROR( _( "May not load millimeter *.brd file into 'PCBNew compiled for deci-mils'" ) );
#endif
}
}
@ -1887,7 +1897,7 @@ void LEGACY_PLUGIN::loadTrackList( TRACK* aInsertBeforeMe, int aStructType )
// optional 7th drill parameter (must be optional in an old format?)
data = strtok( (char*) data, delims );
BIU drill = data ? biuParse( data ) : -1; // SetDefault() if -1
BIU drill = data ? biuParse( data ) : -1; // SetDefault() if < 0
// Read the 2nd line to determine the exact type, one of:
// PCB_TRACE_T, PCB_VIA_T, or PCB_ZONE_T. The type field in 2nd line
@ -1952,7 +1962,7 @@ void LEGACY_PLUGIN::loadTrackList( TRACK* aInsertBeforeMe, int aStructType )
newTrack->SetWidth( width );
newTrack->SetShape( shape );
if( drill <= 0 )
if( drill < 0 )
newTrack->SetDrillDefault();
else
newTrack->SetDrill( drill );
@ -2619,6 +2629,17 @@ BIU LEGACY_PLUGIN::biuParse( const char* aValue, const char** nptrptr )
if( nptrptr )
*nptrptr = nptr;
#if defined(DEBUG)
if( diskToBiu == 10000/25.4 )
{
// this is the special reverse trip mm -> deci-mils testing run,
// only available in DEBUG mode.
return BIU( wxRound( fval * diskToBiu ) );
}
#endif
// There should be no rounding issues here, since the values in the file initially
// came from integers via biuFmt(). In fact this product should be an integer, exactly.
return BIU( fval * diskToBiu );
@ -2911,6 +2932,8 @@ void LEGACY_PLUGIN::saveSETUP() const
fprintf( m_fp, "AuxiliaryAxisOrg %s\n", fmtBIUPoint( m_board->GetOriginAxisPosition() ).c_str() );
fprintf( m_fp, "VisibleElements %X\n", bds.GetVisibleElements() );
{
STRING_FORMATTER sf;
@ -2924,8 +2947,6 @@ void LEGACY_PLUGIN::saveSETUP() const
fprintf( m_fp, "PcbPlotParams %s\n", TO_UTF8( record ) );
}
fprintf( m_fp, "VisibleElements %X\n", bds.GetVisibleElements() );
fprintf( m_fp, "$EndSETUP\n\n" );
}
@ -3454,7 +3475,8 @@ void LEGACY_PLUGIN::saveTRACK( const TRACK* me ) const
fmtBIUPoint( me->GetStart() ).c_str(),
fmtBIUPoint( me->GetEnd() ).c_str(),
fmtBIU( me->GetWidth() ).c_str(),
fmtBIU( me->GetDrill() ).c_str() );
me->GetDrill() == UNDEFINED_DRILL_DIAMETER ?
"-1" : fmtBIU( me->GetDrill() ).c_str() );
fprintf(m_fp, "De %d %d %d %lX %X\n",
me->GetLayer(), type, me->GetNet(),