Loading eeschema/build_BOM.cpp +17 −28 Original line number Original line Diff line number Diff line Loading @@ -630,7 +630,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( bool CompactForm, bool CompactForm, bool aIncludeSubComponents ) bool aIncludeSubComponents ) { { int Multi, Unit; EDA_BaseStruct* DrawList; EDA_BaseStruct* DrawList; SCH_COMPONENT* DrawLibItem; SCH_COMPONENT* DrawLibItem; LIB_COMPONENT* Entry; LIB_COMPONENT* Entry; Loading Loading @@ -688,22 +687,20 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( DrawLibItem = (SCH_COMPONENT*) DrawList; DrawLibItem = (SCH_COMPONENT*) DrawList; Multi = 0; bool isMulti = false; Unit = ' '; wxString subRef; Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); if( Entry ) if( Entry ) Multi = Entry->GetPartCount(); isMulti = Entry->IsMulti(); if( ( Multi > 1 ) && aIncludeSubComponents ) if( isMulti && aIncludeSubComponents ) #if defined(KICAD_GOST) subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit ); Unit = aList[ii].m_Unit + '1' - 1; else #else subRef.Empty(); Unit = aList[ii].m_Unit + 'A' - 1; #endif sprintf( CmpName, "%s", aList[ii].m_Reference ); sprintf( CmpName, "%s", aList[ii].m_Reference ); if( !CompactForm || Unit != ' ' ) if( !CompactForm ) sprintf( CmpName + strlen( CmpName ), "%c", Unit ); sprintf( CmpName + strlen( CmpName ), "%s", CONV_TO_UTF8(subRef) ); if( CompactForm ) if( CompactForm ) #if defined(KICAD_GOST) #if defined(KICAD_GOST) Loading Loading @@ -875,8 +872,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal( std::vector <OBJ_CMP_TO_LIST>& aList, std::vector <OBJ_CMP_TO_LIST>& aList, bool aIncludeSubComponents ) bool aIncludeSubComponents ) { { int Multi; wxChar Unit; EDA_BaseStruct* DrawList; EDA_BaseStruct* DrawList; SCH_COMPONENT* DrawLibItem; SCH_COMPONENT* DrawLibItem; LIB_COMPONENT* Entry; LIB_COMPONENT* Entry; Loading @@ -902,25 +897,19 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal( DrawLibItem = (SCH_COMPONENT*) DrawList; DrawLibItem = (SCH_COMPONENT*) DrawList; Multi = 0; bool isMulti = false; Unit = ' '; Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); if( Entry ) if( Entry ) Multi = Entry->GetPartCount(); isMulti = Entry->IsMulti(); if( ( Multi > 1 ) && aIncludeSubComponents ) wxString subRef; { if( isMulti && aIncludeSubComponents ) #if defined(KICAD_GOST) subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit ); Unit = aList[ii].m_Unit + '1' - 1; else } subRef.Empty(); sprintf( CmpName, "%s.%c", aList[ii].m_Reference, Unit ); sprintf( CmpName, "%s%s", aList[ii].m_Reference, CONV_TO_UTF8(subRef) ); #else Unit = aList[ii].m_Unit + 'A' - 1; } sprintf( CmpName, "%s%c", aList[ii].m_Reference, Unit ); #endif fprintf( f, "| %-12s %-10s", fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ), CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ), CmpName ); CmpName ); Loading eeschema/class_libentry.cpp +16 −0 Original line number Original line Diff line number Diff line Loading @@ -230,6 +230,22 @@ LIB_COMPONENT::~LIB_COMPONENT() { { } } /** function IsMulti * @return the sub reference for component having multiple parts per package. * The sub reference identify the part (or unit) * @param aUnit = the part identifier ( 1 to 26) */ wxString LIB_COMPONENT::ReturnSubReference( int aUnit ) { wxString subRef; #if defined(KICAD_GOST) subRef.Printf( wxT(".%d" ), aUnit); #else subRef.Append( aUnit + 'A' - 1 ); #endif return subRef; } void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc, void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc, const wxPoint& aOffset, int aMulti, const wxPoint& aOffset, int aMulti, Loading eeschema/class_libentry.h +14 −0 Original line number Original line Diff line number Diff line Loading @@ -575,6 +575,20 @@ public: int GetPartCount() { return unitCount; } int GetPartCount() { return unitCount; } /** function IsMulti * @return true if the component has multiple parts per package. * When happens, the reference has a sub reference ti identify part */ bool IsMulti() { return unitCount > 1; } /** function IsMulti * @return the sub reference for component having multiple parts per package. * The sub reference identify the part (or unit) * @param aUnit = the part identifier ( 1 to max count) * Note: this is a static function. */ static wxString ReturnSubReference( int aUnit ); /** /** * Set or clear the alternate body style (DeMorgan) for the component. * Set or clear the alternate body style (DeMorgan) for the component. * * Loading eeschema/class_libentry_fields.cpp +3 −13 Original line number Original line Diff line number Diff line Loading @@ -502,21 +502,11 @@ wxString LIB_FIELD::GetFullText( int unit ) return m_Text; return m_Text; wxString text = m_Text; wxString text = m_Text; if( GetParent()->GetPartCount() > 1 ) { #if defined(KICAD_GOST) text.Printf( wxT( "%s?.%c" ), m_Text.GetData(), unit + '1' - 1 ); #else text.Printf( wxT( "%s?%c" ), m_Text.GetData(), unit + 'A' - 1 ); #endif } else text << wxT( "?" ); text << wxT( "?" ); if( GetParent()->IsMulti() ) text << LIB_COMPONENT::ReturnSubReference( unit ); return text; return text; } } Loading eeschema/class_sch_cmp_field.cpp +2 −15 Original line number Original line Diff line number Diff line Loading @@ -140,14 +140,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, /* For more than one part per package, we must add the part selection /* For more than one part per package, we must add the part selection * A, B, ... or 1, 2, .. to the reference. */ * A, B, ... or 1, 2, .. to the reference. */ wxString fulltext = m_Text; wxString fulltext = m_Text; char part_id; fulltext << LIB_COMPONENT::ReturnSubReference( parentComponent->m_Multi ); #if defined(KICAD_GOST) fulltext.Append( '.' ); part_id = '1' - 1 + parentComponent->m_Multi; #else part_id = 'A' - 1 + parentComponent->m_Multi; #endif fulltext.Append( part_id ); DrawGraphicText( panel, DC, textpos, color, fulltext, DrawGraphicText( panel, DC, textpos, color, fulltext, orient, orient, Loading Loading @@ -432,13 +425,7 @@ bool SCH_FIELD::Matches( wxFindReplaceData& aSearchData, void * aAuxData ) /* For more than one part per package, we must add the part selection /* For more than one part per package, we must add the part selection * A, B, ... or 1, 2, .. to the reference. */ * A, B, ... or 1, 2, .. to the reference. */ int part_id = pSch->GetUnitSelection( sheet ); int part_id = pSch->GetUnitSelection( sheet ); #if defined(KICAD_GOST) fulltext << LIB_COMPONENT::ReturnSubReference( part_id ); fulltext.Append( '.' ); part_id += '1' - 1; #else part_id += 'A' - 1; #endif fulltext.Append( (char)part_id ); } } return SCH_ITEM::Matches( fulltext, aSearchData ); return SCH_ITEM::Matches( fulltext, aSearchData ); } } Loading Loading
eeschema/build_BOM.cpp +17 −28 Original line number Original line Diff line number Diff line Loading @@ -630,7 +630,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( bool CompactForm, bool CompactForm, bool aIncludeSubComponents ) bool aIncludeSubComponents ) { { int Multi, Unit; EDA_BaseStruct* DrawList; EDA_BaseStruct* DrawList; SCH_COMPONENT* DrawLibItem; SCH_COMPONENT* DrawLibItem; LIB_COMPONENT* Entry; LIB_COMPONENT* Entry; Loading Loading @@ -688,22 +687,20 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( DrawLibItem = (SCH_COMPONENT*) DrawList; DrawLibItem = (SCH_COMPONENT*) DrawList; Multi = 0; bool isMulti = false; Unit = ' '; wxString subRef; Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); if( Entry ) if( Entry ) Multi = Entry->GetPartCount(); isMulti = Entry->IsMulti(); if( ( Multi > 1 ) && aIncludeSubComponents ) if( isMulti && aIncludeSubComponents ) #if defined(KICAD_GOST) subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit ); Unit = aList[ii].m_Unit + '1' - 1; else #else subRef.Empty(); Unit = aList[ii].m_Unit + 'A' - 1; #endif sprintf( CmpName, "%s", aList[ii].m_Reference ); sprintf( CmpName, "%s", aList[ii].m_Reference ); if( !CompactForm || Unit != ' ' ) if( !CompactForm ) sprintf( CmpName + strlen( CmpName ), "%c", Unit ); sprintf( CmpName + strlen( CmpName ), "%s", CONV_TO_UTF8(subRef) ); if( CompactForm ) if( CompactForm ) #if defined(KICAD_GOST) #if defined(KICAD_GOST) Loading Loading @@ -875,8 +872,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal( std::vector <OBJ_CMP_TO_LIST>& aList, std::vector <OBJ_CMP_TO_LIST>& aList, bool aIncludeSubComponents ) bool aIncludeSubComponents ) { { int Multi; wxChar Unit; EDA_BaseStruct* DrawList; EDA_BaseStruct* DrawList; SCH_COMPONENT* DrawLibItem; SCH_COMPONENT* DrawLibItem; LIB_COMPONENT* Entry; LIB_COMPONENT* Entry; Loading @@ -902,25 +897,19 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal( DrawLibItem = (SCH_COMPONENT*) DrawList; DrawLibItem = (SCH_COMPONENT*) DrawList; Multi = 0; bool isMulti = false; Unit = ' '; Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); Entry = CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); if( Entry ) if( Entry ) Multi = Entry->GetPartCount(); isMulti = Entry->IsMulti(); if( ( Multi > 1 ) && aIncludeSubComponents ) wxString subRef; { if( isMulti && aIncludeSubComponents ) #if defined(KICAD_GOST) subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit ); Unit = aList[ii].m_Unit + '1' - 1; else } subRef.Empty(); sprintf( CmpName, "%s.%c", aList[ii].m_Reference, Unit ); sprintf( CmpName, "%s%s", aList[ii].m_Reference, CONV_TO_UTF8(subRef) ); #else Unit = aList[ii].m_Unit + 'A' - 1; } sprintf( CmpName, "%s%c", aList[ii].m_Reference, Unit ); #endif fprintf( f, "| %-12s %-10s", fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ), CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ), CmpName ); CmpName ); Loading
eeschema/class_libentry.cpp +16 −0 Original line number Original line Diff line number Diff line Loading @@ -230,6 +230,22 @@ LIB_COMPONENT::~LIB_COMPONENT() { { } } /** function IsMulti * @return the sub reference for component having multiple parts per package. * The sub reference identify the part (or unit) * @param aUnit = the part identifier ( 1 to 26) */ wxString LIB_COMPONENT::ReturnSubReference( int aUnit ) { wxString subRef; #if defined(KICAD_GOST) subRef.Printf( wxT(".%d" ), aUnit); #else subRef.Append( aUnit + 'A' - 1 ); #endif return subRef; } void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc, void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc, const wxPoint& aOffset, int aMulti, const wxPoint& aOffset, int aMulti, Loading
eeschema/class_libentry.h +14 −0 Original line number Original line Diff line number Diff line Loading @@ -575,6 +575,20 @@ public: int GetPartCount() { return unitCount; } int GetPartCount() { return unitCount; } /** function IsMulti * @return true if the component has multiple parts per package. * When happens, the reference has a sub reference ti identify part */ bool IsMulti() { return unitCount > 1; } /** function IsMulti * @return the sub reference for component having multiple parts per package. * The sub reference identify the part (or unit) * @param aUnit = the part identifier ( 1 to max count) * Note: this is a static function. */ static wxString ReturnSubReference( int aUnit ); /** /** * Set or clear the alternate body style (DeMorgan) for the component. * Set or clear the alternate body style (DeMorgan) for the component. * * Loading
eeschema/class_libentry_fields.cpp +3 −13 Original line number Original line Diff line number Diff line Loading @@ -502,21 +502,11 @@ wxString LIB_FIELD::GetFullText( int unit ) return m_Text; return m_Text; wxString text = m_Text; wxString text = m_Text; if( GetParent()->GetPartCount() > 1 ) { #if defined(KICAD_GOST) text.Printf( wxT( "%s?.%c" ), m_Text.GetData(), unit + '1' - 1 ); #else text.Printf( wxT( "%s?%c" ), m_Text.GetData(), unit + 'A' - 1 ); #endif } else text << wxT( "?" ); text << wxT( "?" ); if( GetParent()->IsMulti() ) text << LIB_COMPONENT::ReturnSubReference( unit ); return text; return text; } } Loading
eeschema/class_sch_cmp_field.cpp +2 −15 Original line number Original line Diff line number Diff line Loading @@ -140,14 +140,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, /* For more than one part per package, we must add the part selection /* For more than one part per package, we must add the part selection * A, B, ... or 1, 2, .. to the reference. */ * A, B, ... or 1, 2, .. to the reference. */ wxString fulltext = m_Text; wxString fulltext = m_Text; char part_id; fulltext << LIB_COMPONENT::ReturnSubReference( parentComponent->m_Multi ); #if defined(KICAD_GOST) fulltext.Append( '.' ); part_id = '1' - 1 + parentComponent->m_Multi; #else part_id = 'A' - 1 + parentComponent->m_Multi; #endif fulltext.Append( part_id ); DrawGraphicText( panel, DC, textpos, color, fulltext, DrawGraphicText( panel, DC, textpos, color, fulltext, orient, orient, Loading Loading @@ -432,13 +425,7 @@ bool SCH_FIELD::Matches( wxFindReplaceData& aSearchData, void * aAuxData ) /* For more than one part per package, we must add the part selection /* For more than one part per package, we must add the part selection * A, B, ... or 1, 2, .. to the reference. */ * A, B, ... or 1, 2, .. to the reference. */ int part_id = pSch->GetUnitSelection( sheet ); int part_id = pSch->GetUnitSelection( sheet ); #if defined(KICAD_GOST) fulltext << LIB_COMPONENT::ReturnSubReference( part_id ); fulltext.Append( '.' ); part_id += '1' - 1; #else part_id += 'A' - 1; #endif fulltext.Append( (char)part_id ); } } return SCH_ITEM::Matches( fulltext, aSearchData ); return SCH_ITEM::Matches( fulltext, aSearchData ); } } Loading