KiCad PCB EDA Suite
Loading...
Searching...
No Matches
footprint_wizard_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) 2012-2015 Miguel Angel Ajo Pelayo <[email protected]>
5 * Copyright (C) 2012-2019 Jean-Pierre Charras, jp.charras at wanadoo.fr
6 * Copyright (C) 2008 Wayne Stambaugh <[email protected]>
7 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, you may find one here:
21 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
22 * or you may search the http://www.gnu.org website for the version 2 license,
23 * or you may write to the Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
25 */
26
27#include <kiface_base.h>
28#include <pcb_draw_panel_gal.h>
29#include <pcb_edit_frame.h>
32#include <widgets/msgpanel.h>
33#include <bitmaps.h>
34#include <grid_tricks.h>
35#include <board.h>
38#include <pcbnew_id.h>
39#include <wx/listbox.h>
40#include <wx/statline.h>
41#include <wx/tokenzr.h>
42#include <wx/numformatter.h>
43#include <wx/wupdlock.h>
44#include <pgm_base.h>
47#include <tool/tool_manager.h>
49#include <tool/action_toolbar.h>
50#include <tool/common_tools.h>
52#include <tools/pcb_control.h>
53#include <tools/pcb_actions.h>
58
59
61
62 // Window events
65
66 // Toolbar events
69
70 // listbox events
73 FOOTPRINT_WIZARD_FRAME::ParametersUpdated )
74END_EVENT_TABLE()
75
76
77// Note: our FOOTPRINT_WIZARD_FRAME is always modal.
78
79FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway, wxWindow* aParent,
80 FRAME_T aFrameType ) :
81 PCB_BASE_EDIT_FRAME( aKiway, aParent, aFrameType, _( "Footprint Wizard" ),
82 wxDefaultPosition, wxDefaultSize,
83 aParent ? KICAD_DEFAULT_DRAWFRAME_STYLE | wxFRAME_FLOAT_ON_PARENT
84 : KICAD_DEFAULT_DRAWFRAME_STYLE | wxSTAY_ON_TOP,
86 m_wizardListShown( false )
87{
88 wxASSERT( aFrameType == FRAME_FOOTPRINT_WIZARD );
89
90 // This frame is always show modal:
91 SetModal( true );
92
93 // Give an icon
94 wxIcon icon;
95 icon.CopyFromBitmap( KiBitmap( BITMAPS::module_wizard ) );
96 SetIcon( icon );
97
98 m_wizardName.Empty();
99
100 // Create the GAL canvas.
101 // Must be created before calling LoadSettings() that needs a valid GAL canvas
102 PCB_DRAW_PANEL_GAL* gal_drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ),
103 m_frameSize,
104 GetGalDisplayOptions(),
106 SetCanvas( gal_drawPanel );
107
108 SetBoard( new BOARD() );
109
110 // Ensure all layers and items are visible:
112 SetScreen( new PCB_SCREEN( GetPageSizeIU() ) );
113 GetScreen()->m_Center = true; // Center coordinate origins on screen.
114
115 LoadSettings( config() );
116
117 SetSize( m_framePos.x, m_framePos.y, m_frameSize.x, m_frameSize.y );
118
119 // Set some display options here, because the FOOTPRINT_WIZARD_FRAME
120 // does not have a config menu to do that:
121
122 // the footprint wizard frame has no config menu. so use some settings
123 // from the caller, or force some options:
124 PCB_BASE_FRAME* caller = dynamic_cast<PCB_BASE_FRAME*>( aParent );
125
126 if( caller )
127 SetUserUnits( caller->GetUserUnits() );
128
129 // In viewer, the default net clearance is not known (it depends on the actual board).
130 // So we do not show the default clearance, by setting it to 0
131 // The footprint or pad specific clearance will be shown
133
134 // Create the manager and dispatcher & route draw panel events to the dispatcher
135 m_toolManager = new TOOL_MANAGER;
136 m_toolManager->SetEnvironment( GetBoard(), gal_drawPanel->GetView(),
137 gal_drawPanel->GetViewControls(), config(), this );
138 m_actions = new PCB_ACTIONS();
139 m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
140 gal_drawPanel->SetEventDispatcher( m_toolDispatcher );
141
142 m_toolManager->RegisterTool( new PCB_CONTROL );
143 m_toolManager->RegisterTool( new PCB_SELECTION_TOOL ); // for std context menus (zoom & grid)
144 m_toolManager->RegisterTool( new SCRIPTING_TOOL );
145 m_toolManager->RegisterTool( new COMMON_TOOLS );
146 m_toolManager->RegisterTool( new FOOTPRINT_WIZARD_TOOLS );
147 m_toolManager->InitTools();
148
149 // Run the control tool, it is supposed to be always active
150 m_toolManager->InvokeTool( "common.InteractiveSelection" );
151
152 // Create the toolbars
153 m_toolbarSettings = GetToolbarSettings<FOOTPRINT_WIZARD_TOOLBAR_SETTINGS>( "fpwizard-toolbars" );
154 configureToolbars();
155 RecreateToolbars();
156
157 // Create the parameters panel
158 m_parametersPanel = new wxPanel( this, wxID_ANY );
159
160 m_pageList = new wxListBox( m_parametersPanel, ID_FOOTPRINT_WIZARD_PAGE_LIST,
161 wxDefaultPosition, wxDefaultSize, 0, nullptr,
162 wxLB_HSCROLL | wxNO_BORDER );
163
164 auto divider = new wxStaticLine( m_parametersPanel, wxID_ANY,
165 wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
166
167 m_parameterGrid = new WX_GRID( m_parametersPanel, ID_FOOTPRINT_WIZARD_PARAMETER_LIST );
168 initParameterGrid();
169 m_parameterGrid->PushEventHandler( new GRID_TRICKS( m_parameterGrid ) );
170
171 ReCreatePageList();
172
173 wxBoxSizer* parametersSizer = new wxBoxSizer( wxHORIZONTAL );
174 parametersSizer->Add( m_pageList, 0, wxEXPAND, 5 );
175 parametersSizer->Add( divider, 0, wxEXPAND, 5 );
176 parametersSizer->Add( m_parameterGrid, 1, wxEXPAND, 5 );
177 m_parametersPanel->SetSizer( parametersSizer );
178 m_parametersPanel->Layout();
179
180 // Create the build message box
181 m_buildMessageBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString,
182 wxDefaultPosition, wxDefaultSize,
183 wxTE_MULTILINE | wxTE_READONLY | wxNO_BORDER );
184
185 DisplayWizardInfos();
186
187 m_auimgr.SetManagedWindow( this );
188
189 m_auimgr.AddPane( m_tbTopMain, EDA_PANE().HToolbar().Name( "TopMainToolbar" ).Top().Layer(6) );
190 m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" ).Bottom().Layer(6)
191 .BestSize( -1, m_msgFrameHeight ) );
192
193 m_auimgr.AddPane( m_parametersPanel, EDA_PANE().Palette().Name( "Params" ).Left().Position(0)
194 .Caption( _( "Parameters" ) ).MinSize( 360, 180 ) );
195 m_auimgr.AddPane( m_buildMessageBox, EDA_PANE().Palette().Name( "Output" ).Left().Position(1)
196 .CaptionVisible( false ).MinSize( 360, -1 ) );
197
198 m_auimgr.AddPane( GetCanvas(), wxAuiPaneInfo().Name( "DrawFrame" ).CentrePane() );
199
200 auto& galOpts = GetGalDisplayOptions();
201 galOpts.SetCursorMode( KIGFX::CROSS_HAIR_MODE::FULLSCREEN_CROSS );
202 galOpts.m_forceDisplayCursor = true;
203 galOpts.m_axesEnabled = true;
204
205 // Switch to the canvas type set in config
206 resolveCanvasType();
207 GetCanvas()->SwitchBackend( m_canvasType );
208 ActivateGalCanvas();
209
210 updateView();
211
212 SetActiveLayer( F_Cu );
213 GetToolManager()->PostAction( ACTIONS::zoomFitScreen );
214
215 // Do not Run a dialog here: on some Window Managers, it creates issues.
216 // Reason: the FOOTPRINT_WIZARD_FRAME is run as modal;
217 // It means the call to FOOTPRINT_WIZARD_FRAME::ShowModal will change the
218 // Event Loop Manager, and stop the one created by the dialog.
219 // It does not happen on all W.M., perhaps due to the way the order events are called
220 // See the call in onActivate instead
221}
222
223
225{
226 // Delete the GRID_TRICKS.
227 m_parameterGrid->PopEventHandler( true );
228
230 // Be sure any event cannot be fired after frame deletion:
231 GetCanvas()->SetEvtHandlerEnabled( false );
232
233 // Be sure a active tool (if exists) is deactivated:
234 if( m_toolManager )
235 m_toolManager->DeactivateTool();
236
237 EDA_3D_VIEWER_FRAME* draw3DFrame = Get3DViewerFrame();
238
239 if( draw3DFrame )
240 draw3DFrame->Destroy();
241
242 // Now this frame can be deleted
243}
244
245
247{
248 SaveSettings( config() );
249
250 if( IsModal() )
251 {
252 // Only dismiss a modal frame once, so that the return values set by
253 // the prior DismissModal() are not bashed for ShowModal().
254 if( !IsDismissed() )
255 DismissModal( false );
256 }
257}
258
259
261{
262 DismissModal( true );
263 Close();
264}
265
266
267void FOOTPRINT_WIZARD_FRAME::OnGridSize( wxSizeEvent& aSizeEvent )
268{
269 // Resize the parameter columns
271
272 aSizeEvent.Skip();
273}
274
275
276void FOOTPRINT_WIZARD_FRAME::OnSize( wxSizeEvent& SizeEv )
277{
278 if( m_auimgr.GetManagedWindow() )
279 m_auimgr.Update();
280
281 SizeEv.Skip();
282}
283
284
286{
288 return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
289}
290
291
300
301
303{
304 BOARD_ITEM* footprint = GetBoard()->GetFirstFootprint();
305
306 if( footprint )
307 {
308 std::vector<MSG_PANEL_ITEM> items;
309
310 footprint->GetMsgPanelInfo( this, items );
311 SetMsgPanel( items );
312 }
313 else
314 {
316 }
317}
318
319
321{
323
324 // Prepare the grid where parameters are displayed
325
326 m_parameterGrid->CreateGrid( 0, 3 );
327
328 m_parameterGrid->SetColLabelValue( WIZ_COL_NAME, _( "Parameter" ) );
329 m_parameterGrid->SetColLabelValue( WIZ_COL_VALUE, _( "Value" ) );
330 m_parameterGrid->SetColLabelValue( WIZ_COL_UNITS, _( "Units" ) );
331
332 m_parameterGrid->SetColLabelSize( 22 );
333 m_parameterGrid->SetColLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTRE );
334 m_parameterGrid->AutoSizeColumns();
335
336 m_parameterGrid->AutoSizeRows();
337 m_parameterGrid->SetRowLabelSize( 0 );
338
339 m_parameterGrid->DisableDragGridSize();
340 m_parameterGrid->DisableDragColSize();
341
342 m_parameterGrid->Connect( wxEVT_SIZE,
343 wxSizeEventHandler( FOOTPRINT_WIZARD_FRAME::OnGridSize ),
344 nullptr, this );
345}
346
347
349{
350 if( m_pageList == nullptr )
351 return;
352
353 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
354
355 if( !footprintWizard )
356 return;
357
358 m_pageList->Clear();
359 int max_page = footprintWizard->GetNumParameterPages();
360
361 for( int i = 0; i < max_page; i++ )
362 {
363 wxString name = footprintWizard->GetParameterPageName( i );
364 m_pageList->Append( name );
365 }
366
367 m_pageList->SetSelection( 0, true );
368
372 GetCanvas()->Refresh();
373}
374
375
377{
378 if( m_parameterGrid == nullptr )
379 return;
380
381 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
382
383 if( footprintWizard == nullptr )
384 return;
385
386 wxWindowUpdateLocker updateLock( m_parameterGrid );
387
388 m_parameterGrid->ClearGrid();
389 m_parameterGridPage = m_pageList->GetSelection();
390
391 if( m_parameterGridPage < 0 ) // Should not happen
392 return;
393
394 // Get the list of names, values, types, hints and designators
395 wxArrayString designatorsList = footprintWizard->GetParameterDesignators( m_parameterGridPage );
396 wxArrayString namesList = footprintWizard->GetParameterNames( m_parameterGridPage );
397 wxArrayString valuesList = footprintWizard->GetParameterValues( m_parameterGridPage );
398 wxArrayString typesList = footprintWizard->GetParameterTypes( m_parameterGridPage );
399 wxArrayString hintsList = footprintWizard->GetParameterHints( m_parameterGridPage );
400
401 // Dimension the wxGrid
402 m_parameterGrid->ClearRows();
403 m_parameterGrid->AppendRows( namesList.size() );
404
405 wxString designator, name, value, units, hint;
406
407 for( unsigned int i = 0; i < namesList.size(); i++ )
408 {
409 designator = designatorsList[i];
410 name = namesList[i];
411 value = valuesList[i];
412 units = typesList[i];
413 hint = hintsList[i];
414
415 m_parameterGrid->SetRowLabelValue( i, designator );
416
417 // Set the 'Name'
418 m_parameterGrid->SetCellValue( i, WIZ_COL_NAME, name );
419 m_parameterGrid->SetReadOnly( i, WIZ_COL_NAME );
420
421 // Boolean parameters are displayed using a checkbox
422 if( units == WIZARD_PARAM_UNITS_BOOL )
423 {
424 // Set to ReadOnly as we delegate interactivity to GRID_TRICKS
425 m_parameterGrid->SetReadOnly( i, WIZ_COL_VALUE );
426 m_parameterGrid->SetCellRenderer( i, WIZ_COL_VALUE, new wxGridCellBoolRenderer );
427 }
428 // Parameters that can be selected from a list of multiple options
429 else if( units.Contains( "," ) ) // Indicates list of available options
430 {
431 wxStringTokenizer tokenizer( units, "," );
432 wxArrayString options;
433
434 while( tokenizer.HasMoreTokens() )
435 options.Add( tokenizer.GetNextToken() );
436
437 m_parameterGrid->SetCellEditor( i, WIZ_COL_VALUE, new wxGridCellChoiceEditor( options ) );
438
439 units = wxT( "" );
440 }
441 else if( units == WIZARD_PARAM_UNITS_INTEGER ) // Integer parameters
442 {
443 m_parameterGrid->SetCellEditor( i, WIZ_COL_VALUE, new wxGridCellNumberEditor );
444 }
445 else if( ( units == WIZARD_PARAM_UNITS_MM ) ||
446 ( units == WIZARD_PARAM_UNITS_MILS ) ||
447 ( units == WIZARD_PARAM_UNITS_FLOAT ) ||
448 ( units == WIZARD_PARAM_UNITS_RADIANS ) ||
449 ( units == WIZARD_PARAM_UNITS_DEGREES ) ||
450 ( units == WIZARD_PARAM_UNITS_PERCENT ) )
451 {
452 // Non-integer numerical parameters
453 m_parameterGrid->SetCellEditor( i, WIZ_COL_VALUE, new wxGridCellFloatEditor );
454
455 // Convert separators to the locale-specific character
456 value.Replace( ",", wxNumberFormatter::GetDecimalSeparator() );
457 value.Replace( ".", wxNumberFormatter::GetDecimalSeparator() );
458 }
459
460 // Set the 'Units'
461 m_parameterGrid->SetCellValue( i, WIZ_COL_UNITS, units );
462 m_parameterGrid->SetReadOnly( i, WIZ_COL_UNITS );
463
464 // Set the 'Value'
465 m_parameterGrid->SetCellValue( i, WIZ_COL_VALUE, value );
466 }
467
469}
470
472{
473 // Parameter grid is not yet configured
474 if( ( m_parameterGrid == nullptr ) || ( m_parameterGrid->GetNumberCols() == 0 ) )
475 return;
476
477 // first auto-size the columns to ensure enough space around text
478 m_parameterGrid->AutoSizeColumns();
479
480 // Auto-size the value column
481 int width = m_parameterGrid->GetClientSize().GetWidth() -
482 m_parameterGrid->GetRowLabelSize() -
483 m_parameterGrid->GetColSize( WIZ_COL_NAME ) -
484 m_parameterGrid->GetColSize( WIZ_COL_UNITS );
485
486 if( width > m_parameterGrid->GetColMinimalAcceptableWidth() )
487 {
488 m_parameterGrid->SetColSize( WIZ_COL_VALUE, width );
489 }
490}
491
492
493void FOOTPRINT_WIZARD_FRAME::ClickOnPageList( wxCommandEvent& event )
494{
495 if( m_pageList->GetSelection() >= 0 )
496 {
498 GetCanvas()->Refresh();
500 }
501}
502
503
505{
506 PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
507 wxCHECK( cfg, /*void*/ );
508
510
512}
513
514
516{
517 PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
518 wxCHECK( cfg, /*void*/ );
519
521
522 cfg->m_FootprintViewer.perspective = m_auimgr.SavePerspective().ToStdString();
523}
524
525
527{
528 if( PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
529 return &cfg->m_FootprintWizard;
530
531 wxFAIL_MSG( wxT( "FOOTPRINT_CHOOSER not running with PCBNEW_SETTINGS" ) );
532 return &aCfg->m_Window; // non-null fail-safe
533}
534
535
536void FOOTPRINT_WIZARD_FRAME::OnActivate( wxActivateEvent& event )
537{
538 // Ensure we do not have old selection:
539 if( !event.GetActive() )
540 return;
541
542 if( !m_wizardListShown )
543 {
544 m_wizardListShown = true;
545 wxPostEvent( this, wxCommandEvent( wxEVT_TOOL, ID_FOOTPRINT_WIZARD_SELECT_WIZARD ) );
546 }
547#if 0
548 // Currently, we do not have a way to see if a Python wizard has changed,
549 // therefore the lists of parameters and option has to be rebuilt
550 // This code could be enabled when this way exists
551 bool footprintWizardsChanged = false;
552
553 if( footprintWizardsChanged )
554 {
555 // If we are here, the library list has changed, rebuild it
558 }
559#endif
560}
561
562
563void FOOTPRINT_WIZARD_FRAME::Update3DView( bool aMarkDirty, bool aRefresh, const wxString* aTitle )
564{
565 wxString frm3Dtitle;
566 frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), m_wizardName );
567 PCB_BASE_FRAME::Update3DView( aMarkDirty, aRefresh, &frm3Dtitle );
568}
569
570
575
576
578{
579 // Reload the Python plugins
580 // Because the board editor has also a plugin python menu,
581 // call the PCB_EDIT_FRAME RunAction() if the board editor is running
582 // Otherwise run the current RunAction().
583 PCB_EDIT_FRAME* pcbframe = static_cast<PCB_EDIT_FRAME*>( Kiway().Player( FRAME_PCB_EDITOR, false ) );
584
585 if( pcbframe )
587 else
589}
const char * name
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
static TOOL_ACTION pluginsReload
Definition actions.h:295
static TOOL_ACTION zoomFitScreen
Definition actions.h:141
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.
std::shared_ptr< NET_SETTINGS > m_NetSettings
Abstract interface for BOARD_ITEMs capable of storing other items inside.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition board_item.h:79
FOOTPRINT * GetFirstFootprint() const
Get the first footprint on the board or nullptr.
Definition board.h:488
void SetVisibleAlls()
Change the bit-mask of visible element categories and layers.
Definition board.cpp:972
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.
Create and handle a window for the 3d viewer connected to a Kiway and a pcbboard.
wxAuiManager m_auimgr
virtual void ClearMsgPanel()
Clear all messages from the message panel.
void SetMsgPanel(const std::vector< MSG_PANEL_ITEM > &aList)
Clear the message panel and populates it with the contents of aList.
virtual void ReCreateHToolbar()
static constexpr GAL_TYPE GAL_FALLBACK
void StopDrawing()
Prevent the GAL canvas from further drawing until it is recreated or StartDrawing() is called.
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
void SetEventDispatcher(TOOL_DISPATCHER *aEventDispatcher)
Set a dispatcher that processes events and forwards them to tools.
virtual void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
Definition eda_item.h:220
Specialization of the wxAuiPaneInfo class for KiCad panels.
BOARD_ITEM_CONTAINER * GetModel() const override
void PythonPluginsReload()
Reload the Python plugins if they are newer than the already loaded, and load new plugins if any.
void initParameterGrid()
Prepare the grid where parameters are displayed.
void OnSize(wxSizeEvent &event) override
Recalculate the size of toolbars and display panel when the frame size changes.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
int m_parameterGridPage
the page currently displayed by m_parameterGrid it is most of time the m_pageList selection,...
wxListBox * m_pageList
The list of pages.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void ReCreateParameterList()
Create the list of parameters for the current page.
void DisplayWizardInfos()
Show all the details about the current wizard.
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Helper to retrieve the current color settings.
wxString m_wizardName
name of the current wizard
void SelectCurrentWizard(wxCommandEvent &aDummy)
bool m_wizardListShown
A show-once flag for the wizard list.
void updateView()
Rebuild the GAL view (reint tool manager, colors and drawings) must be run after any footprint change...
void Update3DView(bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr) override
Update the 3D view, if the viewer is opened by this frame.
void ClickOnPageList(wxCommandEvent &event)
WX_GRID * m_parameterGrid
The list of parameters.
FOOTPRINT_WIZARD * GetMyWizard()
Reloads the wizard by name.
void ResizeParamColumns()
Expand the 'Value' column to fill available.
void UpdateMsgPanel() override
Redraw the message panel.
void ReCreatePageList()
Create or recreate the list of parameter pages for the current wizard.
wxString m_auiPerspective
Encoded string describing the AUI layout.
void ExportSelectedFootprint(wxCommandEvent &aEvent)
Will let the caller exit from the wait loop, and get the built footprint.
void OnGridSize(wxSizeEvent &aSizeEvent)
WINDOW_SETTINGS * GetWindowSettings(APP_SETTINGS_BASE *aCfg) override
Return a pointer to the window settings for this frame.
void OnActivate(wxActivateEvent &event)
Called when the frame frame is activate to reload the libraries and component lists that can be chang...
Tool useful for viewing footprints.
The parent class from where any footprint wizard class must derive.
virtual wxArrayString GetParameterHints(int aPage)=0
virtual wxArrayString GetParameterNames(int aPage)=0
virtual wxArrayString GetParameterValues(int aPage)=0
virtual wxString GetParameterPageName(int aPage)=0
virtual wxArrayString GetParameterTypes(int aPage)=0
virtual int GetNumParameterPages()=0
virtual wxArrayString GetParameterDesignators(int aPage)=0
Add mouse and command handling (such as cut, copy, and paste) to a WX_GRID instance.
Definition grid_tricks.h:61
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
void DismissModal(bool aRetVal, const wxString &aResult=wxEmptyString)
bool IsModal() const override
Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame...
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:286
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition kiway.cpp:395
void SetClearance(int aClearance)
Definition netclass.h:119
std::shared_ptr< NETCLASS > GetDefaultNetclass()
Gets the default netclass for the project.
WINDOW_SETTINGS m_FootprintViewer
Gather all the actions that are shared by tools.
Definition pcb_actions.h:51
Common, abstract interface for edit frames.
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
BOARD * GetBoard() const
FOOTPRINT_EDITOR_SETTINGS * GetFootprintEditorSettings() const
EDA_3D_VIEWER_FRAME * Get3DViewerFrame()
virtual void Update3DView(bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
Handle actions that are shared between different frames in PcbNew.
Definition pcb_control.h:47
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.
The main frame for Pcbnew.
The selection tool: currently supports:
Tool relating to pads and pad settings.
TOOL_MANAGER * m_toolManager
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
@ MODEL_RELOAD
Model changes (the sheet for a schematic)
Definition tool_base.h:80
Master controller class:
bool RunAction(const std::string &aActionName, T aParam)
Run the specified action immediately, pausing the current action to run the new one.
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).
EDA_UNITS GetUserUnits() const
#define _(s)
Declaration of the eda_3d_viewer class.
#define KICAD_DEFAULT_DRAWFRAME_STYLE
#define FOOTPRINT_WIZARD_FRAME_NAME
const wxString WIZARD_PARAM_UNITS_PERCENT
const wxString WIZARD_PARAM_UNITS_RADIANS
const wxString WIZARD_PARAM_UNITS_MM
const wxString WIZARD_PARAM_UNITS_INTEGER
const wxString WIZARD_PARAM_UNITS_BOOL
const wxString WIZARD_PARAM_UNITS_FLOAT
const wxString WIZARD_PARAM_UNITS_MILS
const wxString WIZARD_PARAM_UNITS_DEGREES
EVT_GRID_CMD_CELL_CHANGED(ID_FOOTPRINT_WIZARD_PARAMETER_LIST, FOOTPRINT_WIZARD_FRAME::ParametersUpdated) FOOTPRINT_WIZARD_FRAME
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition frame_type.h:33
@ FRAME_PCB_EDITOR
Definition frame_type.h:42
@ FRAME_FOOTPRINT_WIZARD
Definition frame_type.h:46
@ F_Cu
Definition layer_ids.h:64
Message panel definition file.
@ ID_FOOTPRINT_WIZARD_DONE
Definition pcbnew_id.h:86
@ ID_FOOTPRINT_WIZARD_SELECT_WIZARD
Definition pcbnew_id.h:89
@ ID_FOOTPRINT_WIZARD_PARAMETER_LIST
Definition pcbnew_id.h:88
@ ID_FOOTPRINT_WIZARD_PAGE_LIST
Definition pcbnew_id.h:87
BOARD * GetBoard()
see class PGM_BASE
#define DEFAULT_THEME
T * GetToolbarSettings(const wxString &aFilename)
KIWAY Kiway(KFCTL_STANDALONE)
Store the common settings that are saved and loaded for each window / frame.
wxString perspective