100 lines
2.9 KiB
C++
100 lines
2.9 KiB
C++
/****************************************************************
|
|
* EESchema: backanno.cpp
|
|
* (functions for backannotating Footprint info
|
|
****************************************************************/
|
|
|
|
#include "fctsys.h"
|
|
#include "gr_basic.h"
|
|
|
|
#include "common.h"
|
|
#include "program.h"
|
|
#include "libcmp.h"
|
|
#include "general.h"
|
|
|
|
/* Variables Locales */
|
|
|
|
#include "dialog_backanno.cpp"
|
|
|
|
#include "protos.h"
|
|
|
|
/**************************************************************/
|
|
bool WinEDA_SchematicFrame::ProcessStuffFile(FILE* StuffFile)
|
|
/**************************************************************/
|
|
|
|
/* get footprint info from each line in the Stuff File by Ref Desg
|
|
*/
|
|
{
|
|
int LineNum = 0;
|
|
char *cp, Ref[256], FootPrint[256], Line[1024];
|
|
SCH_ITEM* DrawList = NULL;
|
|
SCH_COMPONENT* Cmp ;
|
|
PartTextStruct* TextField ;
|
|
|
|
while( GetLine( StuffFile, Line, &LineNum, sizeof(Line) ) ) {
|
|
if( sscanf( Line, "comp = \"%s module = \"%s", Ref, FootPrint) == 2 ) {
|
|
for( cp=Ref; *cp ; cp++ )
|
|
if( *cp == '"' )
|
|
*cp = 0;
|
|
for( cp=FootPrint; *cp ; cp++ )
|
|
if( *cp == '"' )
|
|
*cp = 0;
|
|
// printf("'%s' '%s'\n", Ref, FootPrint);
|
|
DrawList = WinEDA_SchematicFrame::FindComponentAndItem(
|
|
Ref, TRUE, 2, wxEmptyString, false);
|
|
|
|
if( DrawList == NULL )
|
|
continue;
|
|
|
|
if( DrawList->Type() == TYPE_SCH_COMPONENT ) {
|
|
Cmp = (SCH_COMPONENT*) DrawList;
|
|
TextField = &Cmp->m_Field[FOOTPRINT];
|
|
TextField->m_Text = FootPrint;
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**************************************************************/
|
|
bool WinEDA_SchematicFrame::ReadInputStuffFile()
|
|
/**************************************************************/
|
|
|
|
/* Backann footprint info to schematic.
|
|
*/
|
|
{
|
|
wxString Line, filename;
|
|
FILE* StuffFile;
|
|
wxString msg;
|
|
|
|
filename = EDA_FileSelector(_("Load Stuff File"),
|
|
wxEmptyString, /* Chemin par defaut */
|
|
wxEmptyString, /* nom fichier par defaut */
|
|
wxT( ".stf" ), /* extension par defaut */
|
|
wxT( "*.stf" ), /* Masque d'affichage */
|
|
this,
|
|
wxFD_OPEN,
|
|
FALSE
|
|
);
|
|
if ( filename.IsEmpty())
|
|
return FALSE;
|
|
|
|
Line = g_Main_Title + wxT(" ") + GetBuildVersion();
|
|
Line += wxT(" ") + filename;
|
|
SetTitle(Line);
|
|
|
|
if( filename.IsEmpty() )
|
|
return FALSE;
|
|
|
|
StuffFile = wxFopen( filename, wxT( "rt" ) );
|
|
if( StuffFile == NULL ) {
|
|
msg.Printf( _( "Failed to open Stuff File <%s>" ), filename.GetData() );
|
|
DisplayError( this, msg, 20 );
|
|
return FALSE;
|
|
}
|
|
ProcessStuffFile( StuffFile );
|
|
|
|
return TRUE;
|
|
}
|
|
|