diff --git a/cvpcb/CMakeLists.txt b/cvpcb/CMakeLists.txt index 784bb4a5b9..08e6911a87 100644 --- a/cvpcb/CMakeLists.txt +++ b/cvpcb/CMakeLists.txt @@ -36,6 +36,7 @@ set(CVPCB_SRCS set(CVPCB_EXTRA_SRCS ../pcbnew/basepcbframe.cpp ../pcbnew/class_board.cpp + ../pcbnew/class_board_item.cpp ../pcbnew/class_cotation.cpp ../pcbnew/class_drawsegment.cpp ../pcbnew/class_edge_mod.cpp diff --git a/eeschema/backanno.cpp b/eeschema/backanno.cpp index 7f5d3dce6a..a81de36265 100644 --- a/eeschema/backanno.cpp +++ b/eeschema/backanno.cpp @@ -1,7 +1,7 @@ /**************************************************************** - * EESchema: backanno.cpp - * (functions for backannotating Footprint info - ****************************************************************/ +* EESchema: backanno.cpp +* (functions for backannotating Footprint info +****************************************************************/ #include "fctsys.h" #include "gr_basic.h" @@ -18,82 +18,90 @@ #include "protos.h" /**************************************************************/ -bool WinEDA_SchematicFrame::ProcessStuffFile(FILE* StuffFile) +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 ; + 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; + 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; - if( DrawList->Type() == TYPE_SCH_COMPONENT ) { - Cmp = (SCH_COMPONENT*) DrawList; - TextField = &Cmp->m_Field[FOOTPRINT]; - TextField->m_Text = FootPrint; - } - } + for( cp = FootPrint; *cp; cp++ ) + if( *cp == '"' ) + *cp = 0; + + // printf("'%s' '%s'\n", Ref, FootPrint); + + wxString reference = CONV_FROM_UTF8( Ref ); + + DrawList = WinEDA_SchematicFrame::FindComponentAndItem( + reference, 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 = CONV_FROM_UTF8( FootPrint ); + } + } } return true; } + /**************************************************************/ -bool WinEDA_SchematicFrame::ReadInputStuffFile() +bool WinEDA_SchematicFrame::ReadInputStuffFile() /**************************************************************/ /* Backann footprint info to schematic. */ { wxString Line, filename; - FILE* StuffFile; - wxString msg; + 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; + 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 + ); - Line = g_Main_Title + wxT(" ") + GetBuildVersion(); - Line += wxT(" ") + filename; - SetTitle(Line); + 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 ) { + if( StuffFile == NULL ) + { msg.Printf( _( "Failed to open Stuff File <%s>" ), filename.GetData() ); DisplayError( this, msg, 20 ); return FALSE; } + ProcessStuffFile( StuffFile ); return TRUE; } - diff --git a/include/wxEeschemaStruct.h b/include/wxEeschemaStruct.h index 12c4ac3771..34632158aa 100644 --- a/include/wxEeschemaStruct.h +++ b/include/wxEeschemaStruct.h @@ -128,8 +128,17 @@ public: void SaveProject(); int LoadOneEEProject( const wxString& FileName, bool IsNew ); bool LoadOneEEFile( SCH_SCREEN* screen, const wxString& FullFileName ); - bool ReadInputStuffFile(); - bool ProcessStuffFile(FILE* filename); + bool ReadInputStuffFile(); + + + /** + * Function ProcessStuffFile + * gets footprint info from each line in the Stuff File by Ref Desg + * @param filename The file to read from. + * @return bool - true if success, else true. + */ + bool ProcessStuffFile( FILE* filename ); + bool SaveEEFile( SCH_SCREEN* screen, int FileSave ); SCH_SCREEN* CreateNewScreen( SCH_SCREEN* OldScreen, int TimeStamp );