KiCad PCB EDA Suite
display_footprints_frame.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) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr
5  * Copyright (C) 2015 Wayne Stambaugh <stambaughw@gmail.com>
6  * Copyright (C) 2007-2020 KiCad Developers, see AUTHORS.txt for contributors.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, you may find one here:
20  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21  * or you may search the http://www.gnu.org website for the version 2 license,
22  * or you may write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24  */
25 
26 #include <bitmaps.h>
27 #include <class_board.h>
28 #include <class_module.h>
29 #include <common.h>
30 #include <confirm.h>
31 #include <cvpcb_settings.h>
33 #include <fp_lib_table.h>
34 #include <id.h>
35 #include <kiface_i.h>
36 #include <lib_id.h>
37 #include <macros.h>
38 #include <msgpanel.h>
39 #include <pcb_draw_panel_gal.h>
40 #include <pcb_painter.h>
41 #include <pgm_base.h>
42 #include <reporter.h>
44 #include <tool/action_toolbar.h>
45 #include <tool/common_tools.h>
46 #include <tool/tool_dispatcher.h>
47 #include <tool/tool_manager.h>
48 #include <tool/zoom_tool.h>
49 #include <cvpcb_mainframe.h>
51 #include <tools/cvpcb_actions.h>
52 #include <tools/pcb_actions.h>
53 #include <tools/pcb_viewer_tools.h> // shared tools with other pcbnew frames
55 #include <widgets/infobar.h>
56 
57 
58 BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
62 END_EVENT_TABLE()
63 
64 
66  PCB_BASE_FRAME( aKiway, aParent, FRAME_CVPCB_DISPLAY, _( "Footprint Viewer" ),
67  wxDefaultPosition, wxDefaultSize,
69 {
70  // Give an icon
71  wxIcon icon;
72  icon.CopyFromBitmap( KiBitmap( icon_cvpcb_xpm ) );
73  SetIcon( icon );
74 
75  SetBoard( new BOARD() );
76  SetScreen( new PCB_SCREEN( GetPageSizeIU() ) );
77 
78  // Create GAL canvas before loading settings
79 #ifdef __WXMAC__
80  // Cairo renderer doesn't handle Retina displays
82 #else
84 #endif
85  auto* gal_drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_FrameSize,
86  GetGalDisplayOptions(), backend );
87  SetCanvas( gal_drawPanel );
88 
89  // Don't show the default board solder mask clearance. Only the
90  // footprint or pad clearance setting should be shown if it is not 0.
92 
93  LoadSettings( config() );
94 
95  // Initialize some display options
96  auto displ_opts = GetDisplayOptions();
97  displ_opts.m_DisplayPadIsol = false; // Pad clearance has no meaning here
98 
99  // Track and via clearance has no meaning here.
100  displ_opts.m_ShowTrackClearanceMode = PCB_DISPLAY_OPTIONS::DO_NOT_SHOW_CLEARANCE;
101  SetDisplayOptions( displ_opts );
102 
103  // Create the manager and dispatcher & route draw panel events to the dispatcher
104  m_toolManager = new TOOL_MANAGER;
105  m_toolManager->SetEnvironment( GetBoard(), gal_drawPanel->GetView(),
106  gal_drawPanel->GetViewControls(), config(), this );
107  m_actions = new CVPCB_ACTIONS();
108  m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager, m_actions );
109  gal_drawPanel->SetEventDispatcher( m_toolDispatcher );
110 
111  m_toolManager->RegisterTool( new COMMON_TOOLS );
112  m_toolManager->RegisterTool( new ZOOM_TOOL );
113  m_toolManager->RegisterTool( new CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL );
114  m_toolManager->RegisterTool( new PCB_VIEWER_TOOLS );
115 
116  m_toolManager->GetTool<PCB_VIEWER_TOOLS>()->SetFootprintFrame( true );
117 
118  m_toolManager->InitTools();
119 
120  // Run the control tool, it is supposed to be always active
121  m_toolManager->InvokeTool( "cvpcb.FootprintViewerInteractiveSelection" );
122 
123  ReCreateHToolbar();
124  ReCreateVToolbar();
125  ReCreateOptToolbar();
126 
127  // Create the infobar
128  m_infoBar = new WX_INFOBAR( this, &m_auimgr );
129 
130  m_auimgr.SetManagedWindow( this );
131 
132  m_auimgr.AddPane( m_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" ).Top().Layer(6) );
133  m_auimgr.AddPane( m_optionsToolBar, EDA_PANE().VToolbar().Name( "OptToolbar" ).Left().Layer(3) );
134  m_auimgr.AddPane( m_infoBar, EDA_PANE().InfoBar().Name( "InfoBar" ).Top().Layer(1) );
135  m_auimgr.AddPane( GetCanvas(), EDA_PANE().Canvas().Name( "DrawFrame" ).Center() );
136  m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" ).Bottom().Layer(6) );
137 
138  // Call Update() to fix all pane default sizes, especially the "InfoBar" pane before
139  // hidding it.
140  m_auimgr.Update();
141 
142  // We don't want the infobar displayed right away
143  m_auimgr.GetPane( "InfoBar" ).Hide();
144  m_auimgr.Update();
145 
146  auto& galOpts = GetGalDisplayOptions();
147  galOpts.m_axesEnabled = true;
148 
149  ActivateGalCanvas();
150 
151  // Restore last zoom. (If auto-zooming we'll adjust when we load the footprint.)
152  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
153 
154  if( cfg )
155  GetCanvas()->GetView()->SetScale( cfg->m_FootprintViewerZoom );
156 
157  updateView();
158 
159  Show( true );
160 }
161 
162 
164 {
165  // Shutdown all running tools
166  if( m_toolManager )
168 
170  GetCanvas()->StopDrawing();
171  GetCanvas()->GetView()->Clear();
172  // Be sure any event cannot be fired after frame deletion:
173  GetCanvas()->SetEvtHandlerEnabled( false );
174 
175  delete GetScreen();
176  SetScreen( NULL ); // Be sure there is no double deletion
177 }
178 
179 
180 void DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow( wxCloseEvent& event )
181 {
182  Destroy();
183 }
184 
185 
187 {
188  // Currently, no vertical right toolbar.
189 }
190 
191 
193 {
194  if( m_optionsToolBar )
196  else
197  m_optionsToolBar = new ACTION_TOOLBAR( this, ID_OPT_TOOLBAR, wxDefaultPosition, wxDefaultSize,
198  KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL );
199 
202 
209 
215 
216  m_optionsToolBar->Realize();
217 }
218 
219 
221 {
222  // Note:
223  // To rebuild the aui toolbar, the more easy way is to clear ( calling m_mainToolBar.Clear() )
224  // all wxAuiToolBarItems.
225  // However the wxAuiToolBarItems are not the owners of controls managed by
226  // them ( m_zoomSelectBox and m_gridSelectBox ), and therefore do not delete them
227  // So we do not recreate them after clearing the tools.
228 
229  if( m_mainToolBar )
231  else
232  m_mainToolBar = new ACTION_TOOLBAR( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize,
233  KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT );
234 
241 
244 
246 
247  // Grid selection choice box.
248  if( !m_gridSelectBox )
250  wxDefaultPosition, wxDefaultSize, 0, NULL );
251 
253  m_mainToolBar->AddControl( m_gridSelectBox );
254 
256 
257  // Zoom selection choice box.
258  if( !m_zoomSelectBox )
260  wxDefaultPosition, wxDefaultSize, 0, NULL );
261 
263  m_mainToolBar->AddControl( m_zoomSelectBox );
264 
265  // after adding the buttons to the toolbar, must call Realize() to reflect
266  // the changes
267  m_mainToolBar->Realize();
268 }
269 
270 
272 {
273  auto cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
274  wxCHECK( cfg, /* void */ );
275 
276  // We don't allow people to change this right now, so make sure it's on
278 
280 
281  SetDisplayOptions( cfg->m_FootprintViewerDisplayOptions );
282 }
283 
284 
286 {
287  auto cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
288  wxCHECK( cfg, /* void */ );
289 
291 
292  cfg->m_FootprintViewerDisplayOptions = GetDisplayOptions();
293 
294  cfg->m_FootprintViewerZoom = GetCanvas()->GetView()->GetScale();
295 }
296 
297 
299 {
300  auto cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
301  wxCHECK( cfg, nullptr );
302  return &cfg->m_FootprintViewer;
303 }
304 
305 
307 {
308  auto cfg = dynamic_cast<CVPCB_SETTINGS*>( Kiface().KifaceSettings() );
309  wxCHECK( cfg, nullptr );
310  return &cfg->m_FootprintViewerMagneticSettings;
311 }
312 
313 
321 {
322 }
323 
324 
326 {
327  return COLOR4D( DARKGRAY );
328 }
329 
330 
331 MODULE* DISPLAY_FOOTPRINTS_FRAME::GetModule( const wxString& aFootprintName, REPORTER& aReporter )
332 {
333  MODULE* footprint = NULL;
334 
335  LIB_ID fpid;
336 
337  if( fpid.Parse( aFootprintName, LIB_ID::ID_PCB ) >= 0 )
338  {
339  aReporter.Report( wxString::Format( _( "Footprint ID \"%s\" is not valid." ),
340  aFootprintName ),
342  return NULL;
343  }
344 
345  wxString libNickname = FROM_UTF8( fpid.GetLibNickname().c_str() );
346  wxString fpName = FROM_UTF8( fpid.GetLibItemName().c_str() );
347 
348  FP_LIB_TABLE* fpTable = Prj().PcbFootprintLibs( Kiway() );
349  wxASSERT( fpTable );
350 
351  // See if the library requested is in the library table
352  if( !fpTable->HasLibrary( libNickname ) )
353  {
354  aReporter.Report( wxString::Format( _( "Library \"%s\" is not in the footprint library table." ),
355  libNickname ),
357  return NULL;
358  }
359 
360  // See if the footprint requested is in the library
361  if( !fpTable->FootprintExists( libNickname, fpName ) )
362  {
363  aReporter.Report( wxString::Format( _( "Footprint \"%s\" not found." ), aFootprintName ),
365  return NULL;
366  }
367 
368  try
369  {
370  footprint = fpTable->FootprintLoad( libNickname, fpName );
371  }
372  catch( const IO_ERROR& ioe )
373  {
374  DisplayError( this, ioe.What() );
375  return NULL;
376  }
377 
378  if( footprint )
379  {
380  footprint->SetParent( (EDA_ITEM*) GetBoard() );
381  footprint->SetPosition( wxPoint( 0, 0 ) );
382  return footprint;
383  }
384 
385  aReporter.Report( wxString::Format( _( "Footprint \"%s\" not found." ), aFootprintName ),
387  return NULL;
388 }
389 
390 
392 {
393  CVPCB_MAINFRAME* parentframe = (CVPCB_MAINFRAME *) GetParent();
394  MODULE* module = nullptr;
395  const FOOTPRINT_INFO* module_info = nullptr;
396 
398  GetCanvas()->GetView()->Clear();
399 
400  wxString footprintName = parentframe->GetSelectedFootprint();
401 
402  if( footprintName.IsEmpty() )
403  {
404  COMPONENT* comp = parentframe->GetSelectedComponent();
405 
406  if( comp )
407  footprintName = comp->GetFPID().GetUniStringLibId();
408  }
409 
410  INFOBAR_REPORTER infoReporter( m_infoBar );
411  m_infoBar->Dismiss();
412 
413  if( !footprintName.IsEmpty() )
414  {
415  SetTitle( wxString::Format( _( "Footprint: %s" ), footprintName ) );
416 
417  module = GetModule( footprintName, infoReporter );
418 
419  module_info = parentframe->m_FootprintsList->GetModuleInfo( footprintName );
420  }
421 
422  if( module )
423  GetBoard()->Add( module );
424 
425  if( module_info )
426  SetStatusText( wxString::Format( _( "Lib: %s" ), module_info->GetLibNickname() ), 0 );
427  else
428  SetStatusText( wxEmptyString, 0 );
429 
430  infoReporter.Finalize();
431 
432  updateView();
433 
434  UpdateStatusBar();
435 
436  GetCanvas()->Refresh();
437  Update3DView( true );
438 }
439 
440 
442 {
443  PCB_DRAW_PANEL_GAL* dp = static_cast<PCB_DRAW_PANEL_GAL*>( GetCanvas() );
444  dp->UpdateColors();
445  dp->DisplayBoard( GetBoard() );
446 
448 
449  if( GetAutoZoom() )
451  else
453 
454  UpdateMsgPanel();
455 }
456 
457 
459 {
460  MODULE* footprint = GetBoard()->GetFirstModule();
461  MSG_PANEL_ITEMS items;
462 
463  if( footprint )
464  footprint->GetMsgPanelInfo( this, items );
465 
466  SetMsgPanel( items );
467 }
468 
469 
471 {
474  m_mainToolBar->Refresh();
475 
481 
482  const PCB_DISPLAY_OPTIONS& opts = GetDisplayOptions();
483 
488 
489  m_optionsToolBar->Refresh();
490 }
491 
492 
494 {
495  auto* settings = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
496 
497  if( settings )
498  return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
499  else
500  return Pgm().GetSettingsManager().GetColorSettings();
501 }
502 
503 
505 {
506  return GetBoard()->GetFirstModule();
507 }
508 
509 
511 {
512  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
513  wxCHECK( cfg, /* void */ );
514  cfg->m_FootprintViewerAutoZoom = aAutoZoom;
515 }
516 
517 
519 {
520  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
521  wxCHECK( cfg, false );
522  return cfg->m_FootprintViewerAutoZoom;
523 }
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
void ShutdownAllTools()
Shutdown all tools with a currently registered event loop in this tool manager by waking them up with...
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:239
int m_SolderMaskMargin
Solder mask margin.
static TOOL_ACTION show3DViewer
Definition: actions.h:151
bool IsCurrentTool(const TOOL_ACTION &aAction) const
void SetAutoZoom(bool aAutoZoom) override
Set if the canvas should automatically zoom to the footprint on load.
ACTION_TOOLBAR.
const UTF8 & GetLibItemName() const
Definition: lib_id.h:114
const BITMAP_OPAQUE icon_cvpcb_xpm[1]
Definition: icon_cvpcb.cpp:158
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_holder.h:56
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
FOOTPRINT_LIST * m_FootprintsList
static wxString FROM_UTF8(const char *cstring)
function FROM_UTF8 converts a UTF8 encoded C string to a wxString for all wxWidgets build modes.
Definition: macros.h:114
static TOOL_ACTION zoomInCenter
Definition: actions.h:90
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
FOOTPRINT_INFO * GetModuleInfo(const wxString &aFootprintId)
Get info for a module by id.
Model changes (required full reload)
Definition: tool_base.h:82
COLOR4D GetGridColor() override
Function GetGridColor() , virtual.
This file is part of the common library.
wxString GetLibNickname() const override
MAGNETIC_SETTINGS * GetMagneticItemsSettings() override
COLOR_SETTINGS * GetColorSettings() override
Helper to retrieve the current color settings.
ACTION_TOOLBAR * m_optionsToolBar
MODULE * GetModule(const wxString &CmpName, REPORTER &aReporter)
virtual void SetScreen(BASE_SCREEN *aScreen)
static TOOL_ACTION zoomTool
Definition: actions.h:95
static const bool TOGGLE
void AddScaledSeparator(wxWindow *aWindow)
Add a separator that introduces space on either side to not squash the tools when scaled.
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
double m_FootprintViewerZoom
void Add(const TOOL_ACTION &aAction, bool aIsToggleEntry=false)
Function Add() Adds a TOOL_ACTION-based button to the toolbar.
static TOOL_ACTION zoomFitScreen
Definition: actions.h:93
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:140
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Function GetDesignSettings.
Definition: class_board.h:551
void UpdateZoomSelectBox()
Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes,...
void SetDisplayOptions(const PCB_DISPLAY_OPTIONS &aOptions)
#define FOOTPRINTVIEWER_FRAME_NAME
ACTION_TOOLBAR * m_mainToolBar
REPORTER is a pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:64
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
static TOOL_ACTION zoomFootprintAutomatically
Definition: pcb_actions.h:231
const PCB_DISPLAY_OPTIONS & GetDisplayOptions() const
Function GetDisplayOptions Display options control the way tracks, vias, outlines and other things ar...
bool always_show_cursor
Definition: app_settings.h:42
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)=0
Function Report is a pure virtual function to override in the derived object.
static TOOL_ACTION imperialUnits
Definition: actions.h:139
wxChoice * m_gridSelectBox
void updateView()
update the gal canvas (view, colors ...)
virtual void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:196
static TOOL_ACTION zoomOutCenter
Definition: actions.h:91
DISPLAY_FOOTPRINTS_FRAME is used to display footprints.
void OnCloseWindow(wxCloseEvent &Event) override
This file contains miscellaneous commonly used macros and functions.
const char * c_str() const
Definition: utf8.h:107
CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL.
BOARD_ITEM_CONTAINER * GetModel() const override
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:164
void UpdateGridSelectBox()
Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes,...
TOOL_MANAGER.
Definition: tool_manager.h:51
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
static TOOL_ACTION measureTool
Definition: actions.h:147
UNDO_REDO_CONTAINER is a holder to handle alist of undo (or redo) command.
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT) override
Adds an item to the container.
Stores the common settings that are saved and loaded for each window / frame.
Definition: app_settings.h:68
PCB_DISPLAY_OPTIONS handles display options like enable/disable some optional drawings.
void Dismiss() override
Dismisses the infobar and updates the containing layout and AUI manager (if one is provided).
Definition: infobar.cpp:139
static TOOL_ACTION centerContents
Definition: actions.h:96
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:91
CURSOR_SETTINGS cursor
Definition: app_settings.h:80
WINDOW_SETTINGS * GetWindowSettings(APP_SETTINGS_BASE *aCfg) override
Returns a pointer to the window settings for this frame.
#define NULL
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:33
void SetMsgPanel(const std::vector< MSG_PANEL_ITEM > &aList)
Clear the message panel and populates it with the contents of aList.
void DisplayBoard(BOARD *aBoard)
Function DisplayBoard adds all items from the current board to the VIEW, so they can be displayed by ...
bool IsGridVisible() const
void Clear()
Function Clear() Removes all items from the view.
Definition: view.cpp:1111
static TOOL_ACTION toggleGrid
Definition: actions.h:135
static TOOL_ACTION showPadNumbers
Definition: pcb_actions.h:230
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
wxChoice * m_zoomSelectBox
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
static TOOL_ACTION togglePolarCoords
Definition: actions.h:142
bool GetAutoZoom() override
Get if the canvas should automatically zoom to the footprint on load.
MODULE * GetFirstModule() const
Gets the first module in the list (used in footprint viewer/editor) or NULL if none.
Definition: class_board.h:330
void ResetTools(TOOL_BASE::RESET_REASON aReason)
Function ResetTools() Resets all tools (i.e.
KIWAY is a minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the s...
Definition: kiway.h:273
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:97
bool m_FootprintViewerAutoZoom
#define KICAD_DEFAULT_DRAWFRAME_STYLE
void Finalize()
Update the infobar with the reported text.
Definition: reporter.cpp:179
CVPCB_ACTIONS.
Definition: cvpcb_actions.h:40
void SyncToolbars() override
Update the toolbars (mostly settings/check buttons/checkboxes) with the current controller state.
void SetPosition(const wxPoint &aPos) override
virtual KIGFX::PCB_VIEW * GetView() const override
Function GetView() Returns a pointer to the VIEW instance used in the panel.
Specialization of the wxAuiPaneInfo class for KiCad panels.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=NULL) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
COMMON_TOOLS.
Definition: common_tools.h:38
void UpdateColors()
Updates the color settings in the painter and GAL.
TOOL_DISPATCHER.
COMPONENT is used to store components and all of their related information found in a netlist.
Definition: pcb_netlist.h:80
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Saves common frame parameters to a configuration data file.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Saves common frame parameters to a configuration data file.
BOARD * GetBoard()
VTBL_ENTRY FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:284
static TOOL_ACTION padDisplayMode
Definition: pcb_actions.h:224
static TOOL_ACTION graphicsOutlines
Display module edges as outlines.
Definition: pcb_actions.h:367
static TOOL_ACTION metricUnits
Definition: actions.h:140
A modified version of the wxInfoBar class that allows us to:
Definition: infobar.h:68
wxString GetSelectedFootprint()
void InitDisplay()
Function InitDisplay Refresh the full display for this frame: Set the title, the status line and redr...
virtual void UpdateStatusBar() override
Update the status bar information.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:48
see class PGM_BASE
void OnSelectGrid(wxCommandEvent &event)
Command event handler for selecting grid sizes.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:180
void SetEnvironment(EDA_ITEM *aModel, KIGFX::VIEW *aView, KIGFX::VIEW_CONTROLS *aViewControls, APP_SETTINGS_BASE *aSettings, TOOLS_HOLDER *aFrame)
Sets the work environment (model, view, view controls and the parent window).
WX_INFOBAR * m_infoBar
#define _(s)
Definition: 3d_actions.cpp:33
static TOOL_ACTION zoomRedraw
Definition: actions.h:87
COMPONENT * GetSelectedComponent()
Get the selected component from the component listbox.
void Toggle(const TOOL_ACTION &aAction, bool aState)
Applies the default toggle action.
EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boards.
Definition: base_struct.h:159
The common library.
PCB_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
std::vector< MSG_PANEL_ITEM > MSG_PANEL_ITEMS
Definition: msgpanel.h:102
PCB_VIEWER_TOOLS.
static constexpr int KICAD_AUI_TB_STYLE
Default style flags used for wxAUI toolbars
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
Color settings are a bit different than most of the settings objects in that there can be more than o...
void DeleteAllModules()
Removes all modules from the deque and frees the memory associated with them.
Definition: class_board.h:338
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
wxString GetUniStringLibId() const
Definition: lib_id.h:148
static TOOL_ACTION toggleCursorStyle
Definition: actions.h:98
Abstract interface for BOARD_ITEMs capable of storing other items inside.
BOARD * GetBoard() const
virtual void Update3DView(bool aForceReload, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
double GetScale() const
Function GetScale()
Definition: view.h:257
int Parse(const UTF8 &aId, LIB_ID_TYPE aType, bool aFix=false)
Parse LIB_ID with the information from aId.
Definition: lib_id.cpp:122
void ClearUndoORRedoList(UNDO_REDO_CONTAINER &aList, int aItemCount=-1) override
Function ClearUndoORRedoList free the undo or redo list from List element Wrappers are deleted.
Message panel definition file.
Struct IO_ERROR is a class used to hold an error message and may be used when throwing exceptions con...
Definition: ki_exception.h:76
PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
INFOBAR_REPORTER is a wrapper for reporting to a WX_INFOBAR UI element.
Definition: reporter.h:286
void StopDrawing()
Function StopDrawing() Prevents the GAL canvas from further drawing till it is recreated or StartDraw...
EDA_UNITS GetUserUnits() const
Return the user units currently in use.
static TOOL_ACTION selectionTool
Definition: actions.h:146
The CvPcb application main window.
virtual void OnSelectZoom(wxCommandEvent &event)
Set the zoom factor when selected by the zoom list box in the main tool bar.
static TOOL_ACTION textOutlines
Display texts as lines.
Definition: pcb_actions.h:370
void ClearToolbar()
Clear the toolbar and remove all associated menus.
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99