PANEL_BOARD_STACKUP: Ensure UI is re-linked to storage when importing
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13835
This commit is contained in:
parent
79d246b8fe
commit
e2353a2849
|
@ -961,7 +961,7 @@ BOARD_STACKUP_ROW_UI_ITEM PANEL_SETUP_BOARD_STACKUP::createRowData( int aRow,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PANEL_SETUP_BOARD_STACKUP::rebuildLayerStackPanel()
|
void PANEL_SETUP_BOARD_STACKUP::rebuildLayerStackPanel( bool aRelinkItems )
|
||||||
{
|
{
|
||||||
wxWindowUpdateLocker locker( m_scGridWin );
|
wxWindowUpdateLocker locker( m_scGridWin );
|
||||||
m_scGridWin->Hide();
|
m_scGridWin->Hide();
|
||||||
|
@ -974,7 +974,7 @@ void PANEL_SETUP_BOARD_STACKUP::rebuildLayerStackPanel()
|
||||||
m_controlItemsList.clear();
|
m_controlItemsList.clear();
|
||||||
|
|
||||||
// Delete widgets (handled by the wxPanel parent)
|
// Delete widgets (handled by the wxPanel parent)
|
||||||
for( BOARD_STACKUP_ROW_UI_ITEM ui_item: m_rowUiItemsList )
|
for( BOARD_STACKUP_ROW_UI_ITEM& ui_item: m_rowUiItemsList )
|
||||||
{
|
{
|
||||||
// This remove and delete the current ui_item.m_MaterialCtrl sizer
|
// This remove and delete the current ui_item.m_MaterialCtrl sizer
|
||||||
ui_item.m_MaterialCtrl->SetSizer( nullptr );
|
ui_item.m_MaterialCtrl->SetSizer( nullptr );
|
||||||
|
@ -1019,7 +1019,7 @@ void PANEL_SETUP_BOARD_STACKUP::rebuildLayerStackPanel()
|
||||||
|
|
||||||
|
|
||||||
// Now, rebuild the widget list from the new m_stackup items:
|
// Now, rebuild the widget list from the new m_stackup items:
|
||||||
buildLayerStackPanel( false );
|
buildLayerStackPanel( false, aRelinkItems );
|
||||||
|
|
||||||
// Now enable/disable stackup items, according to the m_enabledLayers config
|
// Now enable/disable stackup items, according to the m_enabledLayers config
|
||||||
showOnlyActiveLayers();
|
showOnlyActiveLayers();
|
||||||
|
@ -1029,17 +1029,22 @@ void PANEL_SETUP_BOARD_STACKUP::rebuildLayerStackPanel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PANEL_SETUP_BOARD_STACKUP::buildLayerStackPanel( bool aCreatedInitialStackup )
|
void PANEL_SETUP_BOARD_STACKUP::buildLayerStackPanel( bool aCreateInitialStackup,
|
||||||
|
bool aRelinkStackup )
|
||||||
{
|
{
|
||||||
// Build a full stackup for the dialog, with a active copper layer count
|
// Build a full stackup for the dialog, with a active copper layer count
|
||||||
// = current board layer count to calculate a reasonable default stackup:
|
// = current board layer count to calculate a reasonable default stackup:
|
||||||
if( aCreatedInitialStackup )
|
if( aCreateInitialStackup || aRelinkStackup )
|
||||||
{
|
{
|
||||||
// Creates a full BOARD_STACKUP with 32 copper layers.
|
if( aCreateInitialStackup )
|
||||||
// extra layers will be hidden later.
|
{
|
||||||
// but if the number of layer is changed in the dialog, the corresponding
|
// Creates a full BOARD_STACKUP with 32 copper layers.
|
||||||
// widgets will be available with their previous values.
|
// extra layers will be hidden later.
|
||||||
m_stackup.BuildDefaultStackupList( nullptr, m_brdSettings->GetCopperLayerCount() );
|
// but if the number of layer is changed in the dialog, the corresponding
|
||||||
|
// widgets will be available with their previous values.
|
||||||
|
m_stackup.BuildDefaultStackupList( nullptr, m_brdSettings->GetCopperLayerCount() );
|
||||||
|
}
|
||||||
|
|
||||||
const BOARD_STACKUP& brd_stackup = m_brdSettings->GetStackupDescriptor();
|
const BOARD_STACKUP& brd_stackup = m_brdSettings->GetStackupDescriptor();
|
||||||
|
|
||||||
// Now initialize all stackup items to the board values, when exist
|
// Now initialize all stackup items to the board values, when exist
|
||||||
|
@ -1304,7 +1309,7 @@ void PANEL_SETUP_BOARD_STACKUP::ImportSettingsFrom( BOARD* aBoard )
|
||||||
|
|
||||||
m_enabledLayers = m_board->GetEnabledLayers() & BOARD_STACKUP::StackupAllowedBrdLayers();
|
m_enabledLayers = m_board->GetEnabledLayers() & BOARD_STACKUP::StackupAllowedBrdLayers();
|
||||||
|
|
||||||
rebuildLayerStackPanel();
|
rebuildLayerStackPanel( true );
|
||||||
synchronizeWithBoard( true );
|
synchronizeWithBoard( true );
|
||||||
computeBoardThickness();
|
computeBoardThickness();
|
||||||
|
|
||||||
|
|
|
@ -148,10 +148,11 @@ private:
|
||||||
* all copper layers and all tech layers that are supported by the stackup
|
* all copper layers and all tech layers that are supported by the stackup
|
||||||
* items not in the current board stackup will be not shown, but they are
|
* items not in the current board stackup will be not shown, but they are
|
||||||
* existing in list
|
* existing in list
|
||||||
* @param aCreatedInitialStackup = true to create a initial stackup list for the dialog
|
* @param aCreateInitialStackup = true to create a initial stackup list for the dialog
|
||||||
|
* @param aRelinkStackup = true to re-link m_stackup to m_brdSettings
|
||||||
* false to build the stackup panel from the existing stackup list.
|
* false to build the stackup panel from the existing stackup list.
|
||||||
*/
|
*/
|
||||||
void buildLayerStackPanel( bool aCreatedInitialStackup );
|
void buildLayerStackPanel( bool aCreateInitialStackup = false, bool aRelinkStackup = false );
|
||||||
|
|
||||||
/** Synchronize the full stackup shown in m_fgGridSizer according to the stackup of the
|
/** Synchronize the full stackup shown in m_fgGridSizer according to the stackup of the
|
||||||
* current board and optionally update the stackup params (thickness, color ... )
|
* current board and optionally update the stackup params (thickness, color ... )
|
||||||
|
@ -171,8 +172,9 @@ private:
|
||||||
* If previous items are in list, remove old items
|
* If previous items are in list, remove old items
|
||||||
* New prms are added
|
* New prms are added
|
||||||
* must be called after adding or deleting a dielectric parameter set
|
* must be called after adding or deleting a dielectric parameter set
|
||||||
|
* @param aRelinkItems will recreate the links between m_stackup and m_brdSettings
|
||||||
*/
|
*/
|
||||||
void rebuildLayerStackPanel();
|
void rebuildLayerStackPanel( bool aRelinkItems = false );
|
||||||
|
|
||||||
/** Transfer current UI settings to m_stackup but not to the board
|
/** Transfer current UI settings to m_stackup but not to the board
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue