You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							93 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							93 lines
						
					
					
						
							4.0 KiB
						
					
					
				| /* | |
|  * This program source code file is part of KiCad, a free EDA CAD application. | |
|  * | |
|  * Copyright (C) 2012-2015 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr | |
|  * Copyright (C) 1992-2015 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 | |
|  */ | |
| 
 | |
| #ifndef PCB_LAYER_BOX_SELECTOR_H | |
| #define PCB_LAYER_BOX_SELECTOR_H | |
|  | |
| #include <widgets/layer_box_selector.h> | |
|  | |
| class PCB_BASE_FRAME; | |
| 
 | |
| /** | |
|  * Class to display a pcb layer list in a wxBitmapComboBox. | |
|  */ | |
| class PCB_LAYER_BOX_SELECTOR : public LAYER_BOX_SELECTOR | |
| { | |
|     PCB_BASE_FRAME* m_boardFrame; | |
| 
 | |
|     LSET     m_layerMaskDisable;        // A mask to remove some (not allowed) layers | |
|                                         // from layer list | |
|     bool     m_showNotEnabledBrdlayers; // true to list all allowed layers | |
|                                         // (with not activated layers flagged) | |
|     wxString m_undefinedLayerName;      // if not empty add an item with this name which sets | |
|                                         // the layer to UNDEFINED_LAYER | |
|  | |
| public: | |
|     // If you are thinking the constructor is a bit curious, just remember it is automatically | |
|     // generated when used in wxFormBuilder files, and so must have the same signature as the | |
|     // wxBitmapComboBox constructor.  In particular, value and style are not used by this class. | |
|     PCB_LAYER_BOX_SELECTOR( wxWindow* parent, wxWindowID id, | |
|                         const wxString& value = wxEmptyString, | |
|                         const wxPoint& pos = wxDefaultPosition, | |
|                         const wxSize& size = wxDefaultSize, | |
|                         int n = 0, const wxString choices[] = NULL, int style = 0 ) : | |
|         LAYER_BOX_SELECTOR( parent, id, pos, size, n, choices ) | |
|     { | |
|         m_boardFrame = NULL; | |
|         m_showNotEnabledBrdlayers = false; | |
|     } | |
| 
 | |
|     // SetBoardFrame should be called after creating a PCB_LAYER_BOX_SELECTOR.  It is not passed | |
|     // through the constructor because it must have the same signature as wxBitmapComboBox for | |
|     // use with wxFormBuilder. | |
|     void SetBoardFrame( PCB_BASE_FRAME* aFrame ) { m_boardFrame = aFrame; }; | |
| 
 | |
|     // SetLayerSet allows disableing some layers, which are not shown in list | |
|     void SetNotAllowedLayerSet( LSET aMask ) { m_layerMaskDisable = aMask; } | |
| 
 | |
|     // If the UNDEFINED_LAYER should be selectable, give it a name here.  Usually either | |
|     // INDETERMINATE_STATE or INDETERMINATE_ACTION. | |
|     void SetUndefinedLayerName( const wxString& aName ) { m_undefinedLayerName = aName; } | |
| 
 | |
|     // Reload the Layers names and bitmaps | |
|     void Resync() override; | |
| 
 | |
|     // Allow (or not) the layers not activated for the current board to be shown in layer | |
|     // selector. Not actavated layers have their names appended with "(not activated)". | |
|     void ShowNonActivatedLayers( bool aShow ) { m_showNotEnabledBrdlayers = aShow; } | |
| 
 | |
| private: | |
|     // Returns a color index from the layer id | |
|     COLOR4D getLayerColor( LAYER_NUM aLayer ) const override; | |
| 
 | |
|     // Returns true if the layer id is enabled (i.e. if it should be displayed) | |
|     bool isLayerEnabled( LAYER_NUM aLayer ) const override; | |
| 
 | |
|     // Returns the name of the layer id | |
|     wxString getLayerName( LAYER_NUM aLayer ) const override; | |
| 
 | |
|     LSET getEnabledLayers() const; | |
| }; | |
| 
 | |
| #endif // PCB_LAYER_BOX_SELECTOR_H
 |