remove "~" from empty *.lib component fields, replace with "", doctor old *.lib fields to blank if that was the intention
This commit is contained in:
parent
c4c58e1279
commit
dc9122c5b6
|
@ -581,7 +581,6 @@ LIB_PIN* LIB_COMPONENT::GetPin( const wxString& aNumber, int aUnit, int aConvert
|
|||
|
||||
bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
|
||||
{
|
||||
size_t i;
|
||||
LIB_FIELD& value = GetValueField();
|
||||
|
||||
// First line: it s a comment (component name for readers)
|
||||
|
@ -590,6 +589,14 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
|
|||
// Save data
|
||||
aFormatter.Print( 0, "DEF" );
|
||||
|
||||
#if defined(DEBUG)
|
||||
if( value.GetText() == wxT( "R" ) )
|
||||
{
|
||||
int breakhere = 1;
|
||||
(void) breakhere;
|
||||
}
|
||||
#endif
|
||||
|
||||
if( value.IsVisible() )
|
||||
{
|
||||
aFormatter.Print( 0, " %s", TO_UTF8( value.GetText() ) );
|
||||
|
@ -627,7 +634,7 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
|
|||
// may have their own save policy so there is a separate loop for them.
|
||||
// Empty fields are saved, because the user may have set visibility,
|
||||
// size and orientation
|
||||
for( i = 0; i < MANDATORY_FIELDS; ++i )
|
||||
for( int i = 0; i < MANDATORY_FIELDS; ++i )
|
||||
{
|
||||
if( !fields[i].Save( aFormatter ) )
|
||||
return false;
|
||||
|
@ -638,7 +645,7 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
|
|||
|
||||
int fieldId = MANDATORY_FIELDS; // really wish this would go away.
|
||||
|
||||
for( i = MANDATORY_FIELDS; i < fields.size(); ++i )
|
||||
for( unsigned i = MANDATORY_FIELDS; i < fields.size(); ++i )
|
||||
{
|
||||
// There is no need to save empty fields, i.e. no reason to preserve field
|
||||
// names now that fields names come in dynamically through the template
|
||||
|
@ -659,7 +666,7 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
|
|||
{
|
||||
aFormatter.Print( 0, "ALIAS" );
|
||||
|
||||
for( i = 1; i < m_aliases.size(); i++ )
|
||||
for( unsigned i = 1; i < m_aliases.size(); i++ )
|
||||
{
|
||||
aFormatter.Print( 0, " %s", TO_UTF8( m_aliases[i]->GetName() ) );
|
||||
}
|
||||
|
@ -672,7 +679,7 @@ bool LIB_COMPONENT::Save( OUTPUTFORMATTER& aFormatter )
|
|||
{
|
||||
aFormatter.Print( 0, "$FPLIST\n" );
|
||||
|
||||
for( i = 0; i < m_FootprintList.GetCount(); i++ )
|
||||
for( unsigned i = 0; i < m_FootprintList.GetCount(); i++ )
|
||||
{
|
||||
aFormatter.Print( 0, " %s\n", TO_UTF8( m_FootprintList[i] ) );
|
||||
}
|
||||
|
@ -715,7 +722,7 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
|
|||
char* prefix = NULL;
|
||||
char* line;
|
||||
|
||||
bool Res;
|
||||
bool result;
|
||||
wxString Msg;
|
||||
|
||||
line = aLineReader.Line();
|
||||
|
@ -749,10 +756,8 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
|
|||
aErrorMsg.Printf( wxT( "Wrong DEF format in line %d, skipped." ),
|
||||
aLineReader.LineNumber() );
|
||||
|
||||
while( aLineReader.ReadLine() )
|
||||
while( (line = aLineReader.ReadLine()) != NULL )
|
||||
{
|
||||
line = aLineReader.Line();
|
||||
|
||||
p = strtok( line, " \t\n" );
|
||||
|
||||
if( stricmp( p, "ENDDEF" ) == 0 )
|
||||
|
@ -808,36 +813,34 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
|
|||
m_options = ENTRY_POWER;
|
||||
|
||||
// Read next lines, until "ENDDEF" is found
|
||||
while( aLineReader.ReadLine() )
|
||||
while( ( line = aLineReader.ReadLine() ) != NULL )
|
||||
{
|
||||
line = aLineReader.Line();
|
||||
|
||||
p = strtok( line, " \t\r\n" );
|
||||
|
||||
// This is the error flag ( if an error occurs, Res = false)
|
||||
Res = true;
|
||||
// This is the error flag ( if an error occurs, result = false)
|
||||
result = true;
|
||||
|
||||
if( *line == '#' ) // a comment
|
||||
continue;
|
||||
|
||||
if( (*line == 'T') && (*(line + 1) == 'i') )
|
||||
Res = LoadDateAndTime( aLineReader );
|
||||
if( line[0] == 'T' && line[1] == 'i' )
|
||||
result = LoadDateAndTime( aLineReader );
|
||||
else if( *line == 'F' )
|
||||
Res = LoadField( aLineReader, Msg );
|
||||
result = LoadField( aLineReader, Msg );
|
||||
else if( strcmp( p, "ENDDEF" ) == 0 ) // End of component description
|
||||
break;
|
||||
goto ok;
|
||||
else if( strcmp( p, "DRAW" ) == 0 )
|
||||
Res = LoadDrawEntries( aLineReader, Msg );
|
||||
result = LoadDrawEntries( aLineReader, Msg );
|
||||
else if( strncmp( p, "ALIAS", 5 ) == 0 )
|
||||
{
|
||||
p = strtok( NULL, "\r\n" );
|
||||
Res = LoadAliases( p, aErrorMsg );
|
||||
result = LoadAliases( p, aErrorMsg );
|
||||
}
|
||||
else if( strncmp( p, "$FPLIST", 5 ) == 0 )
|
||||
Res = LoadFootprints( aLineReader, Msg );
|
||||
result = LoadFootprints( aLineReader, Msg );
|
||||
|
||||
// End line or block analysis: test for an error
|
||||
if( !Res )
|
||||
if( !result )
|
||||
{
|
||||
if( Msg.IsEmpty() )
|
||||
aErrorMsg.Printf( wxT( "error occurred at line %d " ), aLineReader.LineNumber() );
|
||||
|
@ -849,6 +852,9 @@ bool LIB_COMPONENT::Load( LINE_READER& aLineReader, wxString& aErrorMsg )
|
|||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
ok:
|
||||
// If we are here, this part is O.k. - put it in:
|
||||
drawings.sort();
|
||||
|
||||
|
@ -863,14 +869,12 @@ bool LIB_COMPONENT::LoadDrawEntries( LINE_READER& aLineReader, wxString& aErrorM
|
|||
|
||||
while( true )
|
||||
{
|
||||
if( !aLineReader.ReadLine() )
|
||||
if( !( line = aLineReader.ReadLine() ) )
|
||||
{
|
||||
aErrorMsg = wxT( "file ended prematurely loading component draw element" );
|
||||
return false;
|
||||
}
|
||||
|
||||
line = aLineReader.Line();
|
||||
|
||||
if( strncmp( line, "ENDDRAW", 7 ) == 0 )
|
||||
break;
|
||||
|
||||
|
@ -925,8 +929,8 @@ bool LIB_COMPONENT::LoadDrawEntries( LINE_READER& aLineReader, wxString& aErrorM
|
|||
{
|
||||
if( !aLineReader.ReadLine() )
|
||||
{
|
||||
aErrorMsg = wxT( "file ended prematurely while attempting \
|
||||
to flush to end of drawing section." );
|
||||
aErrorMsg = wxT( "file ended prematurely while attempting "
|
||||
"to flush to end of drawing section." );
|
||||
return false;
|
||||
}
|
||||
} while( strncmp( line, "ENDDRAW", 7 ) != 0 );
|
||||
|
@ -999,13 +1003,12 @@ bool LIB_COMPONENT::LoadFootprints( LINE_READER& aLineReader, wxString& aErrorMs
|
|||
|
||||
while( true )
|
||||
{
|
||||
if( !aLineReader.ReadLine() )
|
||||
if( !( line = aLineReader.ReadLine() ) )
|
||||
{
|
||||
aErrorMsg = wxT( "file ended prematurely while loading footprints" );
|
||||
return false;
|
||||
}
|
||||
|
||||
line = aLineReader.Line();
|
||||
p = strtok( line, " \t\r\n" );
|
||||
|
||||
if( stricmp( p, "$ENDFPLIST" ) == 0 )
|
||||
|
@ -1459,7 +1462,7 @@ LIB_ITEM* LIB_COMPONENT::LocateDrawItem( int aUnit, int aConvert, KICAD_T aType,
|
|||
|
||||
item = LocateDrawItem( aUnit, aConvert, aType, aPoint );
|
||||
|
||||
//Restore matrix
|
||||
// Restore matrix
|
||||
DefaultTransform = transform;
|
||||
|
||||
return item;
|
||||
|
|
|
@ -76,20 +76,7 @@ wxString SCH_BASE_FRAME::SelectComponentFromLibBrowser( void )
|
|||
return cmpname;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function SelectComponentFromLib
|
||||
* Calls the library viewer to select component to import into schematic.
|
||||
* if the library viewer is currently running, it is closed and reopened
|
||||
* in modal mode.
|
||||
* param aLibname = the lib name or an empty string.
|
||||
* if aLibname is empty, the full list of libraries is used
|
||||
* param aList = list of previously loaded components
|
||||
* param aUseLibBrowser = bool to call the library viewer to select the component
|
||||
* param aUnit = a point to int to return the selected unit (if any)
|
||||
* param aConvert = a point to int to return the selected De Morgan shape (if any)
|
||||
*
|
||||
* return the component name
|
||||
*/
|
||||
|
||||
wxString SCH_BASE_FRAME::SelectComponentFromLibrary( const wxString& aLibname,
|
||||
wxArrayString& aHistoryList,
|
||||
bool aUseLibBrowser,
|
||||
|
@ -205,11 +192,6 @@ wxString SCH_BASE_FRAME::SelectComponentFromLibrary( const wxString& aLibname,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* load from a library and place a component
|
||||
* if libname != "", search in lib "libname"
|
||||
* else search in all loaded libs
|
||||
*/
|
||||
SCH_COMPONENT* SCH_EDIT_FRAME::Load_Component( wxDC* aDC,
|
||||
const wxString& aLibname,
|
||||
wxArrayString& aHistoryList,
|
||||
|
@ -260,8 +242,10 @@ SCH_COMPONENT* SCH_EDIT_FRAME::Load_Component( wxDC* aDC,
|
|||
component->GetField( VALUE )->SetText( Name );
|
||||
|
||||
MSG_PANEL_ITEMS items;
|
||||
|
||||
component->SetCurrentSheetPath( &GetCurrentSheet() );
|
||||
component->GetMsgPanelInfo( items );
|
||||
|
||||
SetMsgPanel( items );
|
||||
component->Draw( m_canvas, aDC, wxPoint( 0, 0 ), g_XorMode );
|
||||
component->SetFlags( IS_NEW );
|
||||
|
@ -271,9 +255,6 @@ SCH_COMPONENT* SCH_EDIT_FRAME::Load_Component( wxDC* aDC,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* Routine to rotate and mirror a component.
|
||||
*/
|
||||
void SCH_EDIT_FRAME::OrientComponent( COMPONENT_ORIENTATION_T aOrientation )
|
||||
{
|
||||
SCH_SCREEN* screen = GetScreen();
|
||||
|
|
|
@ -100,8 +100,14 @@ bool LIB_FIELD::Save( OUTPUTFORMATTER& aFormatter )
|
|||
else if( m_VJustify == GR_TEXT_VJUSTIFY_TOP )
|
||||
vjustify = 'T';
|
||||
|
||||
/* Dick 24-May-2013:
|
||||
What the hell is this?. There was no comment here.
|
||||
Hell no. You don't want this in the *.lib files, it is crap. Fields get read
|
||||
back in and they have a tilda in them.
|
||||
|
||||
if( text.IsEmpty() )
|
||||
text = wxT( "~" );
|
||||
*/
|
||||
|
||||
aFormatter.Print( 0, "F%d %s %d %d %d %c %c %c %c%c%c",
|
||||
m_id,
|
||||
|
@ -131,12 +137,14 @@ bool LIB_FIELD::Save( OUTPUTFORMATTER& aFormatter )
|
|||
|
||||
bool LIB_FIELD::Load( LINE_READER& aLineReader, wxString& errorMsg )
|
||||
{
|
||||
int cnt;
|
||||
char textOrient;
|
||||
char textVisible;
|
||||
char textHJustify;
|
||||
char textVJustify[256];
|
||||
char* line = (char*) aLineReader;
|
||||
int cnt;
|
||||
char textOrient;
|
||||
char textVisible;
|
||||
char textHJustify;
|
||||
char textVJustify[256];
|
||||
|
||||
char* line = (char*) aLineReader;
|
||||
char* limit = line + aLineReader.Length();
|
||||
|
||||
if( sscanf( line + 1, "%d", &m_id ) != 1 || m_id < 0 )
|
||||
{
|
||||
|
@ -144,23 +152,20 @@ bool LIB_FIELD::Load( LINE_READER& aLineReader, wxString& errorMsg )
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Search the beginning of the data. */
|
||||
while( *line != 0 )
|
||||
// Caller did a strtok(), which inserts a nul, so next few bytes are ugly:
|
||||
// digit(s), a nul, some whitespace, then a double quote.
|
||||
while( line < limit && *line != '"' )
|
||||
line++;
|
||||
|
||||
while( *line == 0 )
|
||||
line++;
|
||||
|
||||
while( *line && (*line != '"') )
|
||||
line++;
|
||||
|
||||
if( *line == 0 )
|
||||
if( line == limit )
|
||||
return false;
|
||||
|
||||
line += ReadDelimitedText( &m_Text, line );
|
||||
|
||||
if( *line == 0 )
|
||||
return false;
|
||||
// Doctor the *.lib file field which has a "~" in blank fields. New saves will
|
||||
// not save like this, and eventually these two lines can be removed.
|
||||
if( m_Text.size()==1 && m_Text[0]==wxChar( '~' ) )
|
||||
m_Text.clear();
|
||||
|
||||
memset( textVJustify, 0, sizeof( textVJustify ) );
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
* 0 = REFERENCE
|
||||
* 1 = VALUE
|
||||
* 2 = FOOTPRINT (default Footprint)
|
||||
* 3 = DOCUMENTATION (user doc link)
|
||||
* 3 = DATASHEET (user doc link)
|
||||
*
|
||||
* others = free fields
|
||||
* </p>
|
||||
|
|
|
@ -975,7 +975,12 @@ public:
|
|||
|
||||
private:
|
||||
|
||||
// Component
|
||||
/**
|
||||
* Function Load_Component
|
||||
* loads from a library and places a component.
|
||||
* if libname != "", search in lib "libname"
|
||||
* else search in all loaded libs
|
||||
*/
|
||||
SCH_COMPONENT* Load_Component( wxDC* DC,
|
||||
const wxString& libname,
|
||||
wxArrayString& List,
|
||||
|
@ -990,6 +995,11 @@ private:
|
|||
void EditComponent( SCH_COMPONENT* aComponent );
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Function OrientComponent
|
||||
* rotates and mirrors a component.
|
||||
*/
|
||||
void OrientComponent( COMPONENT_ORIENTATION_T aOrientation = CMP_NORMAL );
|
||||
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue