KiCad PCB EDA Suite
panel_display_options.cpp
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2015 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
5  * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software: you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by the
9  * Free Software Foundation, either version 3 of the License, or (at your
10  * option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #include <fctsys.h>
22 #include <pcbnew.h>
23 #include <pcb_edit_frame.h>
24 #include <pcb_display_options.h>
25 #include <pcbnew_settings.h>
26 #include <config_map.h>
27 #include <panel_display_options.h>
28 #include <pcb_view.h>
29 #include <pcb_painter.h>
30 #include <widgets/paged_dialog.h>
32 
33 
35 {
41 };
42 
43 
45  PAGED_DIALOG* aParent ) :
46  PANEL_DISPLAY_OPTIONS_BASE( aParent->GetTreebook() ),
47  m_frame( aFrame )
48 {
50  m_galOptsPanel = new GAL_OPTIONS_PANEL( this, galOptions );
51 
52  m_galOptionsSizer->Add( m_galOptsPanel, 1, wxEXPAND, 0 );
53 
54  m_optionsBook->SetSelection( dynamic_cast<PCB_EDIT_FRAME*>( m_frame ) ? 1 : 0 );
55 }
56 
57 
59 {
60  PCB_EDIT_FRAME* pcbEdit = dynamic_cast<PCB_EDIT_FRAME*>( m_frame );
61 
62  if( pcbEdit )
63  {
64  const PCB_DISPLAY_OPTIONS& displ_opts = pcbEdit->GetDisplayOptions();
65 
68 
69  m_OptDisplayPadClearence->SetValue( displ_opts.m_DisplayPadIsol );
70  m_OptDisplayPadNumber->SetValue( displ_opts.m_DisplayPadNum );
72  m_ShowNetNamesOption->SetSelection( displ_opts.m_DisplayNetNamesMode );
73 
74  CROSS_PROBING_SETTINGS& crossProbing = pcbEdit->GetPcbNewSettings()->m_CrossProbing;
75 
76  m_checkCrossProbeCenter->SetValue( crossProbing.center_on_items );
77  m_checkCrossProbeZoom->SetValue( crossProbing.zoom_to_fit );
78  m_checkCrossProbeAutoHighlight->SetValue( crossProbing.auto_highlight );
79  }
80 
82 
83  return true;
84 }
85 
86 
87 /*
88  * Update variables with new options
89  */
91 {
93 
94  // Apply changes to the GAL
95  KIGFX::VIEW* view = m_frame->GetCanvas()->GetView();
96  KIGFX::PCB_PAINTER* painter = static_cast<KIGFX::PCB_PAINTER*>( view->GetPainter() );
97  KIGFX::PCB_RENDER_SETTINGS* settings = painter->GetSettings();
98 
99  PCB_EDIT_FRAME* pcbEdit = dynamic_cast<PCB_EDIT_FRAME*>( m_frame );
100 
101  if( pcbEdit )
102  {
103  PCB_DISPLAY_OPTIONS displ_opts = pcbEdit->GetDisplayOptions();
104 
107 
108  displ_opts.m_DisplayPadIsol = m_OptDisplayPadClearence->GetValue();
109  displ_opts.m_DisplayPadNum = m_OptDisplayPadNumber->GetValue();
110 
112 
113  displ_opts.m_DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection();
114 
115  pcbEdit->SetDisplayOptions( displ_opts );
116  settings->LoadDisplayOptions( displ_opts, pcbEdit->ShowPageLimits() );
118 
119  CROSS_PROBING_SETTINGS& crossProbing = pcbEdit->GetPcbNewSettings()->m_CrossProbing;
120 
121  crossProbing.center_on_items = m_checkCrossProbeCenter->GetValue();
122  crossProbing.zoom_to_fit = m_checkCrossProbeZoom->GetValue();
123  crossProbing.auto_highlight = m_checkCrossProbeAutoHighlight->GetValue();
124  }
125 
126  view->RecacheAllItems();
128 
129  return true;
130 }
131 
132 
bool TransferDataFromWindow() override
show a marker on pads with no nets
void SetElementVisibility(GAL_LAYER_ID aElement, bool aNewState)
Function SetElementVisibility changes the visibility of an element category.
KIGFX::GAL_DISPLAY_OPTIONS & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
static const UTIL::CFG_MAP< PCB_DISPLAY_OPTIONS::TRACE_CLEARANCE_DISPLAY_MODE_T > traceClearanceSelectMap
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void RecacheAllItems()
Function RecacheAllItems() Rebuilds GAL display lists.
Definition: view.cpp:1402
void SetDisplayOptions(const PCB_DISPLAY_OPTIONS &aOptions)
PCBNEW_SETTINGS * GetPcbNewSettings()
Class PANEL_DISPLAY_OPTIONS_BASE.
PCB_PAINTER Contains methods for drawing PCB-specific items.
Definition: pcb_painter.h:258
const PCB_DISPLAY_OPTIONS & GetDisplayOptions() const
Function GetDisplayOptions Display options control the way tracks, vias, outlines and other things ar...
PAINTER * GetPainter() const
Function GetPainter() Returns the painter object used by the view for drawing VIEW_ITEMS.
Definition: view.h:199
bool ShowPageLimits() const
TRACE_CLEARANCE_DISPLAY_MODE_T m_ShowTrackClearanceMode
How trace clearances are displayed.
Auxiliary rendering target (noncached)
Definition: definitions.h:49
GAL_OPTIONS_PANEL * m_galOptsPanel
PCB_RENDER_SETTINGS Stores PCB specific render settings.
Definition: pcb_painter.h:62
Cross-probing behavior.
Definition: app_settings.h:30
PCB_DISPLAY_OPTIONS handles display options like enable/disable some optional drawings.
bool TransferDataToWindow() override
virtual PCB_RENDER_SETTINGS * GetSettings() override
Definition: pcb_painter.h:270
PANEL_DISPLAY_OPTIONS(PCB_BASE_FRAME *aFrame, PAGED_DIALOG *aWindow)
bool TransferDataToWindow() override
Load the panel controls from the given opt.
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target 'dirty' flag.
Definition: view.h:585
static CFG_NATIVE_VAL< MAP > GetValFromConfig(const MAP &aMap, long aConf)
Get the native value corresponding to the config value (read from file or UI, probably) and find it i...
Definition: config_map.h:96
virtual KIGFX::PCB_VIEW * GetView() const override
Function GetView() Returns a pointer to the VIEW instance used in the panel.
bool zoom_to_fit
Zoom to fit items (ignored if center_on_items is off)
Definition: app_settings.h:33
bool auto_highlight
Automatically turn on highlight mode in the target frame.
Definition: app_settings.h:34
PCB_EDIT_FRAME is the main frame for Pcbnew.
std::vector< std::pair< T, long > > CFG_MAP
A config value table is a list of native values (usually enums) to a different set of values,...
Definition: config_map.h:49
CROSS_PROBING_SETTINGS m_CrossProbing
Definition: app_settings.h:141
VIEW.
Definition: view.h:61
bool IsElementVisible(GAL_LAYER_ID aElement) const
Function IsElementVisible tests whether a given element category is visible.
bool center_on_items
Automatically pan to cross-probed items.
Definition: app_settings.h:32
Definition of PCB_DISPLAY_OPTIONS class.
PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
static long GetConfigForVal(const MAP &aMap, CFG_NATIVE_VAL< MAP > aVal)
Get the mapped config value (the one to write to file, or use in an index) from the given native (pro...
Definition: config_map.h:69
bool TransferDataFromWindow() override
Read the options set in the UI into the given options object.