KiCad PCB EDA Suite
Loading...
Searching...
No Matches
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 <[email protected]>
6 * Copyright The 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 <pad.h>
30#include <common.h>
31#include <confirm.h>
34#include <fp_lib_table.h>
35#include <id.h>
36#include <kiface_base.h>
37#include <lib_id.h>
38#include <macros.h>
39#include <widgets/msgpanel.h>
40#include <pcb_draw_panel_gal.h>
41#include <pcb_painter.h>
42#include <pgm_base.h>
43#include <reporter.h>
45#include <tool/action_toolbar.h>
46#include <tool/common_tools.h>
48#include <tool/tool_manager.h>
49#include <tool/zoom_tool.h>
50#include <cvpcb_mainframe.h>
52#include <string_utils.h>
53#include <tools/cvpcb_actions.h>
54#include <tools/pcb_actions.h>
55#include <tools/pcb_editor_conditions.h> // Shared conditions with other Pcbnew frames
56#include <tools/pcb_viewer_tools.h> // shared tools with other Pcbnew frames
59#include <wx/choice.h>
60#include <wx/debug.h>
61#include <cvpcb_id.h>
62#include <project_pcb.h>
63
64BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
65 EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow )
68END_EVENT_TABLE()
69
70
72 PCB_BASE_FRAME( aKiway, aParent, FRAME_CVPCB_DISPLAY, _( "Footprint Viewer" ),
73 wxDefaultPosition, wxDefaultSize,
75 m_currentComp( nullptr )
76{
77 // Give an icon
78 wxIcon icon;
79 icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_cvpcb ) );
80 SetIcon( icon );
81
82 SetBoard( new BOARD() );
83
84 // This board will only be used to hold a footprint for viewing
86
88
89 // Create GAL canvas before loading settings
90 auto* gal_drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_frameSize,
93 SetCanvas( gal_drawPanel );
94
95 // Don't show the default board solder mask expansion. Only the footprint or pad expansion
96 // settings should be shown.
98
100
101 // Create the manager and dispatcher & route draw panel events to the dispatcher
103 m_toolManager->SetEnvironment( GetBoard(), gal_drawPanel->GetView(),
104 gal_drawPanel->GetViewControls(), config(), this );
105 m_actions = new CVPCB_ACTIONS();
107 gal_drawPanel->SetEventDispatcher( m_toolDispatcher );
108
109 m_toolManager->RegisterTool( new COMMON_TOOLS );
110 m_toolManager->RegisterTool( new ZOOM_TOOL );
112 m_toolManager->RegisterTool( new PCB_VIEWER_TOOLS );
113
114 m_toolManager->GetTool<PCB_VIEWER_TOOLS>()->SetFootprintFrame( true );
115
116 m_toolManager->InitTools();
117
119
123
124 // Run the control tool, it is supposed to be always active
125 m_toolManager->InvokeTool( "common.InteractiveSelection" );
126
127 m_auimgr.SetManagedWindow( this );
128
130 m_auimgr.AddPane( m_tbTopMain, EDA_PANE().HToolbar().Name( wxS( "TopMainToolbar" ) )
131 .Top().Layer( 6 ) );
132 m_auimgr.AddPane( m_tbLeft, EDA_PANE().VToolbar().Name( wxS( "LeftToolbar" ) )
133 .Left().Layer( 3 ) );
134 m_auimgr.AddPane( GetCanvas(), EDA_PANE().Canvas().Name( wxS( "DrawFrame" ) )
135 .Center() );
136 m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( wxS( "MsgPanel" ) )
137 .Bottom().Layer( 6 ) );
138
140
141 auto& galOpts = GetGalDisplayOptions();
142 galOpts.m_axesEnabled = true;
143
145
146 setupUnits( config() );
147
148 // Restore last zoom. (If auto-zooming we'll adjust when we load the footprint.)
149 CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
150
151 if( cfg )
152 GetCanvas()->GetView()->SetScale( cfg->m_FootprintViewerZoom );
153
154 updateView();
155
156 Show( true );
157
158 // Register a call to update the toolbar sizes. It can't be done immediately because
159 // it seems to require some sizes calculated that aren't yet (at least on GTK).
160 CallAfter( [this]()
161 {
162 // Ensure the controls on the toolbars all are correctly sized
164 } );
165}
166
167
169{
170 // Shutdown all running tools
171 if( m_toolManager )
172 m_toolManager->ShutdownAllTools();
173
176 GetCanvas()->GetView()->Clear();
177 // Be sure any event cannot be fired after frame deletion:
178 GetCanvas()->SetEvtHandlerEnabled( false );
179
180 delete GetScreen();
181 SetScreen( nullptr ); // Be sure there is no double deletion
182 setFPWatcher( nullptr );
183}
184
185
187{
189
190 ACTION_MANAGER* mgr = m_toolManager->GetActionManager();
191 PCB_EDITOR_CONDITIONS cond( this );
192
193 wxASSERT( mgr );
194
195#define CHECK( x ) ACTION_CONDITIONS().Check( x )
199
204
208
214#undef CHECK
215}
216
217
219{
220 // We don't allow people to change this right now, so make sure it's on
222
223 if( CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg ) )
224 {
226 SetDisplayOptions( cfg->m_FootprintViewerDisplayOptions );
227 }
228}
229
230
232{
234
235 if( CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg ) )
236 {
237 cfg->m_FootprintViewerDisplayOptions = GetDisplayOptions();
238 cfg->m_FootprintViewerZoom = GetCanvas()->GetView()->GetScale();
239 }
240}
241
242
244{
245 if( CVPCB_SETTINGS* cfg = GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ) )
246 return &cfg->m_FootprintViewer;
247
248 wxFAIL_MSG( wxT( "DISPLAY_FOOTPRINTS_FRAME not running with CVPCB_SETTINGS" ) );
249 return &aCfg->m_Window; // non-null fail-safe
250}
251
252
257
258
260{
261 static MAGNETIC_SETTINGS fallback;
262
263 if( CVPCB_SETTINGS* cfg = GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ) )
264 return &cfg->m_FootprintViewerMagneticSettings;
265
266 wxFAIL_MSG( wxT( "DISPLAY_FOOTPRINTS_FRAME not running with CVPCB_SETTINGS" ) );
267 return &fallback;
268}
269
270
275
276
277FOOTPRINT* DISPLAY_FOOTPRINTS_FRAME::GetFootprint( const wxString& aFootprintName, REPORTER& aReporter )
278{
279 FOOTPRINT* footprint = nullptr;
280 LIB_ID fpid;
281
282 if( fpid.Parse( aFootprintName ) >= 0 )
283 {
284 aReporter.Report( wxString::Format( _( "Footprint ID '%s' is not valid." ), aFootprintName ),
286 return nullptr;
287 }
288
289 wxString libNickname = From_UTF8( fpid.GetLibNickname().c_str() );
290 wxString fpName = From_UTF8( fpid.GetLibItemName().c_str() );
291
293 wxASSERT( fpTable );
294
295 // See if the library requested is in the library table
296 if( !fpTable->HasLibrary( libNickname ) )
297 {
298 aReporter.Report( wxString::Format( _( "Library '%s' is not in the footprint library table." ),
299 libNickname ),
301 return nullptr;
302 }
303
304 // See if the footprint requested is in the library
305 if( !fpTable->FootprintExists( libNickname, fpName ) )
306 {
307 aReporter.Report( wxString::Format( _( "Footprint '%s' not found." ), aFootprintName ),
309 return nullptr;
310 }
311
312 try
313 {
314 if( const FOOTPRINT* fp = fpTable->GetEnumeratedFootprint( libNickname, fpName ) )
315 footprint = static_cast<FOOTPRINT*>( fp->Duplicate( IGNORE_PARENT_GROUP ) );
316 }
317 catch( const IO_ERROR& ioe )
318 {
319 DisplayErrorMessage( this, _( "Error loading footprint" ), ioe.What() );
320 return nullptr;
321 }
322
323 if( footprint )
324 {
325 footprint->SetFPID( fpid );
326 footprint->SetParent( (EDA_ITEM*) GetBoard() );
327 footprint->SetPosition( VECTOR2I( 0, 0 ) );
328 return footprint;
329 }
330
331 aReporter.Report( wxString::Format( _( "Footprint '%s' not found." ), aFootprintName ),
333 return nullptr;
334}
335
336
338{
339 if( !aFootprint || !m_currentComp )
340 return;
341
343 GetCanvas()->GetView()->Clear();
344
345 for( PAD* pad : aFootprint->Pads() )
346 {
347 const COMPONENT_NET& net = m_currentComp->GetNet( pad->GetNumber() );
348
349 if( !net.GetPinFunction().IsEmpty() )
350 pad->SetPinFunction( net.GetPinFunction() );
351 }
352
354
355 GetBoard()->Add( aFootprint );
356 updateView();
357 GetCanvas()->Refresh();
358}
359
360
362{
363 CVPCB_MAINFRAME* parentframe = (CVPCB_MAINFRAME *) GetParent();
364 COMPONENT* comp = parentframe->GetSelectedComponent();
365 FOOTPRINT* footprint = nullptr;
366 const FOOTPRINT_INFO* fpInfo = nullptr;
367
368 wxString footprintName = parentframe->GetSelectedFootprint();
369
370 if( footprintName.IsEmpty() && comp )
371 footprintName = comp->GetFPID().Format().wx_str();
372
373 if( m_currentFootprint == footprintName && m_currentComp == comp )
374 return;
375
377 GetCanvas()->GetView()->Clear();
378
379 INFOBAR_REPORTER infoReporter( m_infoBar );
380 m_infoBar->Dismiss();
381
382 if( !footprintName.IsEmpty() )
383 {
384 SetTitle( wxString::Format( _( "Footprint: %s" ), footprintName ) );
385
386 footprint = GetFootprint( footprintName, infoReporter );
387
388 fpInfo = parentframe->m_FootprintsList->GetFootprintInfo( footprintName );
389 }
390
391 if( footprint )
392 {
393 if( comp )
394 {
395 for( PAD* pad : footprint->Pads() )
396 {
397 const COMPONENT_NET& net = comp->GetNet( pad->GetNumber() );
398
399 if( !net.GetPinFunction().IsEmpty() )
400 pad->SetPinFunction( net.GetPinFunction() );
401 }
402 }
403
404 GetBoard()->Add( footprint );
405 GetCanvas()->GetView()->Update( footprint );
406 m_currentFootprint = footprintName;
407 m_currentComp = comp;
408 setFPWatcher( footprint );
409 }
410
411 if( fpInfo )
412 SetStatusText( wxString::Format( _( "Lib: %s" ), fpInfo->GetLibNickname() ), 0 );
413 else
414 SetStatusText( wxEmptyString, 0 );
415
416 infoReporter.Finalize();
417
418 updateView();
419
421
422 GetCanvas()->Refresh();
423 Update3DView( true, true );
424}
425
426
428{
429 PCB_DRAW_PANEL_GAL* dp = static_cast<PCB_DRAW_PANEL_GAL*>( GetCanvas() );
430 dp->UpdateColors();
431 dp->DisplayBoard( GetBoard() );
432
434
435 CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() );
436 wxCHECK( cfg, /* void */ );
437
440 else
442
444}
445
446
448{
449 FOOTPRINT* footprint = GetBoard()->GetFirstFootprint();
450 std::vector<MSG_PANEL_ITEM> items;
451
452 if( footprint )
453 footprint->GetMsgPanelInfo( this, items );
454
455 SetMsgPanel( items );
456}
457
458
460{
462 return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
463}
464
465
470
471
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:104
@ FPHOLDER
Definition board.h:309
static TOOL_ACTION toggleGrid
Definition actions.h:197
static TOOL_ACTION millimetersUnits
Definition actions.h:205
static TOOL_ACTION cursorSmallCrosshairs
Definition actions.h:151
static TOOL_ACTION milsUnits
Definition actions.h:204
static TOOL_ACTION centerContents
Definition actions.h:148
static TOOL_ACTION inchesUnits
Definition actions.h:203
static TOOL_ACTION measureTool
Definition actions.h:251
static TOOL_ACTION selectionTool
Definition actions.h:250
static TOOL_ACTION zoomFitScreen
Definition actions.h:141
static TOOL_ACTION zoomTool
Definition actions.h:145
static TOOL_ACTION cursor45Crosshairs
Definition actions.h:153
static TOOL_ACTION cursorFullCrosshairs
Definition actions.h:152
Manage TOOL_ACTION objects.
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...
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
WINDOW_SETTINGS m_Window
wxString m_ColorTheme
Active color theme name.
Abstract interface for BOARD_ITEMs capable of storing other items inside.
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
Definition board.cpp:1163
void SetBoardUse(BOARD_USE aUse)
Set what the board is going to be used for.
Definition board.h:329
FOOTPRINT * GetFirstFootprint() const
Get the first footprint on the board or nullptr.
Definition board.h:488
void DeleteAllFootprints()
Remove all footprints from the deque and free the memory associated with them.
Definition board.cpp:1593
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition board.cpp:1040
Color settings are a bit different than most of the settings objects in that there can be more than o...
Handles action that are shared between different applications.
Used to store the component pin name to net name (and pin function) associations stored in a netlist.
Definition pcb_netlist.h:47
const wxString & GetPinFunction() const
Definition pcb_netlist.h:62
Store all of the related footprint information found in a netlist.
const COMPONENT_NET & GetNet(unsigned aIndex) const
const LIB_ID & GetFPID() const
Gather all the actions that are shared by tools.
Selection tool for the footprint viewer in CvPcb.
The CvPcb application main window.
wxString GetSelectedFootprint()
FOOTPRINT_LIST * m_FootprintsList
COMPONENT * GetSelectedComponent()
Get the selected component from the component listbox.
DISPLAY_FOOTPRINTS_FRAME(KIWAY *aKiway, wxWindow *aParent)
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
void InitDisplay()
Refresh the full display for this frame.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Helper to retrieve the current color settings.
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
WINDOW_SETTINGS * GetWindowSettings(APP_SETTINGS_BASE *aCfg) override
Return a pointer to the window settings for this frame.
void UpdateMsgPanel() override
Redraw the message panel.
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
void updateView()
Update the gal canvas (view, colors ...).
BOARD_ITEM_CONTAINER * GetModel() const override
MAGNETIC_SETTINGS * GetMagneticItemsSettings() override
PCB_VIEWERS_SETTINGS_BASE * GetViewerSettingsBase() const override
void ReloadFootprint(FOOTPRINT *aFootprint) override
Reload the footprint from the library.
FOOTPRINT * GetFootprint(const wxString &aFootprintName, REPORTER &aReporter)
virtual APP_SETTINGS_BASE * config() const
Return the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
virtual void setupUIConditions()
Setup the UI conditions for the various actions and their controls in this frame.
virtual void UpdateToolbarControlSizes()
Update the sizes of any controls in the toolbars of the frame.
WX_INFOBAR * m_infoBar
TOOLBAR_SETTINGS * m_toolbarSettings
wxAuiManager m_auimgr
virtual void RecreateToolbars()
ACTION_TOOLBAR * m_tbLeft
ACTION_TOOLBAR * m_tbTopMain
void configureToolbars() override
void OnSelectGrid(wxCommandEvent &event)
Command event handler for selecting grid sizes.
void setupUnits(APP_SETTINGS_BASE *aCfg)
void SetMsgPanel(const std::vector< MSG_PANEL_ITEM > &aList)
Clear the message panel and populates it with the contents of aList.
virtual void OnSelectZoom(wxCommandEvent &event)
Set the zoom factor when selected by the zoom list box in the main tool bar.
GAL_DISPLAY_OPTIONS_IMPL & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
EDA_MSG_PANEL * m_messagePanel
void SetCanvas(EDA_DRAW_PANEL_GAL *aPanel)
virtual void SetScreen(BASE_SCREEN *aScreen)
static constexpr GAL_TYPE GAL_FALLBACK
void StopDrawing()
Prevent the GAL canvas from further drawing until it is recreated or StartDrawing() is called.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:98
virtual void SetParent(EDA_ITEM *aParent)
Definition eda_item.h:113
Specialization of the wxAuiPaneInfo class for KiCad panels.
SELECTION_CONDITION CurrentTool(const TOOL_ACTION &aTool)
Create a functor testing if the specified tool is the current active tool in the frame.
SELECTION_CONDITION Units(EDA_UNITS aUnit)
Create a functor that tests if the frame has the specified units.
SELECTION_CONDITION CursorSmallCrosshairs()
Create a functor testing if the cursor is full screen in a frame.
SELECTION_CONDITION GridVisible()
Create a functor testing if the grid is visible in a frame.
SELECTION_CONDITION Cursor45Crosshairs()
SELECTION_CONDITION CursorFullCrosshairs()
wxString GetLibNickname() const override
FOOTPRINT_INFO * GetFootprintInfo(const wxString &aFootprintName)
Get info for a footprint by id.
void SetPosition(const VECTOR2I &aPos) override
void SetFPID(const LIB_ID &aFPID)
Definition footprint.h:270
std::deque< PAD * > & Pads()
Definition footprint.h:224
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.
const FOOTPRINT * GetEnumeratedFootprint(const wxString &aNickname, const wxString &aFootprintName)
A version of FootprintLoad() for use after FootprintEnumerate() for more efficient cache management.
bool FootprintExists(const wxString &aNickname, const wxString &aFootprintName)
Indicates whether or not the given footprint already exists in the given library.
A wrapper for reporting to a WX_INFOBAR UI element.
Definition wx_infobar.h:327
void Finalize()
Update the infobar with the reported text.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
virtual const wxString What() const
A composite of Problem() and Where()
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:104
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const override
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition pcb_view.cpp:91
double GetScale() const
Definition view.h:276
void Clear()
Remove all items from the view.
Definition view.cpp:1143
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:286
A logical library item identifier and consists of various portions much like a URI.
Definition lib_id.h:49
int Parse(const UTF8 &aId, bool aFix=false)
Parse LIB_ID with the information from aId.
Definition lib_id.cpp:52
UTF8 Format() const
Definition lib_id.cpp:119
const UTF8 & GetLibItemName() const
Definition lib_id.h:102
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition lib_id.h:87
bool HasLibrary(const wxString &aNickname, bool aCheckEnabled=false) const
Test for the existence of aNickname in the library table.
Definition pad.h:54
static TOOL_ACTION padDisplayMode
static TOOL_ACTION rehatchShapes
static TOOL_ACTION graphicsOutlines
Display footprint graphics as outlines.
static TOOL_ACTION fpAutoZoom
static TOOL_ACTION textOutlines
Display texts as lines.
static TOOL_ACTION showPadNumbers
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
const PCB_DISPLAY_OPTIONS & GetDisplayOptions() const
Display options control the way tracks, vias, outlines and other things are shown (for instance solid...
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void setFPWatcher(FOOTPRINT *aFootprint)
Create or removes a watcher on the specified footprint.
const VECTOR2I GetPageSizeIU() const override
Works off of GetPageSettings() to return the size of the paper page in the internal units of this par...
PCB_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName)
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual void ActivateGalCanvas() override
Use to start up the GAL drawing canvas.
virtual void SetBoard(BOARD *aBoard, PROGRESS_REPORTER *aReporter=nullptr)
Set the #m_Pcb member in such as way as to ensure deleting any previous BOARD.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
PCB_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
BOARD * GetBoard() const
void SetDisplayOptions(const PCB_DISPLAY_OPTIONS &aOptions, bool aRefresh=true)
Update the current display options.
virtual void Update3DView(bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
virtual void UpdateStatusBar() override
Update the status bar information.
void UpdateColors()
Update the color settings in the painter and GAL.
virtual KIGFX::PCB_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void DisplayBoard(BOARD *aBoard, PROGRESS_REPORTER *aReporter=nullptr)
Add all items from the current board to the VIEW, so they can be displayed by GAL.
Group generic conditions for PCB editor states.
SELECTION_CONDITION PadFillDisplay()
Create a functor that tests if the frame fills the pads.
SELECTION_CONDITION GraphicsFillDisplay()
Create a functor that tests if the frame fills graphics items.
SELECTION_CONDITION FootprintViewerAutoZoom()
Create a functor that tests if the footprint viewer should auto zoom on new footprints.
SELECTION_CONDITION PadNumbersDisplay()
Create a functor that tests if the pad numbers are displayed.
SELECTION_CONDITION TextFillDisplay()
Create a functor that tests if the frame fills text items.
bool m_FootprintViewerAutoZoomOnSelect
true to use automatic zoom on fp selection
double m_FootprintViewerZoom
The last zoom level used (0 for auto)
Tool useful for viewing footprints.
static FP_LIB_TABLE * PcbFootprintLibs(PROJECT *aProject)
Return the table of footprint libraries without Kiway.
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Report a string with a given severity.
Definition reporter.h:102
TOOL_MANAGER * m_toolManager
TOOL_DISPATCHER * m_toolDispatcher
ACTIONS * m_actions
@ MODEL_RELOAD
Model changes (the sheet for a schematic)
Definition tool_base.h:80
Master controller class:
const char * c_str() const
Definition utf8.h:109
wxString wx_str() const
Definition utf8.cpp:45
@ DARKGRAY
Definition color4d.h:46
The common library.
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition confirm.cpp:194
This file is part of the common library.
#define CHECK(x)
#define FOOTPRINTVIEWER_FRAME_NAME
#define _(s)
#define KICAD_DEFAULT_DRAWFRAME_STYLE
#define IGNORE_PARENT_GROUP
Definition eda_item.h:55
@ FRAME_CVPCB_DISPLAY
Definition frame_type.h:53
@ ID_ON_GRID_SELECT
Definition id.h:114
@ ID_ON_ZOOM_SELECT
Definition id.h:112
PROJECT & Prj()
Definition kicad.cpp:612
This file contains miscellaneous commonly used macros and functions.
Message panel definition file.
BOARD * GetBoard()
see class PGM_BASE
@ RPT_SEVERITY_ERROR
#define DEFAULT_THEME
T * GetToolbarSettings(const wxString &aFilename)
T * GetAppSettings(const char *aFilename)
wxString From_UTF8(const char *cstring)
Store the common settings that are saved and loaded for each window / frame.
CURSOR_SETTINGS cursor
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:695