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 <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_i.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/debug.h>
58 
59 
60 BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
61  EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow )
64 END_EVENT_TABLE()
65 
66 
68  PCB_BASE_FRAME( aKiway, aParent, FRAME_CVPCB_DISPLAY, _( "Footprint Viewer" ),
69  wxDefaultPosition, wxDefaultSize,
71 {
72  // Give an icon
73  wxIcon icon;
74  icon.CopyFromBitmap( KiBitmap( icon_cvpcb_xpm ) );
75  SetIcon( icon );
76 
77  SetBoard( new BOARD() );
78 
79  // This board will only be used to hold a footprint for viewing
81 
82  SetScreen( new PCB_SCREEN( GetPageSizeIU() ) );
83 
84  // Create GAL canvas before loading settings
85  auto* gal_drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_frameSize,
86  GetGalDisplayOptions(),
88  SetCanvas( gal_drawPanel );
89 
90  // Don't show the default board solder mask clearance. Only the
91  // footprint or pad clearance setting should be shown if it is not 0.
93 
94  LoadSettings( config() );
95 
96  // Initialize some display options
97  auto displ_opts = GetDisplayOptions();
98  displ_opts.m_DisplayPadIsol = false; // Pad clearance has no meaning here
99 
100  // Track and via clearance has no meaning here.
101  displ_opts.m_ShowTrackClearanceMode = PCB_DISPLAY_OPTIONS::DO_NOT_SHOW_CLEARANCE;
102  SetDisplayOptions( displ_opts );
103 
104  // Create the manager and dispatcher & route draw panel events to the dispatcher
105  m_toolManager = new TOOL_MANAGER;
106  m_toolManager->SetEnvironment( GetBoard(), gal_drawPanel->GetView(),
107  gal_drawPanel->GetViewControls(), config(), this );
108  m_actions = new CVPCB_ACTIONS();
109  m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager, m_actions );
110  gal_drawPanel->SetEventDispatcher( m_toolDispatcher );
111 
112  m_toolManager->RegisterTool( new COMMON_TOOLS );
113  m_toolManager->RegisterTool( new ZOOM_TOOL );
114  m_toolManager->RegisterTool( new CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL );
115  m_toolManager->RegisterTool( new PCB_VIEWER_TOOLS );
116 
117  m_toolManager->GetTool<PCB_VIEWER_TOOLS>()->SetFootprintFrame( true );
118 
119  m_toolManager->InitTools();
120 
121  setupUIConditions();
122 
123  // Run the control tool, it is supposed to be always active
124  m_toolManager->InvokeTool( "cvpcb.FootprintViewerInteractiveSelection" );
125 
126  ReCreateHToolbar();
127  ReCreateVToolbar();
128  ReCreateOptToolbar();
129 
130  m_auimgr.SetManagedWindow( this );
131 
132  CreateInfoBar();
133  m_auimgr.AddPane( m_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" )
134  .Top().Layer( 6 ) );
135  m_auimgr.AddPane( m_optionsToolBar, EDA_PANE().VToolbar().Name( "OptToolbar" )
136  .Left().Layer( 3 ) );
137  m_auimgr.AddPane( GetCanvas(), EDA_PANE().Canvas().Name( "DrawFrame" )
138  .Center() );
139  m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" )
140  .Bottom().Layer( 6 ) );
141 
142  FinishAUIInitialization();
143 
144  auto& galOpts = GetGalDisplayOptions();
145  galOpts.m_axesEnabled = true;
146 
147  ActivateGalCanvas();
148 
149  setupUnits( config() );
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 
181 {
183 
185  PCB_EDITOR_CONDITIONS cond( this );
186 
187  wxASSERT( mgr );
188 
189 #define CHECK( x ) ACTION_CONDITIONS().Check( x )
190 
194 
197 
201 
202 
203  auto autoZoomCond =
204  [this] ( const SELECTION& aSel )
205  {
206  return GetAutoZoom();
207  };
208 
214 
215 #undef CHECK
216 }
217 
218 
220 {
221  Destroy();
222 }
223 
224 
226 {
227  // Currently, no vertical right toolbar.
228 }
229 
230 
232 {
233  if( m_optionsToolBar )
234  {
236  }
237  else
238  {
239  m_optionsToolBar = new ACTION_TOOLBAR( this, ID_OPT_TOOLBAR, wxDefaultPosition,
240  wxDefaultSize,
241  KICAD_AUI_TB_STYLE | wxAUI_TB_VERTICAL );
243  }
244 
247 
255 
261 
262  m_optionsToolBar->Realize();
263 }
264 
265 
267 {
268  // Note:
269  // To rebuild the aui toolbar, the more easy way is to clear ( calling m_mainToolBar.Clear() )
270  // all wxAuiToolBarItems.
271  // However the wxAuiToolBarItems are not the owners of controls managed by
272  // them ( m_zoomSelectBox and m_gridSelectBox ), and therefore do not delete them
273  // So we do not recreate them after clearing the tools.
274 
275  if( m_mainToolBar )
276  {
278  }
279  else
280  {
281  m_mainToolBar = new ACTION_TOOLBAR( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize,
282  KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT );
284  }
285 
292 
295 
297 
298  // Grid selection choice box.
299  if( !m_gridSelectBox )
301 
303  m_mainToolBar->AddControl( m_gridSelectBox );
304 
306 
307  // Zoom selection choice box.
308  if( !m_zoomSelectBox )
310 
312  m_mainToolBar->AddControl( m_zoomSelectBox );
313 
314  // after adding the buttons to the toolbar, must call Realize() to reflect
315  // the changes
316  m_mainToolBar->Realize();
317 }
318 
319 
321 {
322  auto cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
323  wxCHECK( cfg, /* void */ );
324 
325  // We don't allow people to change this right now, so make sure it's on
327 
329 
330  SetDisplayOptions( cfg->m_FootprintViewerDisplayOptions );
331 }
332 
333 
335 {
336  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
337  wxCHECK( cfg, /* void */ );
338 
340 
342 
344 }
345 
346 
348 {
349  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
350  wxCHECK( cfg, nullptr );
351  return &cfg->m_FootprintViewer;
352 }
353 
354 
356 {
357  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( Kiface().KifaceSettings() );
358  wxCHECK( cfg, nullptr );
360 }
361 
362 
364 {
365  return COLOR4D( DARKGRAY );
366 }
367 
368 
369 FOOTPRINT* DISPLAY_FOOTPRINTS_FRAME::GetFootprint( const wxString& aFootprintName,
370  REPORTER& aReporter )
371 {
372  FOOTPRINT* footprint = NULL;
373  LIB_ID fpid;
374 
375  if( fpid.Parse( aFootprintName ) >= 0 )
376  {
377  aReporter.Report( wxString::Format( _( "Footprint ID \"%s\" is not valid." ),
378  aFootprintName ),
380  return NULL;
381  }
382 
383  wxString libNickname = FROM_UTF8( fpid.GetLibNickname().c_str() );
384  wxString fpName = FROM_UTF8( fpid.GetLibItemName().c_str() );
385 
386  FP_LIB_TABLE* fpTable = Prj().PcbFootprintLibs( Kiway() );
387  wxASSERT( fpTable );
388 
389  // See if the library requested is in the library table
390  if( !fpTable->HasLibrary( libNickname ) )
391  {
392  aReporter.Report( wxString::Format( _( "Library \"%s\" is not in the footprint library table." ),
393  libNickname ),
395  return NULL;
396  }
397 
398  // See if the footprint requested is in the library
399  if( !fpTable->FootprintExists( libNickname, fpName ) )
400  {
401  aReporter.Report( wxString::Format( _( "Footprint \"%s\" not found." ), aFootprintName ),
403  return NULL;
404  }
405 
406  try
407  {
408  const FOOTPRINT* fp = fpTable->GetEnumeratedFootprint( libNickname, fpName );
409 
410  if( fp )
411  footprint = static_cast<FOOTPRINT*>( fp->Duplicate() );
412  }
413  catch( const IO_ERROR& ioe )
414  {
415  DisplayError( this, ioe.What() );
416  return NULL;
417  }
418 
419  if( footprint )
420  {
421  footprint->SetParent( (EDA_ITEM*) GetBoard() );
422  footprint->SetPosition( wxPoint( 0, 0 ) );
423  return footprint;
424  }
425 
426  aReporter.Report( wxString::Format( _( "Footprint \"%s\" not found." ), aFootprintName ),
428  return NULL;
429 }
430 
431 
433 {
434  CVPCB_MAINFRAME* parentframe = (CVPCB_MAINFRAME *) GetParent();
435  FOOTPRINT* footprint = nullptr;
436  const FOOTPRINT_INFO* fpInfo = nullptr;
437 
439  GetCanvas()->GetView()->Clear();
440 
441  wxString footprintName = parentframe->GetSelectedFootprint();
442 
443  if( footprintName.IsEmpty() )
444  {
445  COMPONENT* comp = parentframe->GetSelectedComponent();
446 
447  if( comp )
448  footprintName = comp->GetFPID().GetUniStringLibId();
449  }
450 
451  INFOBAR_REPORTER infoReporter( m_infoBar );
452  m_infoBar->Dismiss();
453 
454  if( !footprintName.IsEmpty() )
455  {
456  SetTitle( wxString::Format( _( "Footprint: %s" ), footprintName ) );
457 
458  footprint = GetFootprint( footprintName, infoReporter );
459 
460  fpInfo = parentframe->m_FootprintsList->GetFootprintInfo( footprintName );
461  }
462 
463  if( footprint )
464  GetBoard()->Add( footprint );
465 
466  if( fpInfo )
467  SetStatusText( wxString::Format( _( "Lib: %s" ), fpInfo->GetLibNickname() ), 0 );
468  else
469  SetStatusText( wxEmptyString, 0 );
470 
471  infoReporter.Finalize();
472 
473  updateView();
474 
475  UpdateStatusBar();
476 
477  GetCanvas()->Refresh();
478  Update3DView( true );
479 }
480 
481 
483 {
484  PCB_DRAW_PANEL_GAL* dp = static_cast<PCB_DRAW_PANEL_GAL*>( GetCanvas() );
485  dp->UpdateColors();
486  dp->DisplayBoard( GetBoard() );
487 
489 
490  if( GetAutoZoom() )
492  else
494 
495  UpdateMsgPanel();
496 }
497 
498 
500 {
501  FOOTPRINT* footprint = GetBoard()->GetFirstFootprint();
502  MSG_PANEL_ITEMS items;
503 
504  if( footprint )
505  footprint->GetMsgPanelInfo( this, items );
506 
507  SetMsgPanel( items );
508 }
509 
510 
512 {
513  auto* settings = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
514 
515  if( settings )
516  return Pgm().GetSettingsManager().GetColorSettings( settings->m_ColorTheme );
517  else
518  return Pgm().GetSettingsManager().GetColorSettings();
519 }
520 
521 
523 {
524  return GetBoard()->GetFirstFootprint();
525 }
526 
527 
529 {
530  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
531  wxCHECK( cfg, /* void */ );
532  cfg->m_FootprintViewerAutoZoom = aAutoZoom;
533 }
534 
535 
537 {
538  CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
539  wxCHECK( cfg, false );
540  return cfg->m_FootprintViewerAutoZoom;
541 }
542 
543 
545 {
547 }
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:253
static TOOL_ACTION show3DViewer
Definition: actions.h:161
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void SetAutoZoom(bool aAutoZoom) override
Set if the canvas should automatically zoom to the footprint on load.
Define the structure of a toolbar with buttons that invoke ACTIONs.
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
const BITMAP_OPAQUE icon_cvpcb_xpm[1]
Definition: icon_cvpcb.cpp:112
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:56
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:814
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:96
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
Model changes (required full reload)
Definition: tool_base.h:81
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
virtual void SetScreen(BASE_SCREEN *aScreen)
static constexpr bool TOGGLE
static TOOL_ACTION zoomTool
Definition: actions.h:102
virtual void Update3DView(bool aReloadRequest, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
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:99
static TOOL_ACTION millimetersUnits
Definition: actions.h:149
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:141
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.h:591
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,...
void SetDisplayOptions(const PCB_DISPLAY_OPTIONS &aOptions)
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: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:252
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
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:165
static TOOL_ACTION zoomOutCenter
Definition: actions.h:97
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:168
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:52
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:82
static TOOL_ACTION measureTool
Definition: actions.h:157
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT) override
Adds an item to the container.
Definition: board.cpp:563
Stores the common settings that are saved and loaded for each window / frame.
Definition: app_settings.h:81
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:166
static TOOL_ACTION centerContents
Definition: actions.h:103
FOOTPRINT * GetFirstFootprint() const
Gets the first footprint on the board or nullptr.
Definition: board.h:380
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.
#define NULL
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:29
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:1083
static TOOL_ACTION toggleGrid
Definition: actions.h:143
static TOOL_ACTION showPadNumbers
Definition: pcb_actions.h:251
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
static TOOL_ACTION inchesUnits
Definition: actions.h:147
wxChoice * m_zoomSelectBox
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
static TOOL_ACTION togglePolarCoords
Definition: actions.h:152
bool GetAutoZoom() override
Get if the canvas should automatically zoom to the footprint on load.
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
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
BOARD_ITEM * Duplicate() const override
Create a copy of a of this BOARD_ITEM.
Definition: footprint.cpp:1587
FOOTPRINT_INFO * GetFootprintInfo(const wxString &aFootprintName)
Get info for a footprint by id.
bool m_FootprintViewerAutoZoom
WINDOW_SETTINGS m_FootprintViewer
#define KICAD_DEFAULT_DRAWFRAME_STYLE
void Finalize()
Update the infobar with the reported text.
Definition: reporter.cpp:179
Gather all the actions that are shared by tools.
Definition: cvpcb_actions.h:40
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:148
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...
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.
COMPONENT is used to store components and all of their related information found in a netlist.
Definition: pcb_netlist.h:85
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.
static TOOL_ACTION padDisplayMode
Definition: pcb_actions.h:245
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:390
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:122
virtual void UpdateStatusBar() override
Update the status bar information.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
see class PGM_BASE
void OnSelectGrid(wxCommandEvent &event)
Command event handler for selecting grid sizes.
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
ACTION_MANAGER * GetActionManager()
Definition: tool_manager.h:197
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
#define _(s)
Definition: 3d_actions.cpp:33
static TOOL_ACTION zoomRedraw
Definition: actions.h:93
COMPONENT * GetSelectedComponent()
Get the selected component from the component listbox.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:149
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:97
PCB_DISPLAY_OPTIONS m_FootprintViewerDisplayOptions
Tool useful for viewing footprints.
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 LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void UpdateMsgPanel() override
Redraw the message panel.
void DeleteAllFootprints()
Removes all footprints from the deque and frees the memory associated with them.
Definition: board.h:388
wxString GetUniStringLibId() const
Definition: lib_id.h:142
static TOOL_ACTION toggleCursorStyle
Definition: actions.h:105
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:1437
double GetScale() const
Definition: view.h:263
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:291
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:262
static TOOL_ACTION selectionTool
Definition: actions.h:156
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:393
void ClearToolbar()
Clear the toolbar and remove all associated menus.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:98
#define CHECK(x)