Commit 762e625c authored by jean-pierre charras's avatar jean-pierre charras

Fixed bugs #568896 and #569312 and minor code cleaning

parents c58c388a 1ca9cbe5
...@@ -71,7 +71,6 @@ static bool SortLabelsByValue( const LABEL_OBJECT& obj1, ...@@ -71,7 +71,6 @@ static bool SortLabelsByValue( const LABEL_OBJECT& obj1,
static bool SortLabelsBySheet( const LABEL_OBJECT& obj1, static bool SortLabelsBySheet( const LABEL_OBJECT& obj1,
const LABEL_OBJECT& obj2 ); const LABEL_OBJECT& obj2 );
static void DeleteSubCmp( std::vector <OBJ_CMP_TO_LIST>& aList ); static void DeleteSubCmp( std::vector <OBJ_CMP_TO_LIST>& aList );
static int PrintListeGLabel( FILE* f, std::vector <LABEL_OBJECT>& aList ); static int PrintListeGLabel( FILE* f, std::vector <LABEL_OBJECT>& aList );
int RefDesStringCompare( const char* obj1, const char* obj2 ); int RefDesStringCompare( const char* obj1, const char* obj2 );
...@@ -204,7 +203,7 @@ void DIALOG_BUILD_BOM::CreatePartsList( const wxString& aFullFileName, bool aInc ...@@ -204,7 +203,7 @@ void DIALOG_BUILD_BOM::CreatePartsList( const wxString& aFullFileName, bool aInc
/* sort component list by value*/ /* sort component list by value*/
sort( cmplist.begin(), cmplist.end(), SortComponentsByValue ); sort( cmplist.begin(), cmplist.end(), SortComponentsByValue );
PrintComponentsListByPart( f, cmplist ); PrintComponentsListByPart( f, cmplist,aIncludeSubComponents );
fclose( f ); fclose( f );
} }
...@@ -369,6 +368,11 @@ void BuildComponentsListFromSchematic( std::vector <OBJ_CMP_TO_LIST>& aList ) ...@@ -369,6 +368,11 @@ void BuildComponentsListFromSchematic( std::vector <OBJ_CMP_TO_LIST>& aList )
// Ensure always null terminate m_Ref. // Ensure always null terminate m_Ref.
item.m_Reference[sizeof( item.m_Reference ) - 1 ] = 0; item.m_Reference[sizeof( item.m_Reference ) - 1 ] = 0;
// Skip pseudo components:
// pseudo components have a reference starting by #. Mainly power symbols
if( item.m_Reference[0] == '#' )
continue;
// Real component found, push it in list
aList.push_back( item ); aList.push_back( item );
} }
} }
...@@ -626,7 +630,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( ...@@ -626,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;
...@@ -683,66 +686,42 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( ...@@ -683,66 +686,42 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
continue; continue;
DrawLibItem = (SCH_COMPONENT*) DrawList; DrawLibItem = (SCH_COMPONENT*) DrawList;
if( aList[ii].m_Reference[0] == '#' )
continue;
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 defined(KICAD_GOST)
Unit = aList[ii].m_Unit + '1' - 1;
#else
if( isMulti && aIncludeSubComponents )
subRef = LIB_COMPONENT::ReturnSubReference( aList[ii].m_Unit );
Unit = aList[ii].m_Unit + 'A' - 1; else
#endif subRef.Empty();
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)
fprintf( f, "%s%c%s%c%s", CmpName, s_ExportSeparatorSymbol, fprintf( f, "%s%c%s%c%s", CmpName, s_ExportSeparatorSymbol,
CONV_TO_UTF8( DrawLibItem->GetField( CONV_TO_UTF8( DrawLibItem->GetField(
VALUE )->m_Text ), s_ExportSeparatorSymbol, VALUE )->m_Text ), s_ExportSeparatorSymbol,
CONV_TO_UTF8( DrawLibItem->GetField( DATASHEET )->m_Text ) ); CONV_TO_UTF8( DrawLibItem->GetField( DATASHEET )->m_Text ) );
#else #else
fprintf( f, "%s%c%s", CmpName, s_ExportSeparatorSymbol, fprintf( f, "%s%c%s", CmpName, s_ExportSeparatorSymbol,
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) ); CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) );
#endif #endif
else else
#if defined(KICAD_GOST) #if defined(KICAD_GOST)
fprintf( f, "| %-10s %-12s %-20s", CmpName, fprintf( f, "| %-10s %-12s %-20s", CmpName,
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ), CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ),
CONV_TO_UTF8( DrawLibItem->GetField( DATASHEET )->m_Text ) ); CONV_TO_UTF8( DrawLibItem->GetField( DATASHEET )->m_Text ) );
#else #else
fprintf( f, "| %-10s %-12s", CmpName, fprintf( f, "| %-10s %-12s", CmpName,
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) ); CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) );
#endif #endif
if( aIncludeSubComponents ) if( aIncludeSubComponents )
{ {
msg = aList[ii].m_SheetPath.PathHumanReadable(); msg = aList[ii].m_SheetPath.PathHumanReadable();
...@@ -794,82 +773,76 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef( ...@@ -794,82 +773,76 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
*/ */
int DIALOG_BUILD_BOM::PrintComponentsListByPart( int DIALOG_BUILD_BOM::PrintComponentsListByPart(
FILE* f, FILE* f,
std::vector <OBJ_CMP_TO_LIST>& aList ) std::vector <OBJ_CMP_TO_LIST>& aList,
bool aIncludeSubComponents)
{ {
int qty = 1; int qty = 0;
wxString RefName; wxString RefName;
wxString fullRefName; // reference + part Id (for multiple parts per package
wxString ValName; wxString ValName;
wxString NxtName;
wxString RNames; wxString RNames;
EDA_BaseStruct* DrawList; wxString lastRef;
EDA_BaseStruct* NxtList; wxString unitId;
SCH_COMPONENT* DrawLibItem; SCH_COMPONENT* currCmp, *nextCmp;
SCH_COMPONENT* NxtLibItem;
SCH_COMPONENT dummyCmp; // A dummy component, to store fields SCH_COMPONENT dummyCmp; // A dummy component, to store fields
for( unsigned ii = 0; ii < aList.size(); ii++ ) for( unsigned ii = 0; ii < aList.size(); ii++ )
{ {
DrawList = aList[ii].m_RootCmp; currCmp = (SCH_COMPONENT*) aList[ii].m_RootCmp;
if( DrawList == NULL ) if( ii < aList.size() -1 )
continue; nextCmp = aList[ii+1].m_RootCmp;
if( DrawList->Type() != TYPE_SCH_COMPONENT ) else
continue; nextCmp = NULL;
if( aList[ii].m_Reference[0] == '#' )
continue;
DrawLibItem = (SCH_COMPONENT*) DrawList;
if( ( DrawLibItem->GetField( VALUE )->m_Text.IsEmpty() ) )
continue;
// Store fields. Store non empty fields only. // Store fields. Store non empty fields only.
for( int jj = FOOTPRINT; jj < DrawLibItem->GetFieldCount(); jj++ ) for( int jj = FOOTPRINT; jj < currCmp->GetFieldCount(); jj++ )
{ {
if( !DrawLibItem->GetField( jj )->m_Text.IsEmpty() ) if( !currCmp->GetField( jj )->m_Text.IsEmpty() )
dummyCmp.GetField( jj )->m_Text = DrawLibItem->GetField( jj )->m_Text; dummyCmp.GetField( jj )->m_Text = currCmp->GetField( jj )->m_Text;
} }
NxtLibItem = NULL; RefName = CONV_FROM_UTF8( aList[ii].m_Reference );
for( unsigned ij = ii + 1; ij < aList.size(); ij++ ) ValName = currCmp->GetField( VALUE )->m_Text;
{
NxtList = aList[ij].m_RootCmp; int multi = 0;
if( NxtList == NULL ) if( aIncludeSubComponents )
continue;
if( NxtList->Type() != TYPE_SCH_COMPONENT )
continue;
if( aList[ij].m_Reference[0] == '#' )
continue;
NxtLibItem = (SCH_COMPONENT*) NxtList;
if( ( NxtLibItem->GetField( VALUE )->m_Text.IsEmpty() ) )
{ {
continue; LIB_COMPONENT* Entry = CMP_LIBRARY::FindLibraryComponent( currCmp->m_ChipName );
} if( Entry )
break; multi = Entry->GetPartCount();
if ( multi <= 1 )
multi = 0;
} }
if( NxtLibItem != NULL ) if ( multi && aList[ii].m_Unit > 0 )
NxtName = NxtLibItem->GetField( VALUE )->m_Text; unitId.Printf(wxT("%c"), 'A' -1 + aList[ii].m_Unit);
else else unitId.Empty();
NxtName = wxT( "" ); fullRefName = RefName + unitId;
RefName = CONV_FROM_UTF8( aList[ii].m_Reference );
ValName = DrawLibItem->GetField( VALUE )->m_Text;
if( !NxtName.CmpNoCase( ValName ) ) if( RNames.IsEmpty() )
{ RNames = fullRefName;
else
RNames << wxT( ", " ) << fullRefName;
// In multi parts per package, we have the reference more than once
// but we must count only one package
if( lastRef != RefName )
qty++; qty++;
RNames << wxT( ", " ) << RefName; lastRef = RefName;
// if the next cmoponent has same value the line will be printed after.
if( nextCmp && nextCmp->GetField( VALUE )->m_Text.CmpNoCase( ValName ) == 0 )
continue; continue;
}
// Print line for the current component value:
fprintf( f, "%15s%c%3d", CONV_TO_UTF8( ValName ), s_ExportSeparatorSymbol, qty ); fprintf( f, "%15s%c%3d", CONV_TO_UTF8( ValName ), s_ExportSeparatorSymbol, qty );
qty = 1;
if( IsFieldChecked(FOOTPRINT ) ) if( IsFieldChecked(FOOTPRINT ) )
fprintf( f, "%c%15s", s_ExportSeparatorSymbol, fprintf( f, "%c%15s", s_ExportSeparatorSymbol,
CONV_TO_UTF8( DrawLibItem->GetField( FOOTPRINT )->m_Text ) ); CONV_TO_UTF8( currCmp->GetField( FOOTPRINT )->m_Text ) );
#if defined(KICAD_GOST) #if defined(KICAD_GOST)
fprintf( f, "%c%20s", s_ExportSeparatorSymbol, fprintf( f, "%c%20s", s_ExportSeparatorSymbol,
CONV_TO_UTF8( DrawLibItem->GetField( DATASHEET) ->m_Text ) ); CONV_TO_UTF8( currCmp->GetField( DATASHEET) ->m_Text ) );
#endif #endif
// print fields, on demand // print fields, on demand
...@@ -880,14 +853,13 @@ int DIALOG_BUILD_BOM::PrintComponentsListByPart( ...@@ -880,14 +853,13 @@ int DIALOG_BUILD_BOM::PrintComponentsListByPart(
CONV_TO_UTF8( dummyCmp.GetField( jj )->m_Text ) ); CONV_TO_UTF8( dummyCmp.GetField( jj )->m_Text ) );
} }
fprintf( f, "%c%s%s", s_ExportSeparatorSymbol, fprintf( f, "%c%s\n", s_ExportSeparatorSymbol,
CONV_TO_UTF8( RefName ),
CONV_TO_UTF8( RNames ) ); CONV_TO_UTF8( RNames ) );
fputs( "\n", f );
// Clear strings, to prepare next component // Clear strings and values, to prepare next component
qty = 0;
RNames.Empty(); RNames.Empty();
for( int jj = FOOTPRINT; jj < DrawLibItem->GetFieldCount(); jj++ ) for( int jj = FOOTPRINT; jj < currCmp->GetFieldCount(); jj++ )
dummyCmp.GetField( jj )->m_Text.Empty(); dummyCmp.GetField( jj )->m_Text.Empty();
} }
...@@ -900,8 +872,6 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal( ...@@ -900,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;
...@@ -926,28 +896,20 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal( ...@@ -926,28 +896,20 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal(
continue; continue;
DrawLibItem = (SCH_COMPONENT*) DrawList; DrawLibItem = (SCH_COMPONENT*) DrawList;
if( aList[ii].m_Reference[0] == '#' )
continue;
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 );
......
...@@ -230,6 +230,22 @@ LIB_COMPONENT::~LIB_COMPONENT() ...@@ -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,
......
...@@ -575,6 +575,20 @@ public: ...@@ -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.
* *
......
...@@ -502,21 +502,11 @@ wxString LIB_FIELD::GetFullText( int unit ) ...@@ -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;
} }
......
...@@ -140,14 +140,7 @@ void SCH_FIELD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -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,
...@@ -432,13 +425,7 @@ bool SCH_FIELD::Matches( wxFindReplaceData& aSearchData, void * aAuxData ) ...@@ -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 );
} }
......
...@@ -34,7 +34,8 @@ private: ...@@ -34,7 +34,8 @@ private:
bool CompactForm, bool aIncludeSubComponents ); bool CompactForm, bool aIncludeSubComponents );
int PrintComponentsListByVal( FILE *f, std::vector <OBJ_CMP_TO_LIST>& aList, int PrintComponentsListByVal( FILE *f, std::vector <OBJ_CMP_TO_LIST>& aList,
bool aIncludeSubComponents); bool aIncludeSubComponents);
int PrintComponentsListByPart( FILE *f, std::vector <OBJ_CMP_TO_LIST>& aList); int PrintComponentsListByPart( FILE *f, std::vector <OBJ_CMP_TO_LIST>& aList,
bool aIncludeSubComponents);
void PrintFieldData(FILE * f, SCH_COMPONENT * DrawLibItem, bool CompactForm = FALSE); void PrintFieldData(FILE * f, SCH_COMPONENT * DrawLibItem, bool CompactForm = FALSE);
bool IsFieldChecked(int aFieldId); bool IsFieldChecked(int aFieldId);
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
static void Plot_Hierarchical_PIN_Sheet( PLOTTER* plotter, static void Plot_Hierarchical_PIN_Sheet( PLOTTER* plotter,
SCH_SHEET_PIN* Struct ); SCH_SHEET_PIN* Struct );
static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem, static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem,
int FieldNumber, int IsMulti, int DrawMode ); int FieldNumber, bool IsMulti, int DrawMode );
static void PlotNoConnectStruct( PLOTTER* plotter, SCH_NO_CONNECT* Struct ) static void PlotNoConnectStruct( PLOTTER* plotter, SCH_NO_CONNECT* Struct )
...@@ -53,10 +53,10 @@ static void PlotLibPart( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem ) ...@@ -53,10 +53,10 @@ static void PlotLibPart( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem )
Entry->Plot( plotter, DrawLibItem->m_Multi, DrawLibItem->m_Convert, Entry->Plot( plotter, DrawLibItem->m_Multi, DrawLibItem->m_Convert,
DrawLibItem->m_Pos, TransMat ); DrawLibItem->m_Pos, TransMat );
bool isMulti = Entry->GetPartCount() > 1;
for( int i = 0; i < NUMBER_OF_FIELDS; i++ ) for( int fieldId = 0; fieldId < NUMBER_OF_FIELDS; fieldId++ )
{ {
PlotTextField( plotter, DrawLibItem, i, 0, 0 ); PlotTextField( plotter, DrawLibItem, fieldId, isMulti, 0 );
} }
} }
...@@ -65,13 +65,13 @@ static void PlotLibPart( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem ) ...@@ -65,13 +65,13 @@ static void PlotLibPart( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem )
* Input: * Input:
* DrawLibItem: pointer to the component * DrawLibItem: pointer to the component
* FieldNumber: Number Field * FieldNumber: Number Field
* IsMulti: No Null flag if there are several sides by housing. * IsMulti: true flag if there are several parts per package.
* Only useful for the field to add a reference to this one * Only useful for the field to add a reference to this one
* The identification from (A, B ...) * The identification from (A, B ...)
* DrawMode: trace mode * DrawMode: trace mode
*/ */
static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem, static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem,
int FieldNumber, int IsMulti, int DrawMode ) int FieldNumber, bool IsMulti, int DrawMode )
{ {
SCH_FIELD* field = DrawLibItem->GetField( FieldNumber ); SCH_FIELD* field = DrawLibItem->GetField( FieldNumber );
EDA_Colors color = UNSPECIFIED_COLOR; EDA_Colors color = UNSPECIFIED_COLOR;
...@@ -125,15 +125,7 @@ static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem, ...@@ -125,15 +125,7 @@ static void PlotTextField( PLOTTER* plotter, SCH_COMPONENT* DrawLibItem,
{ {
/* Adding A, B ... to the reference */ /* Adding A, B ... to the reference */
wxString Text; wxString Text;
Text = field->m_Text; Text = field->m_Text + LIB_COMPONENT::ReturnSubReference( DrawLibItem->m_Multi );
char unit_id;
#if defined(KICAD_GOST)
Text.Append( '.' );
unit_id = '1' - 1 + DrawLibItem->m_Multi;
#else
unit_id = 'A' - 1 + DrawLibItem->m_Multi;
#endif
Text.Append( unit_id );
plotter->text( textpos, color, Text, plotter->text( textpos, color, Text,
orient, orient,
field->m_Size, hjustify, vjustify, field->m_Size, hjustify, vjustify,
......
...@@ -70,7 +70,7 @@ void DIALOG_NETLIST::OnOpenNelistClick( wxCommandEvent& event ) ...@@ -70,7 +70,7 @@ void DIALOG_NETLIST::OnOpenNelistClick( wxCommandEvent& event )
{ {
wxFileName fn = lastNetlistRead; wxFileName fn = lastNetlistRead;
lastPath = fn.GetPath(); lastPath = fn.GetPath();
lastNetlistRead = fn.GetName(); lastNetlistRead = fn.GetFullName();
} }
wxLogDebug( wxT( "Last net list read path <%s>, file name <%s>." ), wxLogDebug( wxT( "Last net list read path <%s>, file name <%s>." ),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment