From a9447aa8c76e1b1b0b8babc73baf6d374d5ce875 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sat, 4 Mar 2023 12:11:16 +0000 Subject: [PATCH] Add UNITS_CHANGED handling to 3D preview controls. Fixes https://gitlab.com/kicad/code/kicad/issues/14156 (cherry picked from commit 915b352d9b739152a3f6e34438a36ae90149707e) --- 3d-viewer/dialogs/panel_preview_3d_model.cpp | 24 ++++++++++++++++++++ 3d-viewer/dialogs/panel_preview_3d_model.h | 2 ++ 2 files changed, 26 insertions(+) diff --git a/3d-viewer/dialogs/panel_preview_3d_model.cpp b/3d-viewer/dialogs/panel_preview_3d_model.cpp index d710adf0cb..aadc5647e0 100644 --- a/3d-viewer/dialogs/panel_preview_3d_model.cpp +++ b/3d-viewer/dialogs/panel_preview_3d_model.cpp @@ -142,6 +142,9 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM this ); } + aFrame->Connect( UNITS_CHANGED, wxCommandEventHandler( PANEL_PREVIEW_3D_MODEL::onUnitsChanged ), + nullptr, this ); + #ifdef __WXOSX__ // Call layout once to get the proper button sizes after the bitmaps have been set Layout(); @@ -540,6 +543,27 @@ void PANEL_PREVIEW_3D_MODEL::onMouseWheelOffset( wxMouseEvent& event ) } +void PANEL_PREVIEW_3D_MODEL::onUnitsChanged( wxCommandEvent& aEvent ) +{ + double xoff_mm = EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, m_userUnits, + xoff->GetValue() ) + / pcbIUScale.IU_PER_MM; + double yoff_mm = EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, m_userUnits, + yoff->GetValue() ) + / pcbIUScale.IU_PER_MM; + double zoff_mm = EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, m_userUnits, + zoff->GetValue() ) + / pcbIUScale.IU_PER_MM; + + PCB_BASE_FRAME* frame = static_cast( aEvent.GetClientData() ); + m_userUnits = frame->GetUserUnits(); + + xoff->SetValue( formatOffsetValue( xoff_mm ) ); + yoff->SetValue( formatOffsetValue( yoff_mm ) ); + zoff->SetValue( formatOffsetValue( zoff_mm ) ); +} + + void PANEL_PREVIEW_3D_MODEL::UpdateDummyFootprint( bool aReloadRequired ) { m_dummyFootprint->Models().clear(); diff --git a/3d-viewer/dialogs/panel_preview_3d_model.h b/3d-viewer/dialogs/panel_preview_3d_model.h index d0898776a8..c6400fddba 100644 --- a/3d-viewer/dialogs/panel_preview_3d_model.h +++ b/3d-viewer/dialogs/panel_preview_3d_model.h @@ -141,6 +141,8 @@ private: void doIncrementRotation( wxSpinEvent& aEvent, double aSign ); void doIncrementOffset( wxSpinEvent& aEvent, double aSign ); + void onUnitsChanged( wxCommandEvent& aEvent ); + wxString formatScaleValue( double aValue ); wxString formatRotationValue( double aValue ); wxString formatOffsetValue( double aValue );