fix backanno for unicode and eeschema's debug build

This commit is contained in:
dickelbeck 2008-05-07 23:41:05 +00:00
parent 7327197c17
commit 795e069a7a
3 changed files with 71 additions and 53 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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 );