From 0c774aa16387478ac22d694636f4fcbcf1925355 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Thu, 30 Jul 2020 10:42:23 +0200 Subject: [PATCH] Pcbnew: fix a python interface issue ( a not defined constant in some modules). Was due to incorrect order of definitions in board.i interface. --- pcbnew/swig/board.i | 39 +---------- pcbnew/swig/layers_id_colors_and_visibility.i | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+), 38 deletions(-) create mode 100644 pcbnew/swig/layers_id_colors_and_visibility.i diff --git a/pcbnew/swig/board.i b/pcbnew/swig/board.i index c0742c2c5c..e97b68e0ee 100644 --- a/pcbnew/swig/board.i +++ b/pcbnew/swig/board.i @@ -42,6 +42,7 @@ file near the top; only class BOARD functions go in board.i. HANDLE_EXCEPTIONS(BOARD::TracksInNetBetweenPoints) +%include layers_id_colors_and_visibility.i %include board_item.i %include board_item_container.i %include board_connected_item.i @@ -62,44 +63,6 @@ HANDLE_EXCEPTIONS(BOARD::TracksInNetBetweenPoints) %include netclass.i %include pcb_plot_params.i -%ignore operator++(SCH_LAYER_ID&); - -%ignore operator++(GAL_LAYER_ID&); - -%ignore operator+(const GAL_LAYER_ID&, int); - -%include layers_id_colors_and_visibility.h - -// Extend LSET by 2 methods to add or remove layers from the layer list -// Mainly used to add or remove layers of a pad layer list -%extend LSET -{ - LSET addLayer( PCB_LAYER_ID aLayer) { return self->set(aLayer); } - LSET removeLayer( PCB_LAYER_ID aLayer) { return self->reset(aLayer); } - LSET addLayerSet( LSET aLayerSet) { return *self |= aLayerSet; } - LSET removeLayerSet( LSET aLayerSet) { return *self &= ~aLayerSet; } - - %pythoncode - %{ - def AddLayer(self, layer): - return self.addLayer( layer ) - - def AddLayerSet(self, layers): - return self.addLayerSet( layers ) - - def RemoveLayer(self, layer): - return self.removeLayer( layer ) - - def RemoveLayerSet(self, layers): - return self.removeLayerSet( layers ) - %} -} -%{ -#include -#include -%} - - // std::vector templates %template(VIA_DIMENSION_Vector) std::vector; diff --git a/pcbnew/swig/layers_id_colors_and_visibility.i b/pcbnew/swig/layers_id_colors_and_visibility.i new file mode 100644 index 0000000000..ac1436dc0f --- /dev/null +++ b/pcbnew/swig/layers_id_colors_and_visibility.i @@ -0,0 +1,65 @@ + +%ignore operator++(SCH_LAYER_ID&); + +%ignore operator++(GAL_LAYER_ID&); + +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/** + * @file layers_id_colors_and_visibility.i + * @brief layers IDs, draw layers IDs, layers set and templates + * these IDs are used as physical layers or draw layers (for colors, visibility...) + */ +%ignore operator+(const GAL_LAYER_ID&, int); + +%include layers_id_colors_and_visibility.h + +// Extend LSET by 2 methods to add or remove layers from the layer list +// Mainly used to add or remove layers of a pad layer list +%extend LSET +{ + LSET addLayer( PCB_LAYER_ID aLayer) { return self->set(aLayer); } + LSET removeLayer( PCB_LAYER_ID aLayer) { return self->reset(aLayer); } + LSET addLayerSet( LSET aLayerSet) { return *self |= aLayerSet; } + LSET removeLayerSet( LSET aLayerSet) { return *self &= ~aLayerSet; } + + %pythoncode + %{ + def AddLayer(self, layer): + return self.addLayer( layer ) + + def AddLayerSet(self, layers): + return self.addLayerSet( layers ) + + def RemoveLayer(self, layer): + return self.removeLayer( layer ) + + def RemoveLayerSet(self, layers): + return self.removeLayerSet( layers ) + %} +} +%{ +#include +#include +%}