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.
		
		
		
		
		
			
		
			
				
					
					
						
							491 lines
						
					
					
						
							14 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							491 lines
						
					
					
						
							14 KiB
						
					
					
				
								/*
							 | 
						|
								 * This program source code file is part of KiCad, a free EDA CAD application.
							 | 
						|
								 *
							 | 
						|
								 * Copyright (C) 2020 Jon Evans <jon@craftyjon.com>
							 | 
						|
								 * Copyright (C) 2020-2023 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 3 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, see <http://www.gnu.org/licenses/>.
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#ifndef _APPEARANCE_CONTROLS_H
							 | 
						|
								#define _APPEARANCE_CONTROLS_H
							 | 
						|
								
							 | 
						|
								#include <vector>
							 | 
						|
								
							 | 
						|
								#include <board.h>
							 | 
						|
								#include <gal/color4d.h>
							 | 
						|
								#include <layer_ids.h>
							 | 
						|
								#include <project/board_project_settings.h>
							 | 
						|
								#include <widgets/appearance_controls_base.h>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class BITMAP_TOGGLE;
							 | 
						|
								class COLOR_SWATCH;
							 | 
						|
								class INDICATOR_ICON;
							 | 
						|
								class PCB_BASE_FRAME;
							 | 
						|
								class PCBNEW_SETTINGS;
							 | 
						|
								class ROW_ICON_PROVIDER;
							 | 
						|
								class GRID_BITMAP_TOGGLE_RENDERER;
							 | 
						|
								class WX_COLLAPSIBLE_PANE;
							 | 
						|
								class wxStaticLine;
							 | 
						|
								class wxSlider;
							 | 
						|
								class wxRadioButton;
							 | 
						|
								
							 | 
						|
								using KIGFX::COLOR4D;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								struct NET_GRID_ENTRY
							 | 
						|
								{
							 | 
						|
								    NET_GRID_ENTRY( int aCode, const wxString& aName, const COLOR4D& aColor, bool aVisible )
							 | 
						|
								    {
							 | 
						|
								        code    = aCode;
							 | 
						|
								        name    = aName;
							 | 
						|
								        color   = aColor;
							 | 
						|
								        visible = aVisible;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    int      code;
							 | 
						|
								    wxString name;
							 | 
						|
								    COLOR4D  color;
							 | 
						|
								    bool     visible;
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class NET_GRID_TABLE : public wxGridTableBase
							 | 
						|
								{
							 | 
						|
								public:
							 | 
						|
								    enum COLUMNS
							 | 
						|
								    {
							 | 
						|
								        COL_COLOR,
							 | 
						|
								        COL_VISIBILITY,
							 | 
						|
								        COL_LABEL,
							 | 
						|
								        COL_SIZE
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    static void* ColorToVoid( COLOR4D& aColor )
							 | 
						|
								    {
							 | 
						|
								        return static_cast<void*>( &aColor );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    static COLOR4D VoidToColor( void* aColor )
							 | 
						|
								    {
							 | 
						|
								        return *static_cast<COLOR4D*>( aColor );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								public:
							 | 
						|
								    NET_GRID_TABLE( PCB_BASE_FRAME* aFrame, wxColor aBackgroundColor );
							 | 
						|
								    ~NET_GRID_TABLE();
							 | 
						|
								
							 | 
						|
								    int GetNumberRows() override
							 | 
						|
								    {
							 | 
						|
								        return m_nets.size();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    int GetNumberCols() override
							 | 
						|
								    {
							 | 
						|
								        return COL_SIZE;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    wxGridCellAttr* GetAttr( int aRow, int aCol, wxGridCellAttr::wxAttrKind ) override;
							 | 
						|
								
							 | 
						|
								    wxString GetValue( int aRow, int aCol ) override;
							 | 
						|
								
							 | 
						|
								    void SetValue( int aRow, int aCol, const wxString& aValue ) override;
							 | 
						|
								
							 | 
						|
								    wxString GetTypeName( int aRow, int aCol ) override;
							 | 
						|
								
							 | 
						|
								    bool GetValueAsBool( int aRow, int aCol ) override;
							 | 
						|
								
							 | 
						|
								    void SetValueAsBool( int aRow, int aCol, bool aValue ) override;
							 | 
						|
								
							 | 
						|
								    void* GetValueAsCustom( int aRow, int aCol, const wxString& aTypeName ) override;
							 | 
						|
								
							 | 
						|
								    void SetValueAsCustom( int aRow, int aCol, const wxString& aTypeName, void* aValue ) override;
							 | 
						|
								
							 | 
						|
								    NET_GRID_ENTRY& GetEntry( int aRow );
							 | 
						|
								
							 | 
						|
								    int GetRowByNetcode( int aCode ) const;
							 | 
						|
								
							 | 
						|
								    void Rebuild();
							 | 
						|
								
							 | 
						|
								    void ShowAllNets();
							 | 
						|
								
							 | 
						|
								    void HideOtherNets( const NET_GRID_ENTRY& aNet );
							 | 
						|
								
							 | 
						|
								private:
							 | 
						|
								    void updateNetVisibility( const NET_GRID_ENTRY& aNet );
							 | 
						|
								
							 | 
						|
								    void updateNetColor( const NET_GRID_ENTRY& aNet );
							 | 
						|
								
							 | 
						|
								private:
							 | 
						|
								    PCB_BASE_FRAME* m_frame;
							 | 
						|
								
							 | 
						|
								    std::vector<NET_GRID_ENTRY> m_nets;
							 | 
						|
								
							 | 
						|
								    wxGridCellAttr* m_defaultAttr;
							 | 
						|
								    wxGridCellAttr* m_labelAttr;
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class APPEARANCE_CONTROLS : public APPEARANCE_CONTROLS_BASE, public BOARD_LISTENER
							 | 
						|
								{
							 | 
						|
								public:
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Container for an appearance setting (can control a single board layer, or GAL layer, etc)
							 | 
						|
								     */
							 | 
						|
								    struct APPEARANCE_SETTING
							 | 
						|
								    {
							 | 
						|
								        int      id;
							 | 
						|
								        wxString label;
							 | 
						|
								        wxString tooltip;
							 | 
						|
								        bool     visible;
							 | 
						|
								        bool     can_control_opacity;
							 | 
						|
								        bool     spacer;
							 | 
						|
								
							 | 
						|
								        wxPanel*        ctl_panel;
							 | 
						|
								        INDICATOR_ICON* ctl_indicator;
							 | 
						|
								        BITMAP_TOGGLE*  ctl_visibility;
							 | 
						|
								        COLOR_SWATCH*   ctl_color;
							 | 
						|
								        wxStaticText*   ctl_text;
							 | 
						|
								        wxSlider*       ctl_opacity;
							 | 
						|
								
							 | 
						|
								        APPEARANCE_SETTING( const wxString& aLabel, int aId,
							 | 
						|
								                            const wxString& aTooltip = wxEmptyString,
							 | 
						|
								                            bool aCanControlOpacity = false ) :
							 | 
						|
								                id( aId ),
							 | 
						|
								                label( aLabel ),
							 | 
						|
								                tooltip( aTooltip ),
							 | 
						|
								                visible( true ),
							 | 
						|
								                can_control_opacity( aCanControlOpacity ),
							 | 
						|
								                spacer( false ),
							 | 
						|
								                ctl_panel( nullptr ),
							 | 
						|
								                ctl_indicator( nullptr ),
							 | 
						|
								                ctl_visibility( nullptr ),
							 | 
						|
								                ctl_color( nullptr ),
							 | 
						|
								                ctl_text( nullptr ),
							 | 
						|
								                ctl_opacity( nullptr )
							 | 
						|
								        {
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        APPEARANCE_SETTING() :
							 | 
						|
								                id( -1 ),
							 | 
						|
								                visible( false ),
							 | 
						|
								                can_control_opacity( false ),
							 | 
						|
								                spacer( true ),
							 | 
						|
								                ctl_panel( nullptr ),
							 | 
						|
								                ctl_indicator( nullptr ),
							 | 
						|
								                ctl_visibility( nullptr ),
							 | 
						|
								                ctl_color( nullptr ),
							 | 
						|
								                ctl_text( nullptr ),
							 | 
						|
								                ctl_opacity( nullptr )
							 | 
						|
								        {
							 | 
						|
								        }
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    APPEARANCE_CONTROLS( PCB_BASE_FRAME* aParent, wxWindow* aFocusOwner, bool aFpEditor = false );
							 | 
						|
								    ~APPEARANCE_CONTROLS();
							 | 
						|
								
							 | 
						|
								    wxSize GetBestSize() const;
							 | 
						|
								
							 | 
						|
								    void OnLanguageChanged();
							 | 
						|
								
							 | 
						|
								    ///< Update the panel contents from the application and board models.
							 | 
						|
								    void OnBoardChanged();
							 | 
						|
								
							 | 
						|
								    void OnBoardNetSettingsChanged( BOARD& aBoard ) override;
							 | 
						|
								    void OnBoardItemAdded( BOARD& aBoard, BOARD_ITEM* aItem ) override;
							 | 
						|
								    void OnBoardItemsAdded( BOARD& aBoard, std::vector<BOARD_ITEM*>& aItems ) override;
							 | 
						|
								    void OnBoardItemRemoved( BOARD& aBoard, BOARD_ITEM* aItem ) override;
							 | 
						|
								    void OnBoardItemsRemoved( BOARD& aBoard, std::vector<BOARD_ITEM*>& aItems ) override;
							 | 
						|
								    void OnBoardItemChanged( BOARD& aBoard, BOARD_ITEM* aItem ) override;
							 | 
						|
								    void OnBoardItemsChanged( BOARD& aBoard, std::vector<BOARD_ITEM*>& aItems ) override;
							 | 
						|
								
							 | 
						|
								    ///< Update the colors on all the widgets from the new chosen color theme.
							 | 
						|
								    void OnColorThemeChanged();
							 | 
						|
								
							 | 
						|
								    ///< Respond to change in OS's DarkMode
							 | 
						|
								    void OnDarkModeToggle();
							 | 
						|
								
							 | 
						|
								    ///< Update the widget when the active board layer is changed.
							 | 
						|
								    void OnLayerChanged();
							 | 
						|
								
							 | 
						|
								    /// Notifies the panel when a net has been hidden or shown via the external tool.
							 | 
						|
								    void OnNetVisibilityChanged( int aNetCode, bool aVisibility );
							 | 
						|
								
							 | 
						|
								    ///< Manually update visibility for a given layer
							 | 
						|
								    void SetLayerVisible( int aLayer, bool isVisible );
							 | 
						|
								
							 | 
						|
								    void SetObjectVisible( GAL_LAYER_ID aLayer, bool isVisible = true );
							 | 
						|
								
							 | 
						|
								    void UpdateDisplayOptions();
							 | 
						|
								
							 | 
						|
								    ///< Return a list of the layer presets created by the user.
							 | 
						|
								    std::vector<LAYER_PRESET> GetUserLayerPresets() const;
							 | 
						|
								
							 | 
						|
								    ///< Update the current layer presets from those saved in the project file.
							 | 
						|
								    void SetUserLayerPresets( std::vector<LAYER_PRESET>& aPresetList );
							 | 
						|
								
							 | 
						|
								    void ApplyLayerPreset( const wxString& aPresetName );
							 | 
						|
								
							 | 
						|
								    void ApplyLayerPreset( const LAYER_PRESET& aPreset );
							 | 
						|
								
							 | 
						|
								    wxString GetActiveLayerPreset() const
							 | 
						|
								    {
							 | 
						|
								        if( m_currentPreset )
							 | 
						|
								            return m_currentPreset->name;
							 | 
						|
								        else
							 | 
						|
								            return wxEmptyString;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    const wxArrayString& GetLayerPresetsMRU() { return m_presetMRU; }
							 | 
						|
								
							 | 
						|
								    ///< Return a list of viewports created by the user.
							 | 
						|
								    std::vector<VIEWPORT> GetUserViewports() const;
							 | 
						|
								
							 | 
						|
								    ///< Update the current viewports from those saved in the project file.
							 | 
						|
								    void SetUserViewports( std::vector<VIEWPORT>& aPresetList );
							 | 
						|
								
							 | 
						|
								    void ApplyViewport( const wxString& aPresetName );
							 | 
						|
								
							 | 
						|
								    void ApplyViewport( const VIEWPORT& aPreset );
							 | 
						|
								
							 | 
						|
								    const wxArrayString& GetViewportsMRU() { return m_viewportMRU; }
							 | 
						|
								
							 | 
						|
								    void OnColorSwatchChanged( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void OnLayerContextMenu( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    ///< Return the index of the current tab (0-2).
							 | 
						|
								    int GetTabIndex() const;
							 | 
						|
								
							 | 
						|
								    ///< Set the current notebook tab.
							 | 
						|
								    void SetTabIndex( int aTab );
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Function to force a redraw of the collapsible panes in this control.
							 | 
						|
								     */
							 | 
						|
								    void RefreshCollapsiblePanes();
							 | 
						|
								
							 | 
						|
								    bool IsLayerOptionsExpanded();
							 | 
						|
								    bool IsNetOptionsExpanded();
							 | 
						|
								
							 | 
						|
								protected:
							 | 
						|
								    void OnNotebookPageChanged( wxNotebookEvent& event ) override;
							 | 
						|
								    void OnSetFocus( wxFocusEvent& aEvent ) override;
							 | 
						|
								    void OnSize( wxSizeEvent& aEvent ) override;
							 | 
						|
								    void OnNetGridClick( wxGridEvent& event ) override;
							 | 
						|
								    void OnNetGridDoubleClick( wxGridEvent& event ) override;
							 | 
						|
								    void OnNetGridRightClick( wxGridEvent& event ) override;
							 | 
						|
								    void OnNetGridMouseEvent( wxMouseEvent& aEvent );
							 | 
						|
								
							 | 
						|
								private:
							 | 
						|
								    void createControls();
							 | 
						|
								
							 | 
						|
								    void rebuildLayers();
							 | 
						|
								
							 | 
						|
								    void rebuildLayerContextMenu();
							 | 
						|
								
							 | 
						|
								    void syncColorsAndVisibility();
							 | 
						|
								
							 | 
						|
								    void rebuildObjects();
							 | 
						|
								
							 | 
						|
								    void syncObjectSettings();
							 | 
						|
								
							 | 
						|
								    void buildNetClassMenu( wxMenu& aMenu, bool isDefaultClass, const wxString& aName );
							 | 
						|
								
							 | 
						|
								    void rebuildNets();
							 | 
						|
								
							 | 
						|
								    void loadDefaultLayerPresets();
							 | 
						|
								
							 | 
						|
								    void rebuildLayerPresetsWidget();
							 | 
						|
								
							 | 
						|
								    void syncLayerPresetSelection();
							 | 
						|
								
							 | 
						|
								    void rebuildViewportsWidget();
							 | 
						|
								
							 | 
						|
								    void onLayerLeftClick( wxMouseEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void rightClickHandler( wxMouseEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void onLayerVisibilityToggled( PCB_LAYER_ID aLayer );
							 | 
						|
								
							 | 
						|
								    void onObjectVisibilityChanged( GAL_LAYER_ID aLayer, bool isVisible, bool isFinal );
							 | 
						|
								
							 | 
						|
								    void setVisibleLayers( LSET aLayers );
							 | 
						|
								
							 | 
						|
								    void setVisibleObjects( GAL_SET aObjects );
							 | 
						|
								
							 | 
						|
								    LSET getVisibleLayers();
							 | 
						|
								
							 | 
						|
								    GAL_SET getVisibleObjects();
							 | 
						|
								
							 | 
						|
								    void onObjectOpacitySlider( int aLayer, float aOpacity );
							 | 
						|
								
							 | 
						|
								    void updateLayerPresetSelection( const wxString& aName );
							 | 
						|
								
							 | 
						|
								    void onLayerPresetChanged( wxCommandEvent& aEvent ) override;
							 | 
						|
								
							 | 
						|
								    void doApplyLayerPreset( const LAYER_PRESET& aPreset );
							 | 
						|
								
							 | 
						|
								    void updateViewportSelection( const wxString& aName );
							 | 
						|
								
							 | 
						|
								    void onViewportChanged( wxCommandEvent& aEvent ) override;
							 | 
						|
								
							 | 
						|
								    void doApplyViewport( const VIEWPORT& aViewport );
							 | 
						|
								
							 | 
						|
								    void onNetclassVisibilityChanged( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void showNetclass( const wxString& aClassName, bool aShow = true );
							 | 
						|
								
							 | 
						|
								    void onNetContextMenu( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void onNetclassColorChanged( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    wxString netclassNameFromEvent( wxEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void onNetColorMode( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void onRatsnestMode( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void onNetclassContextMenu( wxCommandEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void handleBoardItemsChanged();
							 | 
						|
								
							 | 
						|
								    void passOnFocus();
							 | 
						|
								
							 | 
						|
								    void idleFocusHandler( wxIdleEvent& aEvent );
							 | 
						|
								
							 | 
						|
								    void onReadOnlySwatch();
							 | 
						|
								
							 | 
						|
								    bool doesBoardItemNeedRebuild( BOARD_ITEM* aBoardItem );
							 | 
						|
								
							 | 
						|
								    bool doesBoardItemNeedRebuild( std::vector<BOARD_ITEM*>& aBoardItems );
							 | 
						|
								
							 | 
						|
								    PCB_BASE_FRAME* m_frame;
							 | 
						|
								
							 | 
						|
								    wxWindow* m_focusOwner;
							 | 
						|
								
							 | 
						|
								    static const APPEARANCE_SETTING s_objectSettings[];
							 | 
						|
								
							 | 
						|
								    ROW_ICON_PROVIDER* m_iconProvider;
							 | 
						|
								
							 | 
						|
								    BOARD* m_board;
							 | 
						|
								
							 | 
						|
								    bool m_isFpEditor;
							 | 
						|
								
							 | 
						|
								    // Nets grid view
							 | 
						|
								    NET_GRID_TABLE* m_netsTable;
							 | 
						|
								
							 | 
						|
								    GRID_BITMAP_TOGGLE_RENDERER* m_toggleGridRenderer;
							 | 
						|
								
							 | 
						|
								    /// Grid cell that is being hovered over, for tooltips
							 | 
						|
								    wxGridCellCoords m_hoveredCell;
							 | 
						|
								
							 | 
						|
								    std::vector<std::unique_ptr<APPEARANCE_SETTING>> m_layerSettings;
							 | 
						|
								    std::map<PCB_LAYER_ID, APPEARANCE_SETTING*>      m_layerSettingsMap;
							 | 
						|
								
							 | 
						|
								    std::vector<std::unique_ptr<APPEARANCE_SETTING>> m_objectSettings;
							 | 
						|
								    std::map<GAL_LAYER_ID, APPEARANCE_SETTING*>      m_objectSettingsMap;
							 | 
						|
								
							 | 
						|
								    std::vector<std::unique_ptr<APPEARANCE_SETTING>> m_netclassSettings;
							 | 
						|
								    std::map<wxString, APPEARANCE_SETTING*>          m_netclassSettingsMap;
							 | 
						|
								
							 | 
						|
								    // TODO(JE) Move preset storage to the PCB_CONTROL tool
							 | 
						|
								
							 | 
						|
								    std::map<wxString, LAYER_PRESET> m_layerPresets;
							 | 
						|
								    LAYER_PRESET*                    m_currentPreset;
							 | 
						|
								    LAYER_PRESET*                    m_lastSelectedUserPreset;
							 | 
						|
								    wxArrayString                    m_presetMRU;
							 | 
						|
								
							 | 
						|
								    std::map<wxString, VIEWPORT>     m_viewports;
							 | 
						|
								    VIEWPORT*                        m_lastSelectedViewport;
							 | 
						|
								    wxArrayString                    m_viewportMRU;
							 | 
						|
								
							 | 
						|
								    wxMenu*                          m_layerContextMenu;
							 | 
						|
								
							 | 
						|
								    /// Stores wxIDs for each netclass for control event mapping
							 | 
						|
								    std::map<int, wxString> m_netclassIdMap;
							 | 
						|
								
							 | 
						|
								    /// The name of the netclass that was right-clicked
							 | 
						|
								    wxString m_contextMenuNetclass;
							 | 
						|
								
							 | 
						|
								    wxBoxSizer* m_layersOuterSizer;
							 | 
						|
								    wxBoxSizer* m_objectsOuterSizer;
							 | 
						|
								
							 | 
						|
								    // The built-in layer presets
							 | 
						|
								    static LAYER_PRESET presetNoLayers;
							 | 
						|
								    static LAYER_PRESET presetAllLayers;
							 | 
						|
								    static LAYER_PRESET presetAllCopper;
							 | 
						|
								    static LAYER_PRESET presetInnerCopper;
							 | 
						|
								    static LAYER_PRESET presetFront;
							 | 
						|
								    static LAYER_PRESET presetFrontAssembly;
							 | 
						|
								    static LAYER_PRESET presetBack;
							 | 
						|
								    static LAYER_PRESET presetBackAssembly;
							 | 
						|
								    // a LAYER_PRESET used only to store the objects visibility of the
							 | 
						|
								    // last selected built-in LAYER_PRESET preset
							 | 
						|
								    static LAYER_PRESET m_lastBuiltinPreset;
							 | 
						|
								
							 | 
						|
								    int m_pointSize;
							 | 
						|
								
							 | 
						|
								    wxColour m_layerPanelColour;
							 | 
						|
								
							 | 
						|
								    // Layer display options controls
							 | 
						|
								    WX_COLLAPSIBLE_PANE* m_paneLayerDisplayOptions;
							 | 
						|
								    wxStaticText*        m_inactiveLayersLabel;
							 | 
						|
								    wxRadioButton*       m_rbHighContrastNormal;
							 | 
						|
								    wxRadioButton*       m_rbHighContrastDim;
							 | 
						|
								    wxRadioButton*       m_rbHighContrastOff;
							 | 
						|
								    wxStaticLine*        m_layerDisplaySeparator;
							 | 
						|
								    wxCheckBox*          m_cbFlipBoard;
							 | 
						|
								
							 | 
						|
								    // Net display options controls
							 | 
						|
								    WX_COLLAPSIBLE_PANE* m_paneNetDisplayOptions;
							 | 
						|
								    wxStaticText*        m_txtNetDisplayTitle;
							 | 
						|
								    wxRadioButton*       m_rbNetColorAll;
							 | 
						|
								    wxRadioButton*       m_rbNetColorRatsnest;
							 | 
						|
								    wxRadioButton*       m_rbNetColorOff;
							 | 
						|
								    wxStaticText*        m_txtRatsnestVisibility;
							 | 
						|
								    wxRadioButton*       m_rbRatsnestAllLayers;
							 | 
						|
								    wxRadioButton*       m_rbRatsnestVisLayers;
							 | 
						|
								    wxRadioButton*       m_rbRatsnestNone;
							 | 
						|
								
							 | 
						|
								    enum POPUP_ID
							 | 
						|
								    {
							 | 
						|
								        ID_CHANGE_COLOR = wxID_HIGHEST,
							 | 
						|
								        ID_SET_NET_COLOR,
							 | 
						|
								        ID_CLEAR_NET_COLOR,
							 | 
						|
								        ID_SHOW_ALL_NETS,
							 | 
						|
								        ID_HIDE_OTHER_NETS,
							 | 
						|
								        ID_HIGHLIGHT_NET,
							 | 
						|
								        ID_SELECT_NET,
							 | 
						|
								        ID_DESELECT_NET,
							 | 
						|
								        ID_SHOW_ALL_COPPER_LAYERS,
							 | 
						|
								        ID_HIDE_ALL_COPPER_LAYERS,
							 | 
						|
								        ID_HIDE_ALL_BUT_ACTIVE,
							 | 
						|
								        ID_PRESET_NO_LAYERS,
							 | 
						|
								        ID_PRESET_ALL_LAYERS,
							 | 
						|
								        ID_PRESET_FRONT,
							 | 
						|
								        ID_PRESET_FRONT_ASSEMBLY,
							 | 
						|
								        ID_PRESET_INNER_COPPER,
							 | 
						|
								        ID_PRESET_BACK,
							 | 
						|
								        ID_PRESET_BACK_ASSEMBLY,
							 | 
						|
								        ID_HIDE_ALL_NON_COPPER,
							 | 
						|
								        ID_SHOW_ALL_NON_COPPER,
							 | 
						|
								        ID_LAST_VALUE
							 | 
						|
								    };
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								#endif
							 |