Loading CHANGELOG.txt +14 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,20 @@ KiCad ChangeLog 2010 Please add newer entries at the top, list the date and your name with email address. 2010-Jul-30 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ ++eeschema: * Now link with XML support within wxWidgets. * Start of export the generic netlist in XML. Still need to rework the chain loaded netlist plugin. * OBJ_CMP_TO_LIST class now uses a std::string to hold the 8 bit string m_Ref, but hides this behind accessors which provide for both Unicode and 8 bit set and get functions. * build_BOM.cpp retains the selected filename on subsequent runs as a default. * Code cleaning, especially in build_BOM.cpp. * Will work tomorrow also. 2010-jul-27, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr> ================================================================================ ++all: Loading CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -134,9 +134,9 @@ check_find_package_result(OPENGL_FOUND "OpenGL") # On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base if(APPLE) find_package(wxWidgets COMPONENTS gl adv html core net base QUIET) find_package(wxWidgets COMPONENTS gl adv html core net base xml QUIET) else(APPLE) find_package(wxWidgets COMPONENTS gl aui adv html core net base QUIET) find_package(wxWidgets COMPONENTS gl aui adv html core net base xml QUIET) endif(APPLE) check_find_package_result(wxWidgets_FOUND "wxWidgets") Loading eeschema/annotate.cpp +81 −43 Original line number Diff line number Diff line Loading @@ -381,8 +381,7 @@ int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList, if( DrawLibItem->GetRef( aSheet ).IsEmpty() ) DrawLibItem->SetRef( aSheet, wxT( "DefRef?" ) ); strncpy( new_object.m_Reference, CONV_TO_UTF8( DrawLibItem->GetRef( aSheet ) ), 32 ); new_object.SetRef( DrawLibItem->GetRef( aSheet ) ); new_object.m_NumRef = -1; Loading @@ -409,6 +408,7 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList /* update the reference numbers */ for( unsigned ii = 0; ii < aComponentsList.size(); ii++ ) { #if 0 char* Text = aComponentsList[ii].m_Reference; SCH_COMPONENT* component = aComponentsList[ii].m_RootCmp; Loading @@ -419,8 +419,23 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList component->SetRef( &(aComponentsList[ii].m_SheetPath), CONV_FROM_UTF8( Text ) ); #else wxString ref = aComponentsList[ii].GetRef(); SCH_COMPONENT* component = aComponentsList[ii].m_RootCmp; if( aComponentsList[ii].m_NumRef < 0 ) ref += wxChar( '?' ); else ref << aComponentsList[ii].m_NumRef; aComponentsList[ii].SetRef( ref ); component->SetRef( &aComponentsList[ii].m_SheetPath, ref ); #endif component->m_Multi = aComponentsList[ii].m_Unit; component->SetUnitSelection( &(aComponentsList[ii].m_SheetPath), component->SetUnitSelection( &aComponentsList[ii].m_SheetPath, aComponentsList[ii].m_Unit ); } } Loading @@ -437,42 +452,58 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList */ void BreakReference( std::vector <OBJ_CMP_TO_LIST>& aComponentsList ) { char* Text; std::string refText; // construct once outside loop for( unsigned ii = 0; ii < aComponentsList.size(); ii++ ) { aComponentsList[ii].m_NumRef = -1; Text = aComponentsList[ii].m_Reference; int ll = strlen( Text ) - 1; if( Text[ll] == '?' ) refText = aComponentsList[ii].GetRefStr(); int ll = refText.length() - 1; if( refText[ll] == '?' ) { aComponentsList[ii].m_IsNew = true; if( !aComponentsList[ii].IsPartsLocked() ) aComponentsList[ii].m_Unit = 0x7FFFFFFF; Text[ll] = 0; continue; refText.erase(ll); // delete last char aComponentsList[ii].SetRefStr( refText ); } if( isdigit( Text[ll] ) == 0 ) else if( isdigit( refText[ll] ) == 0 ) { aComponentsList[ii].m_IsNew = true; if( !aComponentsList[ii].IsPartsLocked() ) aComponentsList[ii].m_Unit = 0x7FFFFFFF; continue; } else { while( ll >= 0 ) { if( (Text[ll] <= ' ' ) || isdigit( Text[ll] ) ) if( (refText[ll] <= ' ' ) || isdigit( refText[ll] ) ) ll--; else { if( isdigit( Text[ll + 1] ) ) aComponentsList[ii].m_NumRef = atoi( &Text[ll + 1] ); Text[ll + 1] = 0; if( isdigit( refText[ll + 1] ) ) { // nul terminated C string into cp const char* cp = refText.c_str() + ll + 1; aComponentsList[ii].m_NumRef = atoi( cp ); } refText.erase( ll+1 ); // delete from ll+1 to end break; } } aComponentsList[ii].SetRefStr( refText ); } } } Loading @@ -490,7 +521,7 @@ static void ComputeReferenceNumber( std::vector <OBJ_CMP_TO_LIST>& aComponentsLi */ for( unsigned ii = 0; ii < aComponentsList.size(); ii++ ) { if( aComponentsList[ii].m_Reference[0] == '#' ) if( aComponentsList[ii].GetRefStr()[0] == '#' ) { aComponentsList[ii].m_IsNew = true; aComponentsList[ii].m_NumRef = 0; Loading Loading @@ -716,9 +747,9 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "item not annotated: %s%s" ), cmpref.GetData(), Buff.GetData() ); GetChars( cmpref ), GetChars( Buff ) ); if( ( ComponentsList[ii].m_Unit > 0 ) && ( ComponentsList[ii].m_Unit < 0x7FFFFFFF ) ) Loading Loading @@ -748,9 +779,10 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); msg.Printf( _( "Error item %s%s" ), cmpref.GetData(), Buff.GetData() ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "Error item %s%s" ), GetChars( cmpref ), GetChars( Buff ) ); Buff.Printf( _( " unit %d and no more than %d parts" ), ComponentsList[ii].m_Unit, Loading Loading @@ -789,9 +821,10 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "Multiple item %s%s" ), cmpref.GetData(), Buff.GetData() ); GetChars( cmpref ), GetChars( Buff ) ); if( ( ComponentsList[ii].m_Unit > 0 ) && ( ComponentsList[ii].m_Unit < 0x7FFFFFFF ) ) Loading Loading @@ -819,9 +852,9 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "Multiple item %s%s" ), cmpref.GetData(), Buff.GetData() ); GetChars( cmpref ), GetChars( Buff ) ); if( ( ComponentsList[ii].m_Unit > 0 ) && ( ComponentsList[ii].m_Unit < 0x7FFFFFFF ) ) Loading @@ -846,16 +879,17 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, int next = ii + 1; if( ComponentsList[ii].CompareValue( ComponentsList[next] ) != 0 ) { wxString nextcmpref; cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); nextcmpref = CONV_FROM_UTF8( ComponentsList[next].m_Reference ); wxString nextcmpref = ComponentsList[next].GetRef(); cmpref = ComponentsList[ii].GetRef(); #if defined(KICAD_GOST) msg.Printf( _( "Diff values for %s%d.%c (%s) and %s%d.%c (%s)" ), cmpref.GetData(), ComponentsList[ii].m_NumRef, ComponentsList[ii].m_Unit + '1' - 1, ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(), GetChars( *ComponentsList[ii].m_Value ), GetChars( nextcmpref ), ComponentsList[next].m_NumRef, ComponentsList[next].m_Unit + '1' - 1, ComponentsList[next].m_Value->GetData() ); Loading @@ -864,11 +898,11 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, cmpref.GetData(), ComponentsList[ii].m_NumRef, ComponentsList[ii].m_Unit + 'A' - 1, ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(), GetChars( *ComponentsList[ii].m_Value ), GetChars( nextcmpref ), ComponentsList[next].m_NumRef, ComponentsList[next].m_Unit + 'A' - 1, ComponentsList[next].m_Value->GetData() ); GetChars( *ComponentsList[next].m_Value ) ); #endif if( aMessageList ) Loading Loading @@ -897,15 +931,19 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, /* Same time stamp found. */ wxString nextcmpref; wxString full_path; full_path.Printf( wxT( "%s%8.8X" ), ComponentsList[ii].m_SheetPath.Path().GetData(), GetChars( ComponentsList[ii].m_SheetPath.Path() ), ComponentsList[ii].m_TimeStamp ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); nextcmpref = CONV_FROM_UTF8( ComponentsList[ii + 1].m_Reference ); cmpref = ComponentsList[ii].GetRef(); nextcmpref = ComponentsList[ii + 1].GetRef(); msg.Printf( _( "duplicate time stamp (%s) for %s%d and %s%d" ), full_path.GetData(), cmpref.GetData(), ComponentsList[ii].m_NumRef, nextcmpref.GetData(), ComponentsList[ii + 1].m_NumRef ); GetChars( full_path ), GetChars( cmpref ), ComponentsList[ii].m_NumRef, GetChars( nextcmpref ), ComponentsList[ii + 1].m_NumRef ); if( aMessageList ) { aMessageList->Add( msg + wxT( "\n" )); Loading Loading
CHANGELOG.txt +14 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,20 @@ KiCad ChangeLog 2010 Please add newer entries at the top, list the date and your name with email address. 2010-Jul-30 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ ++eeschema: * Now link with XML support within wxWidgets. * Start of export the generic netlist in XML. Still need to rework the chain loaded netlist plugin. * OBJ_CMP_TO_LIST class now uses a std::string to hold the 8 bit string m_Ref, but hides this behind accessors which provide for both Unicode and 8 bit set and get functions. * build_BOM.cpp retains the selected filename on subsequent runs as a default. * Code cleaning, especially in build_BOM.cpp. * Will work tomorrow also. 2010-jul-27, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr> ================================================================================ ++all: Loading
CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -134,9 +134,9 @@ check_find_package_result(OPENGL_FOUND "OpenGL") # On Apple only wxwidgets 2.9 or higher doesn't need to find aui part of base if(APPLE) find_package(wxWidgets COMPONENTS gl adv html core net base QUIET) find_package(wxWidgets COMPONENTS gl adv html core net base xml QUIET) else(APPLE) find_package(wxWidgets COMPONENTS gl aui adv html core net base QUIET) find_package(wxWidgets COMPONENTS gl aui adv html core net base xml QUIET) endif(APPLE) check_find_package_result(wxWidgets_FOUND "wxWidgets") Loading
eeschema/annotate.cpp +81 −43 Original line number Diff line number Diff line Loading @@ -381,8 +381,7 @@ int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList, if( DrawLibItem->GetRef( aSheet ).IsEmpty() ) DrawLibItem->SetRef( aSheet, wxT( "DefRef?" ) ); strncpy( new_object.m_Reference, CONV_TO_UTF8( DrawLibItem->GetRef( aSheet ) ), 32 ); new_object.SetRef( DrawLibItem->GetRef( aSheet ) ); new_object.m_NumRef = -1; Loading @@ -409,6 +408,7 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList /* update the reference numbers */ for( unsigned ii = 0; ii < aComponentsList.size(); ii++ ) { #if 0 char* Text = aComponentsList[ii].m_Reference; SCH_COMPONENT* component = aComponentsList[ii].m_RootCmp; Loading @@ -419,8 +419,23 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList component->SetRef( &(aComponentsList[ii].m_SheetPath), CONV_FROM_UTF8( Text ) ); #else wxString ref = aComponentsList[ii].GetRef(); SCH_COMPONENT* component = aComponentsList[ii].m_RootCmp; if( aComponentsList[ii].m_NumRef < 0 ) ref += wxChar( '?' ); else ref << aComponentsList[ii].m_NumRef; aComponentsList[ii].SetRef( ref ); component->SetRef( &aComponentsList[ii].m_SheetPath, ref ); #endif component->m_Multi = aComponentsList[ii].m_Unit; component->SetUnitSelection( &(aComponentsList[ii].m_SheetPath), component->SetUnitSelection( &aComponentsList[ii].m_SheetPath, aComponentsList[ii].m_Unit ); } } Loading @@ -437,42 +452,58 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList */ void BreakReference( std::vector <OBJ_CMP_TO_LIST>& aComponentsList ) { char* Text; std::string refText; // construct once outside loop for( unsigned ii = 0; ii < aComponentsList.size(); ii++ ) { aComponentsList[ii].m_NumRef = -1; Text = aComponentsList[ii].m_Reference; int ll = strlen( Text ) - 1; if( Text[ll] == '?' ) refText = aComponentsList[ii].GetRefStr(); int ll = refText.length() - 1; if( refText[ll] == '?' ) { aComponentsList[ii].m_IsNew = true; if( !aComponentsList[ii].IsPartsLocked() ) aComponentsList[ii].m_Unit = 0x7FFFFFFF; Text[ll] = 0; continue; refText.erase(ll); // delete last char aComponentsList[ii].SetRefStr( refText ); } if( isdigit( Text[ll] ) == 0 ) else if( isdigit( refText[ll] ) == 0 ) { aComponentsList[ii].m_IsNew = true; if( !aComponentsList[ii].IsPartsLocked() ) aComponentsList[ii].m_Unit = 0x7FFFFFFF; continue; } else { while( ll >= 0 ) { if( (Text[ll] <= ' ' ) || isdigit( Text[ll] ) ) if( (refText[ll] <= ' ' ) || isdigit( refText[ll] ) ) ll--; else { if( isdigit( Text[ll + 1] ) ) aComponentsList[ii].m_NumRef = atoi( &Text[ll + 1] ); Text[ll + 1] = 0; if( isdigit( refText[ll + 1] ) ) { // nul terminated C string into cp const char* cp = refText.c_str() + ll + 1; aComponentsList[ii].m_NumRef = atoi( cp ); } refText.erase( ll+1 ); // delete from ll+1 to end break; } } aComponentsList[ii].SetRefStr( refText ); } } } Loading @@ -490,7 +521,7 @@ static void ComputeReferenceNumber( std::vector <OBJ_CMP_TO_LIST>& aComponentsLi */ for( unsigned ii = 0; ii < aComponentsList.size(); ii++ ) { if( aComponentsList[ii].m_Reference[0] == '#' ) if( aComponentsList[ii].GetRefStr()[0] == '#' ) { aComponentsList[ii].m_IsNew = true; aComponentsList[ii].m_NumRef = 0; Loading Loading @@ -716,9 +747,9 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "item not annotated: %s%s" ), cmpref.GetData(), Buff.GetData() ); GetChars( cmpref ), GetChars( Buff ) ); if( ( ComponentsList[ii].m_Unit > 0 ) && ( ComponentsList[ii].m_Unit < 0x7FFFFFFF ) ) Loading Loading @@ -748,9 +779,10 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); msg.Printf( _( "Error item %s%s" ), cmpref.GetData(), Buff.GetData() ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "Error item %s%s" ), GetChars( cmpref ), GetChars( Buff ) ); Buff.Printf( _( " unit %d and no more than %d parts" ), ComponentsList[ii].m_Unit, Loading Loading @@ -789,9 +821,10 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "Multiple item %s%s" ), cmpref.GetData(), Buff.GetData() ); GetChars( cmpref ), GetChars( Buff ) ); if( ( ComponentsList[ii].m_Unit > 0 ) && ( ComponentsList[ii].m_Unit < 0x7FFFFFFF ) ) Loading Loading @@ -819,9 +852,9 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, else Buff = wxT( "?" ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); cmpref = ComponentsList[ii].GetRef(); msg.Printf( _( "Multiple item %s%s" ), cmpref.GetData(), Buff.GetData() ); GetChars( cmpref ), GetChars( Buff ) ); if( ( ComponentsList[ii].m_Unit > 0 ) && ( ComponentsList[ii].m_Unit < 0x7FFFFFFF ) ) Loading @@ -846,16 +879,17 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, int next = ii + 1; if( ComponentsList[ii].CompareValue( ComponentsList[next] ) != 0 ) { wxString nextcmpref; cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); nextcmpref = CONV_FROM_UTF8( ComponentsList[next].m_Reference ); wxString nextcmpref = ComponentsList[next].GetRef(); cmpref = ComponentsList[ii].GetRef(); #if defined(KICAD_GOST) msg.Printf( _( "Diff values for %s%d.%c (%s) and %s%d.%c (%s)" ), cmpref.GetData(), ComponentsList[ii].m_NumRef, ComponentsList[ii].m_Unit + '1' - 1, ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(), GetChars( *ComponentsList[ii].m_Value ), GetChars( nextcmpref ), ComponentsList[next].m_NumRef, ComponentsList[next].m_Unit + '1' - 1, ComponentsList[next].m_Value->GetData() ); Loading @@ -864,11 +898,11 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, cmpref.GetData(), ComponentsList[ii].m_NumRef, ComponentsList[ii].m_Unit + 'A' - 1, ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(), GetChars( *ComponentsList[ii].m_Value ), GetChars( nextcmpref ), ComponentsList[next].m_NumRef, ComponentsList[next].m_Unit + 'A' - 1, ComponentsList[next].m_Value->GetData() ); GetChars( *ComponentsList[next].m_Value ) ); #endif if( aMessageList ) Loading Loading @@ -897,15 +931,19 @@ int WinEDA_SchematicFrame::CheckAnnotate( wxArrayString* aMessageList, /* Same time stamp found. */ wxString nextcmpref; wxString full_path; full_path.Printf( wxT( "%s%8.8X" ), ComponentsList[ii].m_SheetPath.Path().GetData(), GetChars( ComponentsList[ii].m_SheetPath.Path() ), ComponentsList[ii].m_TimeStamp ); cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference ); nextcmpref = CONV_FROM_UTF8( ComponentsList[ii + 1].m_Reference ); cmpref = ComponentsList[ii].GetRef(); nextcmpref = ComponentsList[ii + 1].GetRef(); msg.Printf( _( "duplicate time stamp (%s) for %s%d and %s%d" ), full_path.GetData(), cmpref.GetData(), ComponentsList[ii].m_NumRef, nextcmpref.GetData(), ComponentsList[ii + 1].m_NumRef ); GetChars( full_path ), GetChars( cmpref ), ComponentsList[ii].m_NumRef, GetChars( nextcmpref ), ComponentsList[ii + 1].m_NumRef ); if( aMessageList ) { aMessageList->Add( msg + wxT( "\n" )); Loading