7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-18 23:21:41 +00:00

Convert cross-references in Table Properties dialogs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19705
This commit is contained in:
Jeff Young 2025-01-22 00:16:03 +00:00
parent 5a57e5cfd4
commit dac7c9d4d7
4 changed files with 40 additions and 8 deletions

View File

@ -148,9 +148,18 @@ bool DIALOG_TABLE_PROPERTIES::TransferDataToWindow()
SCH_TABLECELL* tableCell = m_table->GetCell( row, col );
if( tableCell->GetColSpan() == 0 || tableCell->GetRowSpan() == 0 )
{
m_grid->SetCellValue( row, col, coveredColor.GetAsString() );
else
m_grid->SetCellValue( row, col, tableCell->GetText() );
continue;
}
wxString text = tableCell->GetText();
// show text variable cross-references in a human-readable format
if( SCHEMATIC* schematic = tableCell->Schematic() )
text = schematic->ConvertKIIDsToRefs( text );
m_grid->SetCellValue( row, col, text );
}
}
@ -317,6 +326,10 @@ bool DIALOG_TABLE_PROPERTIES::TransferDataFromWindow()
SCH_TABLECELL* tableCell = m_table->GetCell( row, col );
wxString txt = m_grid->GetCellValue( row, col );
// convert any text variable cross-references to their UUIDs
if( SCHEMATIC* schematic = tableCell->Schematic() )
txt = schematic->ConvertRefsToKIIDs( txt );
#ifdef __WXMAC__
// On macOS CTRL+Enter produces '\r' instead of '\n' regardless of EOL setting.
// Replace it now.

View File

@ -463,7 +463,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow()
// convert any text variable cross-references to their UUIDs
if( SCHEMATIC* schematic = m_currentItem->Schematic() )
text = schematic->ConvertRefsToKIIDs( m_textCtrl->GetValue() );
text = schematic->ConvertRefsToKIIDs( text );
#ifdef __WXMAC__
// On macOS CTRL+Enter produces '\r' instead of '\n' regardless of EOL setting

View File

@ -140,6 +140,8 @@ DIALOG_TABLE_PROPERTIES::~DIALOG_TABLE_PROPERTIES()
bool DIALOG_TABLE_PROPERTIES::TransferDataToWindow()
{
BOARD* board = m_frame->GetBoard();
if( !wxDialog::TransferDataToWindow() )
return false;
@ -166,9 +168,17 @@ bool DIALOG_TABLE_PROPERTIES::TransferDataToWindow()
tableCell = m_table->GetCell( row, col );
if( tableCell->GetColSpan() == 0 || tableCell->GetRowSpan() == 0 )
{
m_grid->SetCellValue( row, col, coveredColor.GetAsString() );
else
m_grid->SetCellValue( row, col, tableCell->GetText() );
continue;
}
wxString text = tableCell->GetText();
// show text variable cross-references in a human-readable format
text = board->ConvertKIIDsToCrossReferences( UnescapeString( text ) );
m_grid->SetCellValue( row, col, text );
}
}
@ -276,6 +286,7 @@ bool DIALOG_TABLE_PROPERTIES::TransferDataFromWindow()
if( !wxDialog::TransferDataFromWindow() )
return false;
BOARD* board = m_frame->GetBoard();
BOARD_COMMIT commit( m_frame );
commit.Modify( m_table );
@ -301,6 +312,9 @@ bool DIALOG_TABLE_PROPERTIES::TransferDataFromWindow()
wxString txt = m_grid->GetCellValue( row, col );
// convert any text variable cross-references to their UUIDs
txt = board->ConvertCrossReferencesToKIIDs( txt );
#ifdef __WXMAC__
// On macOS CTRL+Enter produces '\r' instead of '\n' regardless of EOL setting.
// Replace it now.

View File

@ -284,11 +284,14 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataToWindow()
{
BOARD* board = m_frame->GetBoard();
FOOTPRINT* parentFP = m_item->GetParentFootprint();
wxString msg = board->ConvertKIIDsToCrossReferences( UnescapeString( m_item->GetText() ) );
wxString text = m_item->GetText();
// show text variable cross-references in a human-readable format
text = board->ConvertKIIDsToCrossReferences( UnescapeString( text ) );
if( m_SingleLineText->IsShown() )
{
m_SingleLineText->SetValue( msg );
m_SingleLineText->SetValue( text );
if( m_item->Type() == PCB_FIELD_T && static_cast<PCB_FIELD*>( m_item )->IsReference() )
KIUI::SelectReferenceNumber( static_cast<wxTextEntry*>( m_SingleLineText ) );
@ -297,7 +300,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataToWindow()
}
else if( m_MultiLineText->IsShown() )
{
m_MultiLineText->SetValue( msg );
m_MultiLineText->SetValue( text );
m_MultiLineText->SetSelection( -1, -1 );
m_MultiLineText->EmptyUndoBuffer();
}
@ -470,6 +473,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow()
{
if( !m_SingleLineText->GetValue().IsEmpty() )
{
// convert any text variable cross-references to their UUIDs
wxString txt = board->ConvertCrossReferencesToKIIDs( m_SingleLineText->GetValue() );
m_item->SetText( txt );
@ -479,6 +483,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow()
{
if( !m_MultiLineText->GetValue().IsEmpty() )
{
// convert any text variable cross-references to their UUIDs
wxString txt = board->ConvertCrossReferencesToKIIDs( m_MultiLineText->GetValue() );
#ifdef __WXMAC__