Hot-update units in track editing dialogs.
Fixes https://gitlab.com/kicad/code/kicad/issues/10099
(cherry picked from commit 4e8a7fc911
)
This commit is contained in:
parent
1b033d56a7
commit
93c48b9d46
|
@ -86,6 +86,8 @@ protected:
|
|||
m_layerFilterOpt->SetValue( true );
|
||||
}
|
||||
|
||||
void onUnitsChanged( wxCommandEvent& aEvent );
|
||||
|
||||
private:
|
||||
void visitItem( PICKED_ITEMS_LIST* aUndoList, PCB_TRACK* aItem );
|
||||
void processItem( PICKED_ITEMS_LIST* aUndoList, PCB_TRACK* aItem );
|
||||
|
@ -139,6 +141,8 @@ DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS( PCB_EDIT
|
|||
wxCommandEventHandler( DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::OnNetFilterSelect ),
|
||||
nullptr, this );
|
||||
|
||||
m_parent->Bind( UNITS_CHANGED, &DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::onUnitsChanged, this );
|
||||
|
||||
finishDialogSettings();
|
||||
}
|
||||
|
||||
|
@ -159,10 +163,32 @@ DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::~DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS()
|
|||
wxCommandEventHandler( DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::OnNetFilterSelect ),
|
||||
nullptr, this );
|
||||
|
||||
m_parent->Unbind( UNITS_CHANGED, &DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::onUnitsChanged, this );
|
||||
|
||||
delete[] m_originalColWidths;
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::onUnitsChanged( wxCommandEvent& aEvent )
|
||||
{
|
||||
int trackSel = m_trackWidthSelectBox->GetSelection();
|
||||
int viaSel = m_viaSizesSelectBox->GetSelection();
|
||||
|
||||
m_parent->UpdateTrackWidthSelectBox( m_trackWidthSelectBox, false );
|
||||
m_trackWidthSelectBox->Append( INDETERMINATE_ACTION );
|
||||
m_parent->UpdateViaSizeSelectBox( m_viaSizesSelectBox, false );
|
||||
m_viaSizesSelectBox->Append( INDETERMINATE_ACTION );
|
||||
|
||||
m_trackWidthSelectBox->SetSelection( trackSel );
|
||||
m_viaSizesSelectBox->SetSelection( viaSel );
|
||||
|
||||
m_netclassGrid->ClearGrid();
|
||||
buildNetclassesGrid();
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildFilterLists()
|
||||
{
|
||||
// Populate the net filter list with net names
|
||||
|
@ -196,7 +222,7 @@ void DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildFilterLists()
|
|||
void DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildNetclassesGrid()
|
||||
{
|
||||
#define SET_NETCLASS_VALUE( row, col, val ) \
|
||||
m_netclassGrid->SetCellValue( row, col, StringFromValue( GetUserUnits(), val, true ) )
|
||||
m_netclassGrid->SetCellValue( row, col, StringFromValue( m_parent->GetUserUnits(), val, true ) )
|
||||
|
||||
m_netclassGrid->SetCellValue( 0, GRID_TRACKSIZE, _( "Track Width" ) );
|
||||
m_netclassGrid->SetCellValue( 0, GRID_VIASIZE, _( "Via Size" ) );
|
||||
|
|
|
@ -298,7 +298,7 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen
|
|||
m_netSelector->Disable();
|
||||
}
|
||||
|
||||
m_DesignRuleViasUnit->SetLabel( GetAbbreviatedUnitsLabel( m_units ) );
|
||||
m_DesignRuleViasUnit->SetLabel( GetAbbreviatedUnitsLabel( m_frame->GetUserUnits() ) );
|
||||
|
||||
int viaSelection = wxNOT_FOUND;
|
||||
|
||||
|
@ -306,8 +306,8 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen
|
|||
for( unsigned ii = 1; ii < aParent->GetDesignSettings().m_ViasDimensionsList.size(); ii++ )
|
||||
{
|
||||
VIA_DIMENSION* viaDimension = &aParent->GetDesignSettings().m_ViasDimensionsList[ii];
|
||||
wxString msg = StringFromValue( m_units, viaDimension->m_Diameter, false )
|
||||
+ " / " + StringFromValue( m_units, viaDimension->m_Drill, false );
|
||||
wxString msg = StringFromValue( m_frame->GetUserUnits(), viaDimension->m_Diameter )
|
||||
+ " / " + StringFromValue( m_frame->GetUserUnits(), viaDimension->m_Drill );
|
||||
m_DesignRuleViasCtrl->Append( msg, viaDimension );
|
||||
|
||||
if( viaSelection == wxNOT_FOUND
|
||||
|
@ -341,7 +341,7 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen
|
|||
|
||||
if( m_tracks )
|
||||
{
|
||||
m_DesignRuleWidthsUnits->SetLabel( GetAbbreviatedUnitsLabel( m_units ) );
|
||||
m_DesignRuleWidthsUnits->SetLabel( GetAbbreviatedUnitsLabel( m_frame->GetUserUnits() ) );
|
||||
|
||||
int widthSelection = wxNOT_FOUND;
|
||||
|
||||
|
@ -349,7 +349,7 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen
|
|||
for( unsigned ii = 1; ii < aParent->GetDesignSettings().m_TrackWidthList.size(); ii++ )
|
||||
{
|
||||
int width = aParent->GetDesignSettings().m_TrackWidthList[ii];
|
||||
wxString msg = StringFromValue( m_units, width, false );
|
||||
wxString msg = StringFromValue( m_frame->GetUserUnits(), width );
|
||||
m_DesignRuleWidthsCtrl->Append( msg );
|
||||
|
||||
if( widthSelection == wxNOT_FOUND && m_trackWidth.GetValue() == width )
|
||||
|
@ -379,11 +379,62 @@ DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParen
|
|||
|
||||
m_StdButtonsOK->SetDefault();
|
||||
|
||||
m_frame->Bind( UNITS_CHANGED, &DIALOG_TRACK_VIA_PROPERTIES::onUnitsChanged, this );
|
||||
|
||||
// Now all widgets have the size fixed, call FinishDialogSettings
|
||||
finishDialogSettings();
|
||||
}
|
||||
|
||||
|
||||
DIALOG_TRACK_VIA_PROPERTIES::~DIALOG_TRACK_VIA_PROPERTIES()
|
||||
{
|
||||
m_frame->Unbind( UNITS_CHANGED, &DIALOG_TRACK_VIA_PROPERTIES::onUnitsChanged, this );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_TRACK_VIA_PROPERTIES::onUnitsChanged( wxCommandEvent& aEvent )
|
||||
{
|
||||
if( m_vias )
|
||||
{
|
||||
int viaSel = m_DesignRuleViasCtrl->GetSelection();
|
||||
|
||||
m_DesignRuleViasCtrl->Clear();
|
||||
|
||||
// 0 is the netclass place-holder
|
||||
for( unsigned ii = 1; ii < m_frame->GetDesignSettings().m_ViasDimensionsList.size(); ii++ )
|
||||
{
|
||||
VIA_DIMENSION* viaDimension = &m_frame->GetDesignSettings().m_ViasDimensionsList[ii];
|
||||
wxString msg = StringFromValue( m_frame->GetUserUnits(), viaDimension->m_Diameter )
|
||||
+ " / " + StringFromValue( m_frame->GetUserUnits(), viaDimension->m_Drill );
|
||||
m_DesignRuleViasCtrl->Append( msg, viaDimension );
|
||||
}
|
||||
|
||||
m_DesignRuleViasCtrl->SetSelection( viaSel );
|
||||
m_DesignRuleViasUnit->SetLabel( GetAbbreviatedUnitsLabel( m_frame->GetUserUnits() ) );
|
||||
}
|
||||
|
||||
if( m_tracks )
|
||||
{
|
||||
int trackSel = m_DesignRuleWidthsCtrl->GetSelection();
|
||||
|
||||
m_DesignRuleWidthsCtrl->Clear();
|
||||
|
||||
// 0 is the netclass place-holder
|
||||
for( unsigned ii = 1; ii < m_frame->GetDesignSettings().m_TrackWidthList.size(); ii++ )
|
||||
{
|
||||
int width = m_frame->GetDesignSettings().m_TrackWidthList[ii];
|
||||
wxString msg = StringFromValue( m_frame->GetUserUnits(), width );
|
||||
m_DesignRuleWidthsCtrl->Append( msg );
|
||||
}
|
||||
|
||||
m_DesignRuleWidthsCtrl->SetSelection( trackSel );
|
||||
m_DesignRuleWidthsUnits->SetLabel( GetAbbreviatedUnitsLabel( m_frame->GetUserUnits() ) );
|
||||
}
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_TRACK_VIA_PROPERTIES::confirmPadChange( const std::vector<PAD*>& changingPads )
|
||||
{
|
||||
wxString msg;
|
||||
|
|
|
@ -38,6 +38,8 @@ public:
|
|||
DIALOG_TRACK_VIA_PROPERTIES( PCB_BASE_FRAME* aParent, const PCB_SELECTION& aItems,
|
||||
COMMIT& aCommit );
|
||||
|
||||
~DIALOG_TRACK_VIA_PROPERTIES();
|
||||
|
||||
bool TransferDataFromWindow() override;
|
||||
|
||||
private:
|
||||
|
@ -49,6 +51,8 @@ private:
|
|||
void onViaSelect( wxCommandEvent& aEvent ) override;
|
||||
void onViaEdit( wxCommandEvent& aEvent ) override;
|
||||
|
||||
void onUnitsChanged( wxCommandEvent& aEvent );
|
||||
|
||||
bool confirmPadChange( const std::vector<PAD*>& connectedPads );
|
||||
|
||||
PCB_BASE_FRAME* m_frame;
|
||||
|
|
Loading…
Reference in New Issue