Pull modifications to cherry pick forward from 6.0.

This commit is contained in:
Jeff Young 2024-03-17 12:42:45 +00:00
parent 44c14b1935
commit d317b8da74
2 changed files with 16 additions and 25 deletions

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2018-2024 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -23,11 +23,8 @@
#include <pcb_base_edit_frame.h> #include <pcb_base_edit_frame.h>
#include <grid_layer_box_helpers.h> #include <grid_layer_box_helpers.h>
#include <view/view.h>
#include <kiplatform/ui.h> #include <kiplatform/ui.h>
#include <widgets/wx_grid.h> #include <widgets/wx_grid.h>
#include <board.h>
#include <magic_enum.hpp>
#include "dialog_swap_layers.h" #include "dialog_swap_layers.h"
@ -69,10 +66,10 @@ public:
DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS( PCB_BASE_EDIT_FRAME* aParent, DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS( PCB_BASE_EDIT_FRAME* aParent,
std::map<PCB_LAYER_ID, PCB_LAYER_ID>& aArray ) : std::map<PCB_LAYER_ID, PCB_LAYER_ID>& aLayerMap ) :
DIALOG_SWAP_LAYERS_BASE( aParent ), DIALOG_SWAP_LAYERS_BASE( aParent ),
m_parent( aParent ), m_parent( aParent ),
m_layerDestinations( aArray ) m_layerMap( aLayerMap )
{ {
m_gridTable = new LAYER_GRID_TABLE( m_parent->GetBoard()->GetCopperLayerCount() ); m_gridTable = new LAYER_GRID_TABLE( m_parent->GetBoard()->GetCopperLayerCount() );
m_grid->SetTable( m_gridTable ); m_grid->SetTable( m_gridTable );
@ -133,21 +130,14 @@ bool DIALOG_SWAP_LAYERS::TransferDataFromWindow()
wxGridTableBase* table = m_grid->GetTable(); wxGridTableBase* table = m_grid->GetTable();
int row = 0; int row = 0;
for( size_t layer = 0; layer < PCB_LAYER_ID_COUNT; ++layer ) for( int layer = 0; layer < PCB_LAYER_ID_COUNT; ++layer )
{ {
std::optional<PCB_LAYER_ID> src = magic_enum::enum_cast<PCB_LAYER_ID>( layer );
wxCHECK2( src.has_value(), continue );
if( enabledCopperLayers.test( layer ) ) if( enabledCopperLayers.test( layer ) )
{ {
std::optional<PCB_LAYER_ID> dest = int dest = table->GetValueAsLong( row++, 1 );
magic_enum::enum_cast<PCB_LAYER_ID>( table->GetValueAsLong( row++, 1 ) );
wxCHECK2( dest.has_value(), m_layerDestinations[ *src ] = *dest ); if( dest >= 0 && dest < PCB_LAYER_ID_COUNT && enabledCopperLayers.test( dest ) )
m_layerDestinations[ *src ] = *dest; m_layerMap[ ToLAYER_ID( layer ) ] = ToLAYER_ID( dest );
}
else
{
m_layerDestinations[ *src ] = *src;
} }
} }

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2018-2024 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -21,8 +21,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
#ifndef _DIALOG_SCRIPTING_H_ #ifndef DIALOG_SWAP_LAYERS_H
#define _DIALOG_SCRIPTING_H_ #define DIALOG_SWAP_LAYERS_H
#include "dialog_swap_layers_base.h" #include "dialog_swap_layers_base.h"
@ -45,10 +45,11 @@ private:
void adjustGridColumns(); void adjustGridColumns();
PCB_BASE_EDIT_FRAME* m_parent; private:
std::map<PCB_LAYER_ID, PCB_LAYER_ID>& m_layerDestinations; PCB_BASE_EDIT_FRAME* m_parent;
std::map<PCB_LAYER_ID, PCB_LAYER_ID>& m_layerMap;
LAYER_GRID_TABLE* m_gridTable; LAYER_GRID_TABLE* m_gridTable;
}; };
#endif #endif // DIALOG_SWAP_LAYERS_H