Fix up some more cases of missing escaping for symbol names.

Fixes https://gitlab.com/kicad/code/kicad/issues/8694
This commit is contained in:
Jeff Young 2021-07-28 16:39:40 +01:00
parent dda70622ba
commit 726f4d8016
7 changed files with 85 additions and 72 deletions

View File

@ -75,10 +75,10 @@ DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS( SCH_EDIT_FRAME* aParent, SCH_SYMBO
if( m_mode == MODE::CHANGE ) if( m_mode == MODE::CHANGE )
m_matchBySelection->SetLabel( _( "Change selected symbol(s)" ) ); m_matchBySelection->SetLabel( _( "Change selected symbol(s)" ) );
m_newId->AppendText( FROM_UTF8( m_symbol->GetLibId().Format().c_str() ) ); m_newId->ChangeValue( UnescapeString( m_symbol->GetLibId().Format() ) );
m_specifiedReference->ChangeValue( m_symbol->GetRef( currentSheet ) ); m_specifiedReference->ChangeValue( m_symbol->GetRef( currentSheet ) );
m_specifiedValue->ChangeValue( m_symbol->GetValue( currentSheet, false ) ); m_specifiedValue->ChangeValue( m_symbol->GetValue( currentSheet, false ) );
m_specifiedId->ChangeValue( FROM_UTF8( m_symbol->GetLibId().Format().c_str() ) ); m_specifiedId->ChangeValue( UnescapeString( m_symbol->GetLibId().Format() ) );
} }
else else
{ {
@ -233,15 +233,25 @@ DIALOG_CHANGE_SYMBOLS::~DIALOG_CHANGE_SYMBOLS()
} }
wxString getLibIdValue( const wxTextCtrl* aCtrl )
{
wxString rawValue = aCtrl->GetValue();
wxString itemName;
wxString libName = rawValue.BeforeFirst( ':', &itemName );
return EscapeString( libName, CTX_LIBID ) + ':' + EscapeString( itemName, CTX_LIBID );
}
void DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser( wxCommandEvent& aEvent ) void DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser( wxCommandEvent& aEvent )
{ {
wxString newName = m_specifiedId->GetValue(); wxString newName = getLibIdValue( m_specifiedId );
KIWAY_PLAYER* frame = Kiway().Player( FRAME_SCH_VIEWER_MODAL, true ); KIWAY_PLAYER* frame = Kiway().Player( FRAME_SCH_VIEWER_MODAL, true );
if( frame->ShowModal( &newName, this ) ) if( frame->ShowModal( &newName, this ) )
{ {
m_specifiedId->SetValue( newName ); m_specifiedId->SetValue( UnescapeString( newName ) );
updateFieldsList(); updateFieldsList();
} }
@ -251,13 +261,13 @@ void DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser( wxCommandEvent& aEvent )
void DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser( wxCommandEvent& aEvent ) void DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser( wxCommandEvent& aEvent )
{ {
wxString newName = m_newId->GetValue(); wxString newName = getLibIdValue( m_newId );
KIWAY_PLAYER* frame = Kiway().Player( FRAME_SCH_VIEWER_MODAL, true ); KIWAY_PLAYER* frame = Kiway().Player( FRAME_SCH_VIEWER_MODAL, true );
if( frame->ShowModal( &newName, this ) ) if( frame->ShowModal( &newName, this ) )
{ {
m_newId->SetValue( newName ); m_newId->SetValue( UnescapeString( newName ) );
updateFieldsList(); updateFieldsList();
} }
@ -323,7 +333,7 @@ void DIALOG_CHANGE_SYMBOLS::updateFieldsList()
{ {
LIB_ID newId; LIB_ID newId;
newId.Parse( m_newId->GetValue() ); newId.Parse( getLibIdValue( m_newId ) );
if( newId.IsValid() ) if( newId.IsValid() )
{ {
@ -421,7 +431,7 @@ bool DIALOG_CHANGE_SYMBOLS::isMatch( SCH_SYMBOL* aSymbol, SCH_SHEET_PATH* aInsta
} }
else if( m_matchById ) else if( m_matchById )
{ {
id.Parse( m_specifiedId->GetValue() ); id.Parse( getLibIdValue( m_specifiedId ) );
return aSymbol->GetLibId() == id; return aSymbol->GetLibId() == id;
} }
@ -442,7 +452,7 @@ bool DIALOG_CHANGE_SYMBOLS::processMatchingSymbols()
if( m_mode == MODE::CHANGE ) if( m_mode == MODE::CHANGE )
{ {
newId.Parse( m_newId->GetValue() ); newId.Parse( getLibIdValue( m_newId ) );
if( !newId.IsValid() ) if( !newId.IsValid() )
return false; return false;
@ -515,15 +525,15 @@ bool DIALOG_CHANGE_SYMBOLS::processSymbol( SCH_SYMBOL* aSymbol, const SCH_SHEET_
{ {
msg.Printf( _( "Update symbol %s from '%s' to '%s'" ), msg.Printf( _( "Update symbol %s from '%s' to '%s'" ),
references, references,
oldId.Format().c_str(), UnescapeString( oldId.Format() ),
aNewId.Format().c_str() ); UnescapeString( aNewId.Format() ) );
} }
else else
{ {
msg.Printf( _( "Update symbols %s from '%s' to '%s'" ), msg.Printf( _( "Update symbols %s from '%s' to '%s'" ),
references, references,
oldId.Format().c_str(), UnescapeString( oldId.Format() ),
aNewId.Format().c_str() ); UnescapeString( aNewId.Format() ) );
} }
} }
else else
@ -532,15 +542,15 @@ bool DIALOG_CHANGE_SYMBOLS::processSymbol( SCH_SYMBOL* aSymbol, const SCH_SHEET_
{ {
msg.Printf( _( "Change symbol %s from '%s' to '%s'" ), msg.Printf( _( "Change symbol %s from '%s' to '%s'" ),
references, references,
oldId.Format().c_str(), UnescapeString( oldId.Format() ),
aNewId.Format().c_str() ); UnescapeString( aNewId.Format() ) );
} }
else else
{ {
msg.Printf( _( "Change symbols %s from '%s' to '%s'" ), msg.Printf( _( "Change symbols %s from '%s' to '%s'" ),
references, references,
oldId.Format().c_str(), UnescapeString( oldId.Format() ),
aNewId.Format().c_str() ); UnescapeString( aNewId.Format() ) );
} }
} }

View File

@ -243,10 +243,10 @@ int GRIDCELL_AUTOWRAP_STRINGRENDERER::GetHeight( wxDC& aDC, wxGrid* aGrid, int a
/** /**
* A helper to handle symbols to edit. * A helper to handle symbols to edit.
*/ */
class SYM_CANDIDATE class SYMBOL_CANDIDATE
{ {
public: public:
SYM_CANDIDATE( SCH_SYMBOL* aSymbol ) SYMBOL_CANDIDATE( SCH_SYMBOL* aSymbol )
{ {
m_Symbol = aSymbol; m_Symbol = aSymbol;
m_InitialLibId = m_Symbol->GetLibId().Format(); m_InitialLibId = m_Symbol->GetLibId().Format();
@ -261,12 +261,6 @@ public:
return m_Symbol->GetLibId().GetUniStringLibId(); return m_Symbol->GetLibId().GetUniStringLibId();
} }
// Return a string containing the reference of the symbol.
wxString GetSchematicReference()
{
return m_Reference;
}
SCH_SYMBOL* m_Symbol; // the schematic symbol SCH_SYMBOL* m_Symbol; // the schematic symbol
int m_Row; // the row index in m_grid int m_Row; // the row index in m_grid
SCH_SCREEN* m_Screen; // the screen where m_Symbol lives SCH_SCREEN* m_Screen; // the screen where m_Symbol lives
@ -345,7 +339,7 @@ private:
bool m_isModified; // set to true if the schematic is modified bool m_isModified; // set to true if the schematic is modified
std::vector<int> m_OrphansRowIndexes; // list of rows containing orphan lib_id std::vector<int> m_OrphansRowIndexes; // list of rows containing orphan lib_id
std::vector<SYM_CANDIDATE> m_symbols; std::vector<SYMBOL_CANDIDATE> m_symbols;
GRIDCELL_AUTOWRAP_STRINGRENDERER* m_autoWrapRenderer; GRIDCELL_AUTOWRAP_STRINGRENDERER* m_autoWrapRenderer;
}; };
@ -374,7 +368,7 @@ DIALOG_EDIT_SYMBOLS_LIBID::~DIALOG_EDIT_SYMBOLS_LIBID()
// A sort compare function to sort symbols list by LIB_ID and then reference. // A sort compare function to sort symbols list by LIB_ID and then reference.
static bool sort_by_libid( const SYM_CANDIDATE& candidate1, const SYM_CANDIDATE& candidate2 ) static bool sort_by_libid( const SYMBOL_CANDIDATE& candidate1, const SYMBOL_CANDIDATE& candidate2 )
{ {
if( candidate1.m_Symbol->GetLibId() == candidate2.m_Symbol->GetLibId() ) if( candidate1.m_Symbol->GetLibId() == candidate2.m_Symbol->GetLibId() )
return candidate1.m_Reference.Cmp( candidate2.m_Reference ) < 0; return candidate1.m_Reference.Cmp( candidate2.m_Reference ) < 0;
@ -405,7 +399,7 @@ void DIALOG_EDIT_SYMBOLS_LIBID::initDlg()
for( unsigned ii = 0; ii < references.GetCount(); ii++ ) for( unsigned ii = 0; ii < references.GetCount(); ii++ )
{ {
SCH_REFERENCE& item = references[ii]; SCH_REFERENCE& item = references[ii];
SYM_CANDIDATE candidate( item.GetSymbol() ); SYMBOL_CANDIDATE candidate( item.GetSymbol() );
candidate.m_Screen = item.GetSheetPath().LastScreen(); candidate.m_Screen = item.GetSheetPath().LastScreen();
SCH_SHEET_PATH sheetpath = item.GetSheetPath(); SCH_SHEET_PATH sheetpath = item.GetSheetPath();
candidate.m_Reference = candidate.m_Symbol->GetRef( &sheetpath ); candidate.m_Reference = candidate.m_Symbol->GetRef( &sheetpath );
@ -427,7 +421,7 @@ void DIALOG_EDIT_SYMBOLS_LIBID::initDlg()
wxString last_ref; wxString last_ref;
bool mark_cell = m_symbols.front().m_IsOrphan; bool mark_cell = m_symbols.front().m_IsOrphan;
for( auto& symbol : m_symbols ) for( SYMBOL_CANDIDATE& symbol : m_symbols )
{ {
wxString str_libid = symbol.GetStringLibId(); wxString str_libid = symbol.GetStringLibId();
@ -442,18 +436,18 @@ void DIALOG_EDIT_SYMBOLS_LIBID::initDlg()
refs.Empty(); refs.Empty();
row++; row++;
} }
else if( symbol.GetSchematicReference() == last_ref ) else if( symbol.m_Reference == last_ref )
{ {
symbol.m_Row = row; symbol.m_Row = row;
continue; continue;
} }
last_ref = symbol.GetSchematicReference(); last_ref = symbol.m_Reference;
if( !refs.IsEmpty() ) if( !refs.IsEmpty() )
refs += wxT( ", " ); refs += wxT( ", " );
refs += symbol.GetSchematicReference(); refs += symbol.m_Reference;
symbol.m_Row = row; symbol.m_Row = row;
} }
@ -484,10 +478,10 @@ void DIALOG_EDIT_SYMBOLS_LIBID::AddRowToGrid( bool aMarkRow, const wxString& aRe
m_grid->AppendRows( 1 ); m_grid->AppendRows( 1 );
m_grid->SetCellValue( row, COL_REFS, aReferences ); m_grid->SetCellValue( row, COL_REFS, UnescapeString( aReferences ) );
m_grid->SetReadOnly( row, COL_REFS ); m_grid->SetReadOnly( row, COL_REFS );
m_grid->SetCellValue( row, COL_CURR_LIBID, aStrLibId ); m_grid->SetCellValue( row, COL_CURR_LIBID, UnescapeString( aStrLibId ) );
m_grid->SetReadOnly( row, COL_CURR_LIBID ); m_grid->SetReadOnly( row, COL_CURR_LIBID );
if( aMarkRow ) // A symbol is not existing in libraries: mark the cell if( aMarkRow ) // A symbol is not existing in libraries: mark the cell
@ -507,11 +501,21 @@ void DIALOG_EDIT_SYMBOLS_LIBID::AddRowToGrid( bool aMarkRow, const wxString& aRe
// set new libid column browse button // set new libid column browse button
wxGridCellAttr* attr = new wxGridCellAttr; wxGridCellAttr* attr = new wxGridCellAttr;
attr->SetEditor( new GRID_CELL_SYMBOL_ID_EDITOR( this, aStrLibId ) ); attr->SetEditor( new GRID_CELL_SYMBOL_ID_EDITOR( this, UnescapeString( aStrLibId ) ) );
m_grid->SetAttr( row, COL_NEW_LIBID, attr ); m_grid->SetAttr( row, COL_NEW_LIBID, attr );
} }
wxString getLibIdValue( const WX_GRID* aGrid, int aRow, int aCol )
{
wxString rawValue = aGrid->GetCellValue( aRow, aCol );
wxString itemName;
wxString libName = rawValue.BeforeFirst( ':', &itemName );
return EscapeString( libName, CTX_LIBID ) + ':' + EscapeString( itemName, CTX_LIBID );
}
bool DIALOG_EDIT_SYMBOLS_LIBID::validateLibIds() bool DIALOG_EDIT_SYMBOLS_LIBID::validateLibIds()
{ {
if( !m_grid->CommitPendingChanges() ) if( !m_grid->CommitPendingChanges() )
@ -521,7 +525,7 @@ bool DIALOG_EDIT_SYMBOLS_LIBID::validateLibIds()
for( int row = 0; row <= row_max; row++ ) for( int row = 0; row <= row_max; row++ )
{ {
wxString new_libid = m_grid->GetCellValue( row, COL_NEW_LIBID ); wxString new_libid = getLibIdValue( m_grid, row, COL_NEW_LIBID );
if( new_libid.IsEmpty() ) if( new_libid.IsEmpty() )
continue; continue;
@ -563,7 +567,7 @@ void DIALOG_EDIT_SYMBOLS_LIBID::onCellBrowseLib( wxGridEvent& event )
void DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton( wxCommandEvent& event ) void DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton( wxCommandEvent& event )
{ {
std::vector< wxString > libs = Prj().SchSymbolLibTable()->GetLogicalLibs(); std::vector<wxString> libs = Prj().SchSymbolLibTable()->GetLogicalLibs();
wxArrayString aliasNames; wxArrayString aliasNames;
wxArrayString candidateSymbNames; wxArrayString candidateSymbNames;
@ -572,12 +576,12 @@ void DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton( wxCommandEvent& event )
// Try to find a candidate for non existing symbols in any loaded library // Try to find a candidate for non existing symbols in any loaded library
for( int orphanRow : m_OrphansRowIndexes ) for( int orphanRow : m_OrphansRowIndexes )
{ {
wxString orphanLibid = m_grid->GetCellValue( orphanRow, COL_CURR_LIBID ); wxString orphanLibid = getLibIdValue( m_grid, orphanRow, COL_CURR_LIBID );
int grid_row_idx = orphanRow; //row index in m_grid for the current item int grid_row_idx = orphanRow; //row index in m_grid for the current item
LIB_ID curr_libid; LIB_ID curr_libid;
curr_libid.Parse( orphanLibid, true ); curr_libid.Parse( orphanLibid, true );
wxString symbName = curr_libid.GetLibItemName(); wxString symbolName = curr_libid.GetLibItemName();
// number of full LIB_ID candidates (because we search for a symbol name // number of full LIB_ID candidates (because we search for a symbol name
// inside all available libraries, perhaps the same symbol name can be found // inside all available libraries, perhaps the same symbol name can be found
@ -586,7 +590,7 @@ void DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton( wxCommandEvent& event )
candidateSymbNames.Clear(); candidateSymbNames.Clear();
// now try to find a candidate // now try to find a candidate
for( auto &lib : libs ) for( const wxString &lib : libs )
{ {
aliasNames.Clear(); aliasNames.Clear();
@ -600,25 +604,25 @@ void DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton( wxCommandEvent& event )
continue; continue;
// Find a symbol name in symbols inside this library: // Find a symbol name in symbols inside this library:
int index = aliasNames.Index( symbName ); int index = aliasNames.Index( symbolName );
if( index != wxNOT_FOUND ) if( index != wxNOT_FOUND )
{ {
// a candidate is found! // a candidate is found!
libIdCandidateCount++; libIdCandidateCount++;
wxString newLibid = lib + ':' + symbName; wxString newLibid = lib + ':' + symbolName;
// Uses the first found. Most of time, it is alone. // Uses the first found. Most of time, it is alone.
// Others will be stored in a candidate list // Others will be stored in a candidate list
if( libIdCandidateCount <= 1 ) if( libIdCandidateCount <= 1 )
{ {
m_grid->SetCellValue( grid_row_idx, COL_NEW_LIBID, newLibid ); m_grid->SetCellValue( grid_row_idx, COL_NEW_LIBID, UnescapeString( newLibid ) );
candidateSymbNames.Add( m_grid->GetCellValue( grid_row_idx, COL_NEW_LIBID ) ); candidateSymbNames.Add( m_grid->GetCellValue( grid_row_idx, COL_NEW_LIBID ) );
fixesCount++; fixesCount++;
} }
else // Store other candidates for later selection else // Store other candidates for later selection
{ {
candidateSymbNames.Add( newLibid ); candidateSymbNames.Add( UnescapeString( newLibid ) );
} }
} }
} }
@ -666,10 +670,10 @@ bool DIALOG_EDIT_SYMBOLS_LIBID::setLibIdByBrowser( int aRow )
#else #else
// Use library viewer to choose a symbol // Use library viewer to choose a symbol
LIB_ID preselected; LIB_ID preselected;
wxString current = m_grid->GetCellValue( aRow, COL_NEW_LIBID ); wxString current = getLibIdValue( m_grid, aRow, COL_NEW_LIBID );
if( current.IsEmpty() ) if( current.IsEmpty() )
current = m_grid->GetCellValue( aRow, COL_CURR_LIBID ); current = getLibIdValue( m_grid, aRow, COL_CURR_LIBID );
if( !current.IsEmpty() ) if( !current.IsEmpty() )
preselected.Parse( current, true ); preselected.Parse( current, true );
@ -689,7 +693,7 @@ bool DIALOG_EDIT_SYMBOLS_LIBID::setLibIdByBrowser( int aRow )
wxString new_libid; wxString new_libid;
new_libid = sel.LibId.Format(); new_libid = sel.LibId.Format();
m_grid->SetCellValue( aRow, COL_NEW_LIBID, new_libid ); m_grid->SetCellValue( aRow, COL_NEW_LIBID, UnescapeString( new_libid ) );
return true; return true;
} }
@ -709,16 +713,16 @@ bool DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow()
for( int row = 0; row <= row_max; row++ ) for( int row = 0; row <= row_max; row++ )
{ {
wxString new_libid = m_grid->GetCellValue( row, COL_NEW_LIBID ); wxString new_libid = getLibIdValue( m_grid, row, COL_NEW_LIBID );
if( new_libid.IsEmpty() || new_libid == m_grid->GetCellValue( row, COL_CURR_LIBID ) ) if( new_libid.IsEmpty() || new_libid == getLibIdValue( m_grid, row, COL_CURR_LIBID ) )
continue; continue;
// A new lib id is found and was already validated. // A new lib id is found and was already validated.
LIB_ID id; LIB_ID id;
id.Parse( new_libid, true ); id.Parse( new_libid, true );
for( SYM_CANDIDATE& candidate : m_symbols ) for( SYMBOL_CANDIDATE& candidate : m_symbols )
{ {
if( candidate.m_Row != row ) if( candidate.m_Row != row )
continue; continue;

View File

@ -315,7 +315,7 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem( const SCH_SHEET_PATH& aShe
{ {
if( aItem->Type() == SCH_SYMBOL_T ) if( aItem->Type() == SCH_SYMBOL_T )
{ {
wxString id = static_cast<SCH_SYMBOL*>( aItem )->GetLibId().Format(); wxString id = UnescapeString( static_cast<SCH_SYMBOL*>( aItem )->GetLibId().Format() );
if( !WildCompareString( m_symbolFilter->GetValue(), id, false ) ) if( !WildCompareString( m_symbolFilter->GetValue(), id, false ) )
return; return;

View File

@ -287,7 +287,7 @@ DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES( SCH_EDIT_FRAME* aParent,
// GetLibSymbolRef() now points to the cached part in the schematic, which should always be // GetLibSymbolRef() now points to the cached part in the schematic, which should always be
// there for usual cases, but can be null when opening old schematics not storing the part // there for usual cases, but can be null when opening old schematics not storing the part
// so we need to handle m_part == nullptr // so we need to handle m_part == nullptr
wxASSERT( m_part ); // wxASSERT( m_part );
m_fields = new FIELDS_GRID_TABLE<SCH_FIELD>( this, aParent, m_fieldsGrid, m_part ); m_fields = new FIELDS_GRID_TABLE<SCH_FIELD>( this, aParent, m_fieldsGrid, m_part );
@ -317,7 +317,7 @@ DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES( SCH_EDIT_FRAME* aParent,
m_fieldsGrid->PushEventHandler( new FIELDS_GRID_TRICKS( m_fieldsGrid, this ) ); m_fieldsGrid->PushEventHandler( new FIELDS_GRID_TRICKS( m_fieldsGrid, this ) );
// Show/hide columns according to user's preference // Show/hide columns according to user's preference
auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
if( cfg ) if( cfg )
{ {
@ -331,8 +331,8 @@ DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES( SCH_EDIT_FRAME* aParent,
// free-form alternate assignments as well. (We won't know how to map the alternates // free-form alternate assignments as well. (We won't know how to map the alternates
// back and forth when the conversion is changed.) // back and forth when the conversion is changed.)
m_pinTablePage->Disable(); m_pinTablePage->Disable();
m_pinTablePage->SetToolTip( m_pinTablePage->SetToolTip( _( "Alternate pin assignments are not available for DeMorgan "
_( "Alternate pin assignments are not available for DeMorgan symbols." ) ); "symbols." ) );
} }
else else
{ {
@ -374,7 +374,7 @@ DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES( SCH_EDIT_FRAME* aParent,
DIALOG_SYMBOL_PROPERTIES::~DIALOG_SYMBOL_PROPERTIES() DIALOG_SYMBOL_PROPERTIES::~DIALOG_SYMBOL_PROPERTIES()
{ {
auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() ); EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
if( cfg ) if( cfg )
cfg->m_Appearance.edit_component_visible_columns = m_fieldsGrid->GetShownColumns(); cfg->m_Appearance.edit_component_visible_columns = m_fieldsGrid->GetShownColumns();
@ -497,7 +497,7 @@ bool DIALOG_SYMBOL_PROPERTIES::TransferDataToWindow()
} }
// Set the symbol's library name. // Set the symbol's library name.
m_tcLibraryID->SetLabelText( m_symbol->GetLibId().Format() ); m_tcLibraryID->SetLabelText( UnescapeString( m_symbol->GetLibId().Format() ) );
Layout(); Layout();
@ -1048,7 +1048,7 @@ void DIALOG_SYMBOL_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& event )
void DIALOG_SYMBOL_PROPERTIES::OnSizeGrid( wxSizeEvent& event ) void DIALOG_SYMBOL_PROPERTIES::OnSizeGrid( wxSizeEvent& event )
{ {
auto new_size = event.GetSize().GetX(); int new_size = event.GetSize().GetX();
if( m_width != new_size ) if( m_width != new_size )
{ {

View File

@ -557,7 +557,7 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
// Clear all existing symbol links. // Clear all existing symbol links.
clearLibSymbols(); clearLibSymbols();
for( auto symbol : symbols ) for( SCH_SYMBOL* symbol : symbols )
{ {
LIB_SYMBOL* tmp = nullptr; LIB_SYMBOL* tmp = nullptr;
libSymbol.reset(); libSymbol.reset();
@ -569,11 +569,10 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Setting schematic symbol '%s %s' library identifier " msg.Printf( _( "Setting schematic symbol '%s %s' library identifier to '%s'." ),
"to '%s'. " ),
symbol->GetField( REFERENCE_FIELD )->GetText(), symbol->GetField( REFERENCE_FIELD )->GetText(),
symbol->GetField( VALUE_FIELD )->GetText(), symbol->GetField( VALUE_FIELD )->GetText(),
symbol->GetLibId().Format().wx_str() ); UnescapeString( symbol->GetLibId().Format() ) );
aReporter->ReportTail( msg, RPT_SEVERITY_INFO ); aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
} }
@ -586,9 +585,9 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Schematic symbol reference '%s' library identifier is not " msg.Printf( _( "Schematic symbol reference '%s' library identifier is not valid. "
"valid. Unable to link library symbol." ), "Unable to link library symbol." ),
symbol->GetLibId().Format().wx_str() ); UnescapeString( symbol->GetLibId().Format() ) );
aReporter->ReportTail( msg, RPT_SEVERITY_WARNING ); aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
} }
@ -602,8 +601,8 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
{ {
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "Symbol library '%s' not found and no fallback cache " msg.Printf( _( "Symbol library '%s' not found and no fallback cache library "
"library available. Unable to link library symbol." ), "available. Unable to link library symbol." ),
symbol->GetLibId().GetLibNickname().wx_str() ); symbol->GetLibId().GetLibNickname().wx_str() );
aReporter->ReportTail( msg, RPT_SEVERITY_WARNING ); aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
} }
@ -622,7 +621,7 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
if( aReporter ) if( aReporter )
{ {
msg.Printf( _( "I/O error %s resolving library symbol %s" ), ioe.What(), msg.Printf( _( "I/O error %s resolving library symbol %s" ), ioe.What(),
symbol->GetLibId().Format().wx_str() ); UnescapeString( symbol->GetLibId().Format() ) );
aReporter->ReportTail( msg, RPT_SEVERITY_ERROR ); aReporter->ReportTail( msg, RPT_SEVERITY_ERROR );
} }
} }
@ -644,7 +643,7 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
msg.Printf( _( "Falling back to cache to set symbol '%s:%s' link '%s'." ), msg.Printf( _( "Falling back to cache to set symbol '%s:%s' link '%s'." ),
symbol->GetField( REFERENCE_FIELD )->GetText(), symbol->GetField( REFERENCE_FIELD )->GetText(),
symbol->GetField( VALUE_FIELD )->GetText(), symbol->GetField( VALUE_FIELD )->GetText(),
id ); UnescapeString( id ) );
aReporter->ReportTail( msg, RPT_SEVERITY_WARNING ); aReporter->ReportTail( msg, RPT_SEVERITY_WARNING );
} }
@ -665,7 +664,7 @@ void SCH_SCREEN::UpdateSymbolLinks( REPORTER* aReporter )
msg.Printf( _( "Setting schematic symbol '%s %s' library identifier to '%s'." ), msg.Printf( _( "Setting schematic symbol '%s %s' library identifier to '%s'." ),
symbol->GetField( REFERENCE_FIELD )->GetText(), symbol->GetField( REFERENCE_FIELD )->GetText(),
symbol->GetField( VALUE_FIELD )->GetText(), symbol->GetField( VALUE_FIELD )->GetText(),
symbol->GetLibId().Format().wx_str() ); UnescapeString( symbol->GetLibId().Format() ) );
aReporter->ReportTail( msg, RPT_SEVERITY_INFO ); aReporter->ReportTail( msg, RPT_SEVERITY_INFO );
} }
} }

View File

@ -241,7 +241,7 @@ wxString SCH_SYMBOL::GetSchSymbolLibraryName() const
if( !m_schLibSymbolName.IsEmpty() ) if( !m_schLibSymbolName.IsEmpty() )
return m_schLibSymbolName; return m_schLibSymbolName;
else else
return m_lib_id.Format().wx_str(); return m_lib_id.Format();
} }

View File

@ -150,7 +150,7 @@ void SYMBOL_EDIT_FRAME::updateTitle()
if( GetScreen() && GetScreen()->IsContentModified() ) if( GetScreen() && GetScreen()->IsContentModified() )
title = wxT( "*" ); title = wxT( "*" );
title += FROM_UTF8( GetCurSymbol()->GetLibId().Format().c_str() ); title += UnescapeString( GetCurSymbol()->GetLibId().Format() );
if( m_libMgr && m_libMgr->IsLibraryReadOnly( GetCurLib() ) ) if( m_libMgr && m_libMgr->IsLibraryReadOnly( GetCurLib() ) )
title += wxS( " " ) + _( "[Read Only Library]" ); title += wxS( " " ) + _( "[Read Only Library]" );