diff --git a/eeschema/sch_file_versions.h b/eeschema/sch_file_versions.h index 21e9104222..42d8275c71 100644 --- a/eeschema/sch_file_versions.h +++ b/eeschema/sch_file_versions.h @@ -61,4 +61,5 @@ //#define SEXPR_SCHEMATIC_FILE_VERSION 20210125 // R/W uuids for pins, labels, wires, etc. //#define SEXPR_SCHEMATIC_FILE_VERSION 20210126 // Fix bug with writing pin uuids. //#define SEXPR_SCHEMATIC_FILE_VERSION 20210406 // Add schematic level uuids. -#define SEXPR_SCHEMATIC_FILE_VERSION 20210606 // Change overbar syntax from `~...~` to `~{...}`. +//#define SEXPR_SCHEMATIC_FILE_VERSION 20210606 // Change overbar syntax from `~...~` to `~{...}`. +#define SEXPR_SCHEMATIC_FILE_VERSION 20210615 // Update overbar syntax in net names diff --git a/pcbnew/plugins/kicad/pcb_parser.cpp b/pcbnew/plugins/kicad/pcb_parser.cpp index 80d73d45c4..c2e68366a2 100644 --- a/pcbnew/plugins/kicad/pcb_parser.cpp +++ b/pcbnew/plugins/kicad/pcb_parser.cpp @@ -295,8 +295,8 @@ void PCB_PARSER::parseEDA_TEXT( EDA_TEXT* aText ) wxCHECK_RET( CurTok() == T_effects, wxT( "Cannot parse " ) + GetTokenString( CurTok() ) + wxT( " as EDA_TEXT." ) ); - // In version 20210606 the notation for overbars was changed from `~...~` to `~{...}`. We need to convert - // the old syntax to the new one. + // In version 20210606 the notation for overbars was changed from `~...~` to `~{...}`. + // We need to convert the old syntax to the new one. if( m_requiredVersion < 20210606 ) aText->SetText( ConvertToNewOverbarNotation( aText->GetText() ) ); @@ -2092,6 +2092,11 @@ void PCB_PARSER::parseNETINFO_ITEM() NeedSYMBOLorNUMBER(); wxString name = FromUTF8(); + // Convert overbar syntax from `~...~` to `~{...}`. These were left out of the first merge + // so the version is a bit later. + if( m_requiredVersion < 20210615 ) + name = ConvertToNewOverbarNotation( name ); + NeedRIGHT(); // net 0 should be already in list, so store this net @@ -2166,7 +2171,14 @@ void PCB_PARSER::parseNETCLASS() case T_add_net: NeedSYMBOLorNUMBER(); - nc->Add( FromUTF8() ); + + // Convert overbar syntax from `~...~` to `~{...}`. These were left out of the + // first merge so the version is a bit later. + if( m_requiredVersion < 20210615 ) + nc->Add( ConvertToNewOverbarNotation( FromUTF8() ) ); + else + nc->Add( FromUTF8() ); + break; default: @@ -3968,17 +3980,26 @@ PAD* PCB_PARSER::parsePAD( FOOTPRINT* aParent ) NeedSYMBOLorNUMBER(); // Test validity of the netname in file for netcodes expected having a net name - if( m_board && pad->GetNetCode() > 0 && - FromUTF8() != m_board->FindNet( pad->GetNetCode() )->GetNetname() ) + if( m_board && pad->GetNetCode() > 0 ) { - pad->SetNetCode( NETINFO_LIST::ORPHANED, /* aNoAssert */ true ); - wxLogError( wxString::Format( _( "Net name doesn't match net ID in\n" - "file: '%s'\n" - "line: %d\n" - "offset: %d" ), - CurSource(), - CurLineNumber(), - CurOffset() ) ); + wxString netName( FromUTF8() ); + + // Convert overbar syntax from `~...~` to `~{...}`. These were left out of the + // first merge so the version is a bit later. + if( m_requiredVersion < 20210615 ) + netName = ConvertToNewOverbarNotation( netName ); + + if( netName != m_board->FindNet( pad->GetNetCode() )->GetNetname() ) + { + pad->SetNetCode( NETINFO_LIST::ORPHANED, /* aNoAssert */ true ); + wxLogError( wxString::Format( _( "Net name doesn't match net ID in\n" + "file: '%s'\n" + "line: %d\n" + "offset: %d" ), + CurSource(), + CurLineNumber(), + CurOffset() ) ); + } } NeedRIGHT(); diff --git a/pcbnew/plugins/legacy/legacy_plugin.cpp b/pcbnew/plugins/legacy/legacy_plugin.cpp index d0f07642b7..a8ab8d2ae1 100644 --- a/pcbnew/plugins/legacy/legacy_plugin.cpp +++ b/pcbnew/plugins/legacy/legacy_plugin.cpp @@ -1541,8 +1541,10 @@ void LEGACY_PLUGIN::loadPAD( FOOTPRINT* aFootprint ) ReadDelimitedText( buf, data, sizeof(buf) ); if( m_board ) + { wxASSERT( m_board->FindNet( getNetCode( netcode ) )->GetNetname() - == FROM_UTF8( StrPurge( buf ) ) ); + == ConvertToNewOverbarNotation( FROM_UTF8( StrPurge( buf ) ) ) ); + } } else if( TESTLINE( "Po" ) ) // (Po)sition @@ -1791,6 +1793,7 @@ void LEGACY_PLUGIN::loadMODULE_TEXT( FP_TEXT* aText ) txt_end = data + ReadDelimitedText( &m_field, data ); m_field.Replace( "%V", "${VALUE}" ); m_field.Replace( "%R", "${REFERENCE}" ); + m_field = ConvertToNewOverbarNotation( m_field ); aText->SetText( m_field ); // after switching to strtok, there's no easy coming back because of the @@ -2039,7 +2042,10 @@ void LEGACY_PLUGIN::loadNETINFO_ITEM() ReadDelimitedText( buf, data, sizeof(buf) ); if( net == NULL ) - net = new NETINFO_ITEM( m_board, FROM_UTF8( buf ), netCode ); + { + net = new NETINFO_ITEM( m_board, ConvertToNewOverbarNotation( FROM_UTF8( buf ) ), + netCode ); + } else { THROW_IO_ERROR( "Two net definitions in '$EQUIPOT' block" ); @@ -2114,7 +2120,7 @@ void LEGACY_PLUGIN::loadPCB_TEXT() if( TESTLINE( "Te" ) ) // Text line (or first line for multi line texts) { ReadDelimitedText( text, line + SZ( "Te" ), sizeof(text) ); - pcbtxt->SetText( FROM_UTF8( text ) ); + pcbtxt->SetText( ConvertToNewOverbarNotation( FROM_UTF8( text ) ) ); } else if( TESTLINE( "nl" ) ) // next line of the current text @@ -2352,7 +2358,7 @@ void LEGACY_PLUGIN::loadNETCLASS() { // e.g. "AddNet "V3.3D"\n" ReadDelimitedText( buf, line + SZ( "AddNet" ), sizeof(buf) ); - netname = FROM_UTF8( buf ); + netname = ConvertToNewOverbarNotation( FROM_UTF8( buf ) ); nc->Add( netname ); }