Work around the train-wreck that is wxString::Format.
Fixes https://gitlab.com/kicad/code/kicad/issues/9247
This commit is contained in:
parent
544fa939f8
commit
956ec5b17c
|
@ -507,6 +507,27 @@ void CVPCB_MAINFRAME::RedoAssociation()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wxString CVPCB_MAINFRAME::formatSymbolDesc( int idx, const wxString& aReference,
|
||||||
|
const wxString& aValue, const wxString& aFootprint )
|
||||||
|
{
|
||||||
|
// Work around a bug in wxString::Format with double-byte chars (and double-quote, for some
|
||||||
|
// reason).
|
||||||
|
wxString desc = wxString::Format( wxT( "%3d " ), idx );
|
||||||
|
|
||||||
|
for( int ii = aReference.Length(); ii < 8; ++ii )
|
||||||
|
desc += wxS( " " );
|
||||||
|
|
||||||
|
desc += aReference + wxT( " - " );
|
||||||
|
|
||||||
|
for( int ii = aValue.Length(); ii < 16; ++ii )
|
||||||
|
desc += wxS( " " );
|
||||||
|
|
||||||
|
desc += aValue + wxT( " : " ) + aFootprint;
|
||||||
|
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CVPCB_MAINFRAME::AssociateFootprint( const CVPCB_ASSOCIATION& aAssociation,
|
void CVPCB_MAINFRAME::AssociateFootprint( const CVPCB_ASSOCIATION& aAssociation,
|
||||||
bool aNewEntry, bool aAddUndoItem )
|
bool aNewEntry, bool aAddUndoItem )
|
||||||
{
|
{
|
||||||
|
@ -544,8 +565,7 @@ void CVPCB_MAINFRAME::AssociateFootprint( const CVPCB_ASSOCIATION& aAssociation,
|
||||||
candidate->SetFPID( fpid );
|
candidate->SetFPID( fpid );
|
||||||
|
|
||||||
// create the new symbol description and set it
|
// create the new symbol description and set it
|
||||||
wxString description = wxString::Format( CMP_FORMAT,
|
wxString description = formatSymbolDesc( idx + 1,
|
||||||
idx + 1,
|
|
||||||
candidate->GetReference(),
|
candidate->GetReference(),
|
||||||
candidate->GetValue(),
|
candidate->GetValue(),
|
||||||
candidate->GetFPID().Format().wx_str() );
|
candidate->GetFPID().Format().wx_str() );
|
||||||
|
@ -911,11 +931,10 @@ void CVPCB_MAINFRAME::BuildSymbolsListBox()
|
||||||
{
|
{
|
||||||
symbol = m_netlist.GetComponent( i );
|
symbol = m_netlist.GetComponent( i );
|
||||||
|
|
||||||
msg.Printf( CMP_FORMAT,
|
msg = formatSymbolDesc( m_symbolsListBox->GetCount() + 1,
|
||||||
m_symbolsListBox->GetCount() + 1,
|
symbol->GetReference(),
|
||||||
symbol->GetReference(),
|
symbol->GetValue(),
|
||||||
symbol->GetValue(),
|
symbol->GetFPID().Format().wx_str() );
|
||||||
symbol->GetFPID().Format().wx_str() );
|
|
||||||
m_symbolsListBox->m_ComponentList.Add( msg );
|
m_symbolsListBox->m_ComponentList.Add( msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,11 +49,6 @@ typedef std::vector< CVPCB_ASSOCIATION > CVPCB_UNDO_REDO_ENTRIES;
|
||||||
// The undo list is a vector of undo entries
|
// The undo list is a vector of undo entries
|
||||||
typedef std::vector< CVPCB_UNDO_REDO_ENTRIES > CVPCB_UNDO_REDO_LIST;
|
typedef std::vector< CVPCB_UNDO_REDO_ENTRIES > CVPCB_UNDO_REDO_LIST;
|
||||||
|
|
||||||
/**
|
|
||||||
* The print format to display a schematic component line.
|
|
||||||
* format: idx reference - value : footprint_id
|
|
||||||
*/
|
|
||||||
#define CMP_FORMAT wxT( "%3d %8s - %16s : %s" )
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The CvPcb application main window.
|
* The CvPcb application main window.
|
||||||
|
@ -343,6 +338,9 @@ protected:
|
||||||
void setupUIConditions() override;
|
void setupUIConditions() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
wxString formatSymbolDesc( int idx, const wxString& aReference, const wxString& aValue,
|
||||||
|
const wxString& aFootprint );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup the tool system for the CVPCB main frame.
|
* Setup the tool system for the CVPCB main frame.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -263,10 +263,10 @@ bool CVPCB_MAINFRAME::ReadNetListAndFpFiles( const std::string& aNetlist )
|
||||||
{
|
{
|
||||||
COMPONENT* component = m_netlist.GetComponent( i );
|
COMPONENT* component = m_netlist.GetComponent( i );
|
||||||
|
|
||||||
msg.Printf( CMP_FORMAT, m_symbolsListBox->GetCount() + 1,
|
msg = formatSymbolDesc( m_symbolsListBox->GetCount() + 1,
|
||||||
component->GetReference(),
|
component->GetReference(),
|
||||||
component->GetValue(),
|
component->GetValue(),
|
||||||
FROM_UTF8( component->GetFPID().Format().c_str() ) );
|
FROM_UTF8( component->GetFPID().Format().c_str() ) );
|
||||||
|
|
||||||
m_symbolsListBox->AppendLine( msg );
|
m_symbolsListBox->AppendLine( msg );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue