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-2021 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 <board.h>
28 #include <footprint.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_base.h>
36 #include <lib_id.h>
37 #include <macros.h>
38 #include <widgets/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_editor_conditions.h> // Shared conditions with other Pcbnew frames
54 #include <tools/pcb_viewer_tools.h> // shared tools with other Pcbnew frames
56 #include <widgets/infobar.h>
57 #include <wx/choice.h>
58 #include <wx/debug.h>
59 
60 
61 BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
62  EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow )
65 END_EVENT_TABLE()
66 
67 
69  PCB_BASE_FRAME( aKiway, aParent, FRAME_CVPCB_DISPLAY, _( "Footprint Viewer" ),
70  wxDefaultPosition, wxDefaultSize,
72 {
73  // Give an icon
74  wxIcon icon;
75  icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_cvpcb ) );
76  SetIcon( icon );
77 
78  SetBoard( new BOARD() );
79 
80  // This board will only be used to hold a footprint for viewing
82 
83  SetScreen( new PCB_SCREEN( GetPageSizeIU() ) );
84 
85  // Create GAL canvas before loading settings
86  auto* gal_drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_frameSize,
87  GetGalDisplayOptions(),
89  SetCanvas( gal_drawPanel );
90 
91  // Don't show the default board solder mask clearance. Only the
92  // footprint or pad clearance setting should be shown if it is not 0.
94 
95  LoadSettings( config() );
96 
97  // Initialize some display options
98  auto displ_opts = GetDisplayOptions();
99  displ_opts.m_DisplayPadClearance = false; // Pad clearance has no meaning here
100 
101  // Track and via clearance has no meaning here.
102  displ_opts.m_ShowTrackClearanceMode = PCB_DISPLAY_OPTIONS::DO_NOT_SHOW_CLEARANCE;
103  SetDisplayOptions( displ_opts );
104 
105  // Create the manager and dispatcher & route draw panel events to the dispatcher
106  m_toolManager = new TOOL_MANAGER;
107  m_toolManager->SetEnvironment( GetBoard(), gal_drawPanel->GetView(),
108  gal_drawPanel->GetViewControls(), config(), this );
109  m_actions = new CVPCB_ACTIONS();
110  m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
111  gal_drawPanel->SetEventDispatcher( m_toolDispatcher );
112 
113  m_toolManager->RegisterTool( new COMMON_TOOLS );
114  m_toolManager->RegisterTool( new ZOOM_TOOL );
115  m_toolManager->RegisterTool( new CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL );
116  m_toolManager->RegisterTool( new PCB_VIEWER_TOOLS );
117 
118  m_toolManager->GetTool<PCB_VIEWER_TOOLS>()->SetFootprintFrame( true );
119 
120  m_toolManager->InitTools();
121 
122  setupUIConditions();
123 
124  // Run the control tool, it is supposed to be always active
125  m_toolManager->InvokeTool( "cvpcb.FootprintViewerInteractiveSelection" );
126 
127  ReCreateHToolbar();
128  ReCreateVToolbar();
129  ReCreateOptToolbar();
130 
131  m_auimgr.SetManagedWindow( this );
132 
133  CreateInfoBar();
134  m_auimgr.AddPane( m_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" )
135  .Top().Layer( 6 ) );
136  m_auimgr.AddPane( m_optionsToolBar, EDA_PANE().VToolbar().Name( "OptToolbar" )
137  .Left().Layer( 3 ) );
138  m_auimgr.AddPane( GetCanvas(), EDA_PANE().Canvas().Name( "DrawFrame" )
139  .Center() );
140  m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" )
141  .Bottom().Layer( 6 ) );
142 
143  FinishAUIInitialization();
144 
145  auto& galOpts = GetGalDisplayOptions();
146  galOpts.m_axesEnabled = true;
147 
148  ActivateGalCanvas();
149 
150  setupUnits( config() );
151 
152  // Restore last zoom. (If auto-zooming we'll adjust when we load the footprint.)
153  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
154 
155  if( cfg )
156  GetCanvas()->GetView()->SetScale( cfg->m_FootprintViewerZoom );
157 
158  updateView();
159 
160  Show( true );
161 
162  // Register a call to update the toolbar sizes. It can't be done immediately because
163  // it seems to require some sizes calculated that aren't yet (at least on GTK).
164  CallAfter( [&]()
165  {
166  // Ensure the controls on the toolbars all are correctly sized
167  UpdateToolbarControlSizes();
168  } );
169 }
170 
171 
173 {
174  // Shutdown all running tools
175  if( m_toolManager )
177 
179  GetCanvas()->StopDrawing();
180  GetCanvas()->GetView()->Clear();
181  // Be sure any event cannot be fired after frame deletion:
182  GetCanvas()->SetEvtHandlerEnabled( false );
183 
184  delete GetScreen();
185  SetScreen( nullptr ); // Be sure there is no double deletion
186 }
187 
188 
190 {
192 
194  PCB_EDITOR_CONDITIONS cond( this );
195 
196  wxASSERT( mgr );
197 
198 #define CHECK( x ) ACTION_CONDITIONS().Check( x )
199 
201  CHECK( cond.CurrentTool( ACTIONS::zoomTool ) ) );
206 
209 
213 
214 
216  CHECK( cond.PadNumbersDisplay() ) );
220  CHECK( !cond.GraphicsFillDisplay() ) );
221 
222 #undef CHECK
223 }
224 
225 
227 {
228  Destroy();
229 }
230 
231 
233 {
234  // Currently, no vertical right toolbar.
235 }
236 
237 
239 {
240  if( m_optionsToolBar )
241  {
243  }
244  else
245  {
246  m_optionsToolBar = new ACTION_TOOLBAR( this, ID_OPT_TOOLBAR, wxDefaultPosition,
247  wxDefaultSize,
248  KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL );
250  }
251 
254 
262 
268 
269  m_optionsToolBar->Realize();
270 }
271 
272 
274 {
275  // Note:
276  // To rebuild the aui toolbar, the more easy way is to clear ( calling m_mainToolBar.Clear() )
277  // all wxAuiToolBarItems.
278  // However the wxAuiToolBarItems are not the owners of controls managed by
279  // them ( m_zoomSelectBox and m_gridSelectBox ), and therefore do not delete them
280  // So we do not recreate them after clearing the tools.
281 
282  if( m_mainToolBar )
283  {
285  }
286  else
287  {
288  m_mainToolBar = new ACTION_TOOLBAR( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize,
289  KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT );
291  }
292 
298 
301 
303 
304  // Grid selection choice box.
305  if( !m_gridSelectBox )
307 
309  m_mainToolBar->AddControl( m_gridSelectBox );
310 
312 
313  // Zoom selection choice box.
314  if( !m_zoomSelectBox )
316 
318  m_mainToolBar->AddControl( m_zoomSelectBox );
319 
322 
323  // after adding the buttons to the toolbar, must call Realize() to reflect the changes
324  m_mainToolBar->Realize();
325 }
326 
327 
329 {
330  if( m_mainToolBar )
331  {
332  // Update the item widths
335  }
336 }
337 
338 
340 {
341  auto cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
342  wxCHECK( cfg, /* void */ );
343 
344  // We don't allow people to change this right now, so make sure it's on
346 
348 
349  SetDisplayOptions( cfg->m_FootprintViewerDisplayOptions );
350 }
351 
352 
354 {
355  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
356  wxCHECK( cfg, /* void */ );
357 
359 
361 
363 }
364 
365 
367 {
368  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
369  wxCHECK( cfg, nullptr );
370  return &cfg->m_FootprintViewer;
371 }
372 
373 
375 {
376  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( Kiface().KifaceSettings() );
377  wxCHECK( cfg, nullptr );
379 }
380 
381 
383 {
384  return COLOR4D( DARKGRAY );
385 }
386 
387 
388 FOOTPRINT* DISPLAY_FOOTPRINTS_FRAME::GetFootprint( const wxString& aFootprintName,
389  REPORTER& aReporter )
390 {
391  FOOTPRINT* footprint = nullptr;
392  LIB_ID fpid;
393 
394  if( fpid.Parse( aFootprintName ) >= 0 )
395  {
396  aReporter.Report( wxString::Format( _( "Footprint ID '%s' is not valid." ),
397  aFootprintName ),
399  return nullptr;
400  }
401 
402  wxString libNickname = FROM_UTF8( fpid.GetLibNickname().c_str() );
403  wxString fpName = FROM_UTF8( fpid.GetLibItemName().c_str() );
404 
405  FP_LIB_TABLE* fpTable = Prj().PcbFootprintLibs();
406  wxASSERT( fpTable );
407 
408  // See if the library requested is in the library table
409  if( !fpTable->HasLibrary( libNickname ) )
410  {
411  aReporter.Report( wxString::Format( _( "Library '%s' is not in the footprint library table." ),
412  libNickname ),
414  return nullptr;
415  }
416 
417  // See if the footprint requested is in the library
418  if( !fpTable->FootprintExists( libNickname, fpName ) )
419  {
420  aReporter.Report( wxString::Format( _( "Footprint '%s' not found." ), aFootprintName ),
422  return nullptr;
423  }
424 
425  try
426  {
427  const FOOTPRINT* fp = fpTable->GetEnumeratedFootprint( libNickname, fpName );
428 
429  if( fp )
430  footprint = static_cast<FOOTPRINT*>( fp->Duplicate() );
431  }
432  catch( const IO_ERROR& ioe )
433  {
434  DisplayError( this, ioe.What() );
435  return nullptr;
436  }
437 
438  if( footprint )
439  {
440  footprint->SetParent( (EDA_ITEM*) GetBoard() );
441  footprint->SetPosition( wxPoint( 0, 0 ) );
442  return footprint;
443  }
444 
445  aReporter.Report( wxString::Format( _( "Footprint '%s' not found." ), aFootprintName ),
447  return nullptr;
448 }
449 
450 
452 {
453  CVPCB_MAINFRAME* parentframe = (CVPCB_MAINFRAME *) GetParent();
454  FOOTPRINT* footprint = nullptr;
455  const FOOTPRINT_INFO* fpInfo = nullptr;
456 
458  GetCanvas()->GetView()->Clear();
459 
460  wxString footprintName = parentframe->GetSelectedFootprint();
461 
462  if( footprintName.IsEmpty() )
463  {
464  COMPONENT* comp = parentframe->GetSelectedComponent();
465 
466  if( comp )
467  footprintName = comp->GetFPID().GetUniStringLibId();
468  }
469 
470  INFOBAR_REPORTER infoReporter( m_infoBar );
471  m_infoBar->Dismiss();
472 
473  if( !footprintName.IsEmpty() )
474  {
475  SetTitle( wxString::Format( _( "Footprint: %s" ), footprintName ) );
476 
477  footprint = GetFootprint( footprintName, infoReporter );
478 
479  fpInfo = parentframe->m_FootprintsList->GetFootprintInfo( footprintName );
480  }
481 
482  if( footprint )
483  GetBoard()->Add( footprint );
484 
485  if( fpInfo )
486  SetStatusText( wxString::Format( _( "Lib: %s" ), fpInfo->GetLibNickname() ), 0 );
487  else
488  SetStatusText( wxEmptyString, 0 );
489 
490  infoReporter.Finalize();
491 
492  updateView();
493 
494  UpdateStatusBar();
495 
496  GetCanvas()->Refresh();
497  Update3DView( true, true );
498 }
499 
500 
502 {
503  PCB_DRAW_PANEL_GAL* dp = static_cast<PCB_DRAW_PANEL_GAL*>( GetCanvas() );
504  dp->UpdateColors();
505  dp->DisplayBoard( GetBoard() );
506 
508 
509  if( m_zoomSelectBox->GetSelection() == 0 )
511  else
513 
514  UpdateMsgPanel();
515 }
516 
517 
519 {
520  FOOTPRINT* footprint = GetBoard()->GetFirstFootprint();
521  std::vector<MSG_PANEL_ITEM> items;
522 
523  if( footprint )
524  footprint->GetMsgPanelInfo( this, items );
525 
526  SetMsgPanel( items );
527 }
528 
529 
531 {
532  auto* settings = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
533 
534  if( settings )
535  return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
536  else
537  return Pgm().GetSettingsManager().GetColorSettings();
538 }
539 
540 
542 {
543  return GetBoard()->GetFirstFootprint();
544 }
545 
546 
548 {
550 }
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:279
static TOOL_ACTION show3DViewer
Definition: actions.h:158
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
Define the structure of a toolbar with buttons that invoke ACTIONs.
const UTF8 & GetLibItemName() const
Definition: lib_id.h:104
FOOTPRINT_LIST * m_FootprintsList
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
Definition: footprint.cpp:908
static wxString FROM_UTF8(const char *cstring)
Convert a UTF8 encoded C string to a wxString for all wxWidgets build modes.
Definition: macros.h:110
static TOOL_ACTION zoomInCenter
Definition: actions.h:93
Model changes (required full reload)
Definition: tool_base.h:80
This file is part of the common library.
wxString GetLibNickname() const override
MAGNETIC_SETTINGS * GetMagneticItemsSettings() override
Redraw the message panel.
SELECTION_CONDITION FullscreenCursor()
Create a functor testing if the cursor is full screen in a frame.
ACTION_TOOLBAR * m_optionsToolBar
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
virtual void SetScreen(BASE_SCREEN *aScreen)
static constexpr bool TOGGLE
static TOOL_ACTION zoomTool
Definition: actions.h:99
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.
SELECTION_CONDITION TextFillDisplay()
Create a functor that tests if the frame fills text items.
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
double m_FootprintViewerZoom
void Add(const TOOL_ACTION &aAction, bool aIsToggleEntry=false, bool aIsCancellable=false)
Add a TOOL_ACTION-based button to the toolbar.
SELECTION_CONDITION CurrentTool(const TOOL_ACTION &aTool)
Create a functor testing if the specified tool is the current active tool in the frame.
static constexpr GAL_TYPE GAL_FALLBACK
virtual void setupUIConditions()
Setup the UI conditions for the various actions and their controls in this frame.
static TOOL_ACTION zoomFitScreen
Definition: actions.h:96
static TOOL_ACTION millimetersUnits
Definition: actions.h:146
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:143
void SetAuiManager(wxAuiManager *aManager)
Set the AUI manager that this toolbar belongs to.
void UpdateZoomSelectBox()
Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes,...
wxAuiManager m_auimgr
#define FOOTPRINTVIEWER_FRAME_NAME
ACTION_TOOLBAR * m_mainToolBar
Manage TOOL_ACTION objects.
A pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:70
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.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
const PCB_DISPLAY_OPTIONS & GetDisplayOptions() const
Display options control the way tracks, vias, outlines and other things are shown (for instance solid...
bool always_show_cursor
Definition: app_settings.h:42
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.cpp:590
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)=0
Report a string with a given severity.
wxChoice * m_gridSelectBox
SELECTION_CONDITION PadFillDisplay()
Create a functor that tests if the frame fills the pads.
void updateView()
Update the gal canvas (view, colors ...).
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:116
static TOOL_ACTION zoomOutCenter
Definition: actions.h:94
This file contains miscellaneous commonly used macros and functions.
const char * c_str() const
Definition: utf8.h:102
MAGNETIC_SETTINGS m_FootprintViewerMagneticSettings
Selection tool for the footprint viewer in cvpcb.
BOARD_ITEM_CONTAINER * GetModel() const override
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
void UpdateGridSelectBox()
Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes,...
Master controller class:
Definition: tool_manager.h:54
static TOOL_ACTION measureTool
Definition: actions.h:154
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT) override
Adds an item to the container.
Definition: board.cpp:608
Stores the common settings that are saved and loaded for each window / frame.
Definition: app_settings.h:81
void SetDisplayOptions(const PCB_DISPLAY_OPTIONS &aOptions, bool aRefresh=true)
Updates the current display options from the given options struct.
static constexpr bool CANCEL
void Dismiss() override
Dismisses the infobar and updates the containing layout and AUI manager (if one is provided).
Definition: infobar.cpp:175
static TOOL_ACTION centerContents
Definition: actions.h:100
FOOTPRINT * GetFirstFootprint() const
Get the first footprint on the board or nullptr.
Definition: board.h:317
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
CURSOR_SETTINGS cursor
Definition: app_settings.h:88
WINDOW_SETTINGS * GetWindowSettings(APP_SETTINGS_BASE *aCfg) override
Return a pointer to the window settings for this frame.
SELECTION_CONDITION GridVisible()
Create a functor testing if the grid is visible in a frame.
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:30
SELECTION_CONDITION Units(EDA_UNITS aUnit)
Create a functor that tests if the frame has the specified units.
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)
Add all items from the current board to the VIEW, so they can be displayed by GAL.
void Clear()
Remove all items from the view.
Definition: view.cpp:1104
static TOOL_ACTION toggleGrid
Definition: actions.h:140
static TOOL_ACTION showPadNumbers
Definition: pcb_actions.h:250
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
static TOOL_ACTION inchesUnits
Definition: actions.h:144
wxChoice * m_zoomSelectBox
void UpdateControlWidth(int aID)
Update the toolbar item width of a control using its best size.
static TOOL_ACTION togglePolarCoords
Definition: actions.h:149
void ResetTools(TOOL_BASE::RESET_REASON aReason)
Reset all tools (i.e.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:260
#define _(s)
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:90
BOARD_ITEM * Duplicate() const override
Create a copy of this BOARD_ITEM.
Definition: footprint.cpp:1706
FOOTPRINT_INFO * GetFootprintInfo(const wxString &aFootprintName)
Get info for a footprint by id.
WINDOW_SETTINGS m_FootprintViewer
#define KICAD_DEFAULT_DRAWFRAME_STYLE
void Finalize()
Update the infobar with the reported text.
Definition: reporter.cpp:225
Gather all the actions that are shared by tools.
Definition: cvpcb_actions.h:37
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
Definition: bitmap.cpp:105
virtual KIGFX::PCB_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
Specialization of the wxAuiPaneInfo class for KiCad panels.
COLOR_SETTINGS * GetColorSettings() const override
Helper to retrieve the current color settings.
void SetConditions(const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
Set the conditions the UI elements for activating a specific tool action should use for determining t...
static TOOL_ACTION milsUnits
Definition: actions.h:145
FOOTPRINT * GetFootprint(const wxString &aFootprintName, REPORTER &aReporter)
Handles action that are shared between different applications.
Definition: common_tools.h:37
void UpdateColors()
Update the color settings in the painter and GAL.
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
SELECTION_CONDITION PadNumbersDisplay()
Create a functor that tests if the pad numbers are displayed.
BOARD * GetBoard()
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:283
static TOOL_ACTION padDisplayMode
Definition: pcb_actions.h:243
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
static TOOL_ACTION graphicsOutlines
Display footprint graphics as outlines.
Definition: pcb_actions.h:393
wxString GetSelectedFootprint()
void InitDisplay()
Refresh the full display for this frame: Set the title, the status line and redraw the canvas Must be...
int Parse(const UTF8 &aId, bool aFix=false)
Parse LIB_ID with the information from aId.
Definition: lib_id.cpp:49
virtual void UpdateStatusBar() override
Update the status bar information.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:158
see class PGM_BASE
void OnSelectGrid(wxCommandEvent &event)
Command event handler for selecting grid sizes.
void UpdateToolbarControlSizes() override
Update the sizes of any controls in the toolbars of the frame.
SELECTION_CONDITION GraphicsFillDisplay()
Create a functor that tests if the frame fills graphics items.
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:190
void SetEnvironment(EDA_ITEM *aModel, KIGFX::VIEW *aView, KIGFX::VIEW_CONTROLS *aViewControls, APP_SETTINGS_BASE *aSettings, TOOLS_HOLDER *aFrame)
Set the work environment (model, view, view controls and the parent window).
WX_INFOBAR * m_infoBar
static TOOL_ACTION zoomRedraw
Definition: actions.h:90
virtual void Update3DView(bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
COMPONENT * GetSelectedComponent()
Get the selected component from the component listbox.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:100
The common library.
PCB_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
PCB_DISPLAY_OPTIONS m_FootprintViewerDisplayOptions
Tool useful for viewing footprints.
static constexpr int KICAD_AUI_TB_STYLE
< Default style flags used for wxAUI toolbars.
ACTION_MANAGER * GetActionManager() const
Definition: tool_manager.h:199
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 LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void UpdateMsgPanel() override
Redraw the message panel.
void DeleteAllFootprints()
Remove all footprints from the deque and free the memory associated with them.
Definition: board.cpp:836
wxString GetUniStringLibId() const
Definition: lib_id.h:134
static TOOL_ACTION toggleCursorStyle
Definition: actions.h:102
GERBVIEW_FRAME::OnZipFileHistory GERBVIEW_FRAME::OnSelectDisplayMode EVT_CHOICE(ID_GBR_AUX_TOOLBAR_PCB_APERATTRIBUTES_CHOICE, GERBVIEW_FRAME::OnSelectHighlightChoice) EVT_UPDATE_UI(ID_TOOLBARH_GERBVIEW_SELECT_ACTIVE_LAYER
Abstract interface for BOARD_ITEMs capable of storing other items inside.
BOARD * GetBoard() const
void SetPosition(const wxPoint &aPos) override
Definition: footprint.cpp:1543
double GetScale() const
Definition: view.h:264
Message panel definition file.
Group generic conditions for PCB editor states.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
A wrapper for reporting to a WX_INFOBAR UI element.
Definition: reporter.h:315
void StopDrawing()
Prevent the GAL canvas from further drawing until it is recreated or StartDrawing() is called.
void SetBoardUse(BOARD_USE aUse)
Set what the board is going to be used for.
Definition: board.h:203
static TOOL_ACTION selectionTool
Definition: actions.h:153
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:396
void ClearToolbar()
Clear the toolbar and remove all associated menus.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103
#define CHECK(x)