allow comments in library files

This commit is contained in:
Ryan Bunch 2012-06-06 09:12:39 -05:00 committed by Dick Hollenbeck
parent f5047b29dd
commit e07fd7ef82
1 changed files with 32 additions and 29 deletions

View File

@ -300,7 +300,7 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff
if( drawItem.m_Flags & IS_MOVED ) if( drawItem.m_Flags & IS_MOVED )
continue; continue;
/* Do not draw items not attached to the current part */ // Do not draw items not attached to the current part
if( aMulti && drawItem.m_Unit && ( drawItem.m_Unit != aMulti ) ) if( aMulti && drawItem.m_Unit && ( drawItem.m_Unit != aMulti ) )
continue; continue;
@ -330,7 +330,7 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff
if( drawItem.m_Flags & IS_MOVED ) if( drawItem.m_Flags & IS_MOVED )
continue; continue;
/* Do not draw items not attached to the current part */ // Do not draw items not attached to the current part
if( aMulti && drawItem.m_Unit && ( drawItem.m_Unit != aMulti ) ) if( aMulti && drawItem.m_Unit && ( drawItem.m_Unit != aMulti ) )
continue; continue;
@ -358,7 +358,7 @@ void LIB_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDc, const wxPoint& aOff
} }
/* Enable this to draw the anchor of the component. */ // Enable this to draw the anchor of the component.
#if 0 #if 0
int len = aDc->DeviceToLogicalXRel( 3 ); int len = aDc->DeviceToLogicalXRel( 3 );
@ -534,10 +534,10 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
size_t i; size_t i;
LIB_FIELD& value = GetValueField(); LIB_FIELD& value = GetValueField();
/* First line: it s a comment (component name for readers) */ // First line: it s a comment (component name for readers)
aFormatter.Print( 0, "#\n# %s\n#\n", TO_UTF8( value.m_Text ) ); aFormatter.Print( 0, "#\n# %s\n#\n", TO_UTF8( value.m_Text ) );
/* Save data */ // Save data
aFormatter.Print( 0, "DEF" ); aFormatter.Print( 0, "DEF" );
if( value.IsVisible() ) if( value.IsVisible() )
@ -618,7 +618,7 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
aFormatter.Print( 0, "\n" ); aFormatter.Print( 0, "\n" );
} }
/* Write the footprint filter list */ // Write the footprint filter list
if( m_FootprintList.GetCount() != 0 ) if( m_FootprintList.GetCount() != 0 )
{ {
aFormatter.Print( 0, "$FPLIST\n" ); aFormatter.Print( 0, "$FPLIST\n" );
@ -631,7 +631,7 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
aFormatter.Print( 0, "$ENDFPLIST\n" ); aFormatter.Print( 0, "$ENDFPLIST\n" );
} }
/* Save graphics items (including pins) */ // Save graphics items (including pins)
if( !drawings.empty() ) if( !drawings.empty() )
{ {
/* we sort the draw items, in order to have an edition more easy, /* we sort the draw items, in order to have an edition more easy,
@ -680,21 +680,21 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
return false; return false;
} }
/* Read DEF line: */ // Read DEF line:
char drawnum = 0; char drawnum = 0;
char drawname = 0; char drawname = 0;
if( ( componentName = strtok( NULL, " \t\n" ) ) == NULL /* Part name: */ if( ( componentName = strtok( NULL, " \t\n" ) ) == NULL // Part name:
|| ( prefix = strtok( NULL, " \t\n" ) ) == NULL /* Prefix name: */ || ( prefix = strtok( NULL, " \t\n" ) ) == NULL // Prefix name:
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* NumOfPins: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL // NumOfPins:
|| sscanf( p, "%d", &unused ) != 1 || sscanf( p, "%d", &unused ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* TextInside: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL // TextInside:
|| sscanf( p, "%d", &m_pinNameOffset ) != 1 || sscanf( p, "%d", &m_pinNameOffset ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* DrawNums: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL // DrawNums:
|| sscanf( p, "%c", &drawnum ) != 1 || sscanf( p, "%c", &drawnum ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* DrawNums: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL // DrawNums:
|| sscanf( p, "%c", &drawname ) != 1 || sscanf( p, "%c", &drawname ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* m_unitCount: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL // m_unitCount:
|| sscanf( p, "%d", &m_unitCount ) != 1 ) || sscanf( p, "%d", &m_unitCount ) != 1 )
{ {
aErrorMsg.Printf( wxT( "Wrong DEF format in line %d, skipped." ), aErrorMsg.Printf( wxT( "Wrong DEF format in line %d, skipped." ),
@ -720,7 +720,7 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
m_showPinNumbers = ( drawnum == 'N' ) ? false : true; m_showPinNumbers = ( drawnum == 'N' ) ? false : true;
m_showPinNames = ( drawname == 'N' ) ? false : true; m_showPinNames = ( drawname == 'N' ) ? false : true;
/* Copy part name and prefix. */ // Copy part name and prefix.
LIB_FIELD& value = GetValueField(); LIB_FIELD& value = GetValueField();
if( componentName[0] != '~' ) if( componentName[0] != '~' )
@ -763,7 +763,7 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
p = strtok( line, " \t\r\n" ); p = strtok( line, " \t\r\n" );
/* This is the error flag ( if an error occurs, Res = false) */ // This is the error flag ( if an error occurs, Res = false)
Res = true; Res = true;
if( *line == '#' ) // a comment if( *line == '#' ) // a comment
@ -785,7 +785,7 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
else if( strncmp( p, "$FPLIST", 5 ) == 0 ) else if( strncmp( p, "$FPLIST", 5 ) == 0 )
Res = LoadFootprints( aLineReader, Msg ); Res = LoadFootprints( aLineReader, Msg );
/* End line or block analysis: test for an error */ // End line or block analysis: test for an error
if( !Res ) if( !Res )
{ {
if( Msg.IsEmpty() ) if( Msg.IsEmpty() )
@ -798,7 +798,7 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
} }
} }
/* If we are here, this part is O.k. - put it in: */ // If we are here, this part is O.k. - put it in:
drawings.sort(); drawings.sort();
return true; return true;
@ -827,34 +827,37 @@ bool LIB_COMPONENT::LoadDrawEntries( LINE_READER& aLineReader, wxString& aErrorM
switch( line[0] ) switch( line[0] )
{ {
case 'A': /* Arc */ case 'A': // Arc
newEntry = ( LIB_ITEM* ) new LIB_ARC( this ); newEntry = ( LIB_ITEM* ) new LIB_ARC( this );
break; break;
case 'C': /* Circle */ case 'C': // Circle
newEntry = ( LIB_ITEM* ) new LIB_CIRCLE( this ); newEntry = ( LIB_ITEM* ) new LIB_CIRCLE( this );
break; break;
case 'T': /* Text */ case 'T': // Text
newEntry = ( LIB_ITEM* ) new LIB_TEXT( this ); newEntry = ( LIB_ITEM* ) new LIB_TEXT( this );
break; break;
case 'S': /* Square */ case 'S': // Square
newEntry = ( LIB_ITEM* ) new LIB_RECTANGLE( this ); newEntry = ( LIB_ITEM* ) new LIB_RECTANGLE( this );
break; break;
case 'X': /* Pin Description */ case 'X': // Pin Description
newEntry = ( LIB_ITEM* ) new LIB_PIN( this ); newEntry = ( LIB_ITEM* ) new LIB_PIN( this );
break; break;
case 'P': /* Polyline */ case 'P': // Polyline
newEntry = ( LIB_ITEM* ) new LIB_POLYLINE( this ); newEntry = ( LIB_ITEM* ) new LIB_POLYLINE( this );
break; break;
case 'B': /* Bezier Curves */ case 'B': // Bezier Curves
newEntry = ( LIB_ITEM* ) new LIB_BEZIER( this ); newEntry = ( LIB_ITEM* ) new LIB_BEZIER( this );
break; break;
case '#': // Comment
continue;
default: default:
aErrorMsg.Printf( wxT( "undefined DRAW command %c" ), line[0] ); aErrorMsg.Printf( wxT( "undefined DRAW command %c" ), line[0] );
return false; return false;
@ -866,7 +869,7 @@ bool LIB_COMPONENT::LoadDrawEntries( LINE_READER& aLineReader, wxString& aErrorM
GetChars( aErrorMsg ), line[0] ); GetChars( aErrorMsg ), line[0] );
SAFE_DELETE( newEntry ); SAFE_DELETE( newEntry );
/* Flush till end of draw section */ // Flush till end of draw section
do do
{ {
if( !aLineReader.ReadLine() ) if( !aLineReader.ReadLine() )
@ -1469,7 +1472,7 @@ void LIB_COMPONENT::SetConversion( bool aSetConvert )
{ {
BOOST_FOREACH( LIB_ITEM& item, drawings ) BOOST_FOREACH( LIB_ITEM& item, drawings )
{ {
/* Only pins are duplicated. */ // Only pins are duplicated.
if( item.Type() != LIB_PIN_T ) if( item.Type() != LIB_PIN_T )
continue; continue;
@ -1548,7 +1551,7 @@ void LIB_COMPONENT::SetAliases( const wxArrayString& aAliasList )
m_aliases.push_back( new LIB_ALIAS( aAliasList[ i ], this ) ); m_aliases.push_back( new LIB_ALIAS( aAliasList[ i ], this ) );
} }
/* Remove names in the current component that are not in the new alias list. */ // Remove names in the current component that are not in the new alias list.
LIB_ALIASES::iterator it; LIB_ALIASES::iterator it;
for( it = m_aliases.begin(); it < m_aliases.end(); it++ ) for( it = m_aliases.begin(); it < m_aliases.end(); it++ )