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 (C) 2004-2023 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>
31#include <widgets/msgpanel.h>
32#include <bitmaps.h>
33#include <grid_tricks.h>
34#include <board.h>
37#include <pcbnew_id.h>
38#include <pcbnew_settings.h>
40#include <wx/listbox.h>
41#include <wx/statline.h>
42#include <wx/tokenzr.h>
43#include <wx/numformatter.h>
45#include <base_units.h>
46#include <pgm_base.h>
49#include <tool/tool_manager.h>
51#include <tool/action_toolbar.h>
52#include <tool/common_tools.h>
54#include "tools/pcb_control.h"
55#include "tools/pcb_actions.h"
57
58
60
61 // Window events
64
65 // Toolbar events
71
72 // listbox events
75 FOOTPRINT_WIZARD_FRAME::ParametersUpdated )
76END_EVENT_TABLE()
77
78
79// Note: our FOOTPRINT_WIZARD_FRAME is always modal.
80
81FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway, wxWindow* aParent,
82 FRAME_T aFrameType ) :
83 PCB_BASE_EDIT_FRAME( aKiway, aParent, aFrameType, _( "Footprint Wizard" ),
84 wxDefaultPosition, wxDefaultSize,
85 aParent ? KICAD_DEFAULT_DRAWFRAME_STYLE | wxFRAME_FLOAT_ON_PARENT
86 : KICAD_DEFAULT_DRAWFRAME_STYLE | wxSTAY_ON_TOP,
88 m_wizardListShown( false )
89{
90 wxASSERT( aFrameType == FRAME_FOOTPRINT_WIZARD );
91
92 // This frame is always show modal:
93 SetModal( true );
94
95 // Give an icon
96 wxIcon icon;
97 icon.CopyFromBitmap( KiBitmap( BITMAPS::module_wizard ) );
98 SetIcon( icon );
99
100 m_wizardName.Empty();
101
102 // Create the GAL canvas.
103 // Must be created before calling LoadSettings() that needs a valid GAL canvas
104 PCB_DRAW_PANEL_GAL* gal_drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ),
105 m_frameSize,
106 GetGalDisplayOptions(),
108 SetCanvas( gal_drawPanel );
109
110 SetBoard( new BOARD() );
111
112 // Ensure all layers and items are visible:
114 SetScreen( new PCB_SCREEN( GetPageSizeIU() ) );
115 GetScreen()->m_Center = true; // Center coordinate origins on screen.
116
117 LoadSettings( config() );
118
119 SetSize( m_framePos.x, m_framePos.y, m_frameSize.x, m_frameSize.y );
120
121 // Set some display options here, because the FOOTPRINT_WIZARD_FRAME
122 // does not have a config menu to do that:
123
124 // the footprint wizard frame has no config menu. so use some settings
125 // from the caller, or force some options:
126 PCB_BASE_FRAME* caller = dynamic_cast<PCB_BASE_FRAME*>( aParent );
127
128 if( caller )
129 SetUserUnits( caller->GetUserUnits() );
130
131 // In viewer, the default net clearance is not known (it depends on the actual board).
132 // So we do not show the default clearance, by setting it to 0
133 // The footprint or pad specific clearance will be shown
134 GetBoard()->GetDesignSettings().m_NetSettings->m_DefaultNetClass->SetClearance( 0 );
135
136 // Create the manager and dispatcher & route draw panel events to the dispatcher
137 m_toolManager = new TOOL_MANAGER;
138 m_toolManager->SetEnvironment( GetBoard(), gal_drawPanel->GetView(),
139 gal_drawPanel->GetViewControls(), config(), this );
140 m_actions = new PCB_ACTIONS();
141 m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
142 gal_drawPanel->SetEventDispatcher( m_toolDispatcher );
143
144 m_toolManager->RegisterTool( new PCB_CONTROL );
145 m_toolManager->RegisterTool( new PCB_SELECTION_TOOL ); // for std context menus (zoom & grid)
146 m_toolManager->RegisterTool( new SCRIPTING_TOOL );
147 m_toolManager->RegisterTool( new COMMON_TOOLS );
148 m_toolManager->InitTools();
149
150 // Run the control tool, it is supposed to be always active
151 m_toolManager->InvokeTool( "pcbnew.InteractiveSelection" );
152
153 // Create the toolbars
154 ReCreateHToolbar();
155 ReCreateVToolbar();
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_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" ).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.m_fullscreenCursor = true;
202 galOpts.m_forceDisplayCursor = true;
203 galOpts.m_axesEnabled = true;
204
205 ActivateGalCanvas();
206 updateView();
207
208 SetActiveLayer( F_Cu );
209 GetToolManager()->PostAction( ACTIONS::zoomFitScreen );
210
211 // Do not Run a dialog here: on some Window Managers, it creates issues.
212 // Reason: the FOOTPRINT_WIZARD_FRAME is run as modal;
213 // It means the call to FOOTPRINT_WIZARD_FRAME::ShowModal will change the
214 // Event Loop Manager, and stop the one created by the dialog.
215 // It does not happen on all W.M., perhaps due to the way the order events are called
216 // See the call in onActivate instead
217}
218
219
221{
222 // Delete the GRID_TRICKS.
223 m_parameterGrid->PopEventHandler( true );
224
226 // Be sure any event cannot be fired after frame deletion:
227 GetCanvas()->SetEvtHandlerEnabled( false );
228
229 // Be sure a active tool (if exists) is deactivated:
230 if( m_toolManager )
232
233 EDA_3D_VIEWER_FRAME* draw3DFrame = Get3DViewerFrame();
234
235 if( draw3DFrame )
236 draw3DFrame->Destroy();
237
238 // Now this frame can be deleted
239}
240
241
243{
244 SaveSettings( config() );
245
246 if( IsModal() )
247 {
248 // Only dismiss a modal frame once, so that the return values set by
249 // the prior DismissModal() are not bashed for ShowModal().
250 if( !IsDismissed() )
251 DismissModal( false );
252 }
253}
254
255
257{
258 DismissModal( true );
259 Close();
260}
261
262
263void FOOTPRINT_WIZARD_FRAME::OnGridSize( wxSizeEvent& aSizeEvent )
264{
265 // Resize the parameter columns
267
268 aSizeEvent.Skip();
269}
270
271
272void FOOTPRINT_WIZARD_FRAME::OnSize( wxSizeEvent& SizeEv )
273{
274 if( m_auimgr.GetManagedWindow() )
275 m_auimgr.Update();
276
277 SizeEv.Skip();
278}
279
280
282{
283 wxString currentTheme = GetFootprintEditorSettings()->m_ColorTheme;
284
285 return Pgm().GetSettingsManager().GetColorSettings( currentTheme );
286}
287
288
290{
296}
297
298
300{
301 BOARD_ITEM* footprint = GetBoard()->GetFirstFootprint();
302
303 if( footprint )
304 {
305 std::vector<MSG_PANEL_ITEM> items;
306
307 footprint->GetMsgPanelInfo( this, items );
308 SetMsgPanel( items );
309 }
310 else
311 {
313 }
314}
315
316
318{
320
321 // Prepare the grid where parameters are displayed
322
323 m_parameterGrid->CreateGrid( 0, 3 );
324
325 m_parameterGrid->SetColLabelValue( WIZ_COL_NAME, _( "Parameter" ) );
326 m_parameterGrid->SetColLabelValue( WIZ_COL_VALUE, _( "Value" ) );
327 m_parameterGrid->SetColLabelValue( WIZ_COL_UNITS, _( "Units" ) );
328
330 m_parameterGrid->SetColLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTRE );
331 m_parameterGrid->AutoSizeColumns();
332
333 m_parameterGrid->AutoSizeRows();
334 m_parameterGrid->SetRowLabelSize( 0 );
335
336 m_parameterGrid->DisableDragGridSize();
337 m_parameterGrid->DisableDragColSize();
338
339 m_parameterGrid->Connect( wxEVT_SIZE,
340 wxSizeEventHandler( FOOTPRINT_WIZARD_FRAME::OnGridSize ),
341 nullptr, this );
342}
343
344
346{
347 if( m_pageList == nullptr )
348 return;
349
350 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
351
352 if( !footprintWizard )
353 return;
354
355 m_pageList->Clear();
356 int max_page = footprintWizard->GetNumParameterPages();
357
358 for( int i = 0; i < max_page; i++ )
359 {
360 wxString name = footprintWizard->GetParameterPageName( i );
361 m_pageList->Append( name );
362 }
363
364 m_pageList->SetSelection( 0, true );
365
369 GetCanvas()->Refresh();
370}
371
372
374{
375 if( m_parameterGrid == nullptr )
376 return;
377
378 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
379
380 if( footprintWizard == nullptr )
381 return;
382
383 m_parameterGrid->Freeze();
384
385 m_parameterGrid->ClearGrid();
386 m_parameterGridPage = m_pageList->GetSelection();
387
388 if( m_parameterGridPage < 0 ) // Should not happen
389 return;
390
391 // Get the list of names, values, types, hints and designators
392 wxArrayString designatorsList = footprintWizard->GetParameterDesignators( m_parameterGridPage );
393 wxArrayString namesList = footprintWizard->GetParameterNames( m_parameterGridPage );
394 wxArrayString valuesList = footprintWizard->GetParameterValues( m_parameterGridPage );
395 wxArrayString typesList = footprintWizard->GetParameterTypes( m_parameterGridPage );
396 wxArrayString hintsList = footprintWizard->GetParameterHints( m_parameterGridPage );
397
398 // Dimension the wxGrid
400 m_parameterGrid->AppendRows( namesList.size() );
401
402 wxString designator, name, value, units, hint;
403
404 for( unsigned int i = 0; i < namesList.size(); i++ )
405 {
406 designator = designatorsList[i];
407 name = namesList[i];
408 value = valuesList[i];
409 units = typesList[i];
410 hint = hintsList[i];
411
412 m_parameterGrid->SetRowLabelValue( i, designator );
413
414 // Set the 'Name'
415 m_parameterGrid->SetCellValue( i, WIZ_COL_NAME, name );
416 m_parameterGrid->SetReadOnly( i, WIZ_COL_NAME );
417
418 // Boolean parameters are displayed using a checkbox
419 if( units == WIZARD_PARAM_UNITS_BOOL )
420 {
421 // Set to ReadOnly as we delegate interactivity to GRID_TRICKS
422 m_parameterGrid->SetReadOnly( i, WIZ_COL_VALUE );
423 m_parameterGrid->SetCellRenderer( i, WIZ_COL_VALUE, new wxGridCellBoolRenderer );
424 }
425 // Parameters that can be selected from a list of multiple options
426 else if( units.Contains( wxT( "," ) ) ) // Indicates list of available options
427 {
428 wxStringTokenizer tokenizer( units, wxT( "," ) );
429 wxArrayString options;
430
431 while( tokenizer.HasMoreTokens() )
432 {
433 options.Add( tokenizer.GetNextToken() );
434 }
435
436 m_parameterGrid->SetCellEditor( i, WIZ_COL_VALUE,
437 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 m_parameterGrid->Thaw();
471}
472
474{
475 // Parameter grid is not yet configured
476 if( ( m_parameterGrid == nullptr ) || ( m_parameterGrid->GetNumberCols() == 0 ) )
477 return;
478
479 // first auto-size the columns to ensure enough space around text
480 m_parameterGrid->AutoSizeColumns();
481
482 // Auto-size the value column
483 int width = m_parameterGrid->GetClientSize().GetWidth() -
484 m_parameterGrid->GetRowLabelSize() -
485 m_parameterGrid->GetColSize( WIZ_COL_NAME ) -
486 m_parameterGrid->GetColSize( WIZ_COL_UNITS );
487
488 if( width > m_parameterGrid->GetColMinimalAcceptableWidth() )
489 {
490 m_parameterGrid->SetColSize( WIZ_COL_VALUE, width );
491 }
492}
493
494
495void FOOTPRINT_WIZARD_FRAME::ClickOnPageList( wxCommandEvent& event )
496{
497 if( m_pageList->GetSelection() >= 0 )
498 {
500 GetCanvas()->Refresh();
502 }
503}
504
505
507{
508 PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
509 wxCHECK( cfg, /*void*/ );
510
512
514}
515
516
518{
519 PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
520 wxCHECK( cfg, /*void*/ );
521
523
524 cfg->m_FootprintViewer.perspective = m_auimgr.SavePerspective().ToStdString();
525}
526
527
529{
530 auto cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
531 wxASSERT( cfg );
532
533 return cfg ? &cfg->m_FootprintWizard : nullptr;
534}
535
536
537void FOOTPRINT_WIZARD_FRAME::OnActivate( wxActivateEvent& event )
538{
539 // Ensure we do not have old selection:
540 if( !event.GetActive() )
541 return;
542
543 if( !m_wizardListShown )
544 {
545 m_wizardListShown = true;
546 wxPostEvent( this, wxCommandEvent( wxEVT_TOOL, ID_FOOTPRINT_WIZARD_SELECT_WIZARD ) );
547 }
548#if 0
549 // Currently, we do not have a way to see if a Python wizard has changed,
550 // therefore the lists of parameters and option has to be rebuilt
551 // This code could be enabled when this way exists
552 bool footprintWizardsChanged = false;
553
554 if( footprintWizardsChanged )
555 {
556 // If we are here, the library list has changed, rebuild it
559 }
560#endif
561}
562
563
564void FOOTPRINT_WIZARD_FRAME::Update3DView( bool aMarkDirty, bool aRefresh, const wxString* aTitle )
565{
566 wxString frm3Dtitle;
567 frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), m_wizardName );
568 PCB_BASE_FRAME::Update3DView( aMarkDirty, aRefresh, &frm3Dtitle );
569}
570
571
573{
574 if( m_mainToolBar )
575 {
577 }
578 else
579 {
580 m_mainToolBar = new ACTION_TOOLBAR( this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
581 KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT );
583 }
584
585 // Set up toolbar
586 m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_SELECT_WIZARD, wxEmptyString,
587 KiBitmap( BITMAPS::module_wizard ),
588 _( "Select wizard script to run" ) );
589
592 KiBitmap( BITMAPS::reload ),
593 _( "Reset wizard parameters to default") );
594
596 m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_PREVIOUS, wxEmptyString,
597 KiBitmap( BITMAPS::lib_previous ),
598 _( "Select previous parameters page" ) );
599 m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_NEXT, wxEmptyString,
600 KiBitmap( BITMAPS::lib_next ),
601 _( "Select next parameters page" ) );
602
603#if 0 // Currently: the 3D viewer is not useful
606#endif
607
613
614 // The footprint wizard always can export the current footprint
617 wxEmptyString, KiBitmap( BITMAPS::export_footprint_names ),
618 _( "Export footprint to editor" ) );
619
620 // after adding the buttons to the toolbar, must call Realize() to
621 // reflect the changes
622 m_mainToolBar->Realize();
623}
624
625
627{
628 return GetBoard()->GetFirstFootprint();
629}
630
631
633{
634 // Currently, there is no vertical toolbar
635}
636
638{
639 // Reload the Python plugins
640 // Because the board editor has also a plugin python menu,
641 // call the PCB_EDIT_FRAME RunAction() if the board editor is running
642 // Otherwise run the current RunAction().
643 PCB_EDIT_FRAME* pcbframe = static_cast<PCB_EDIT_FRAME*>( Kiway().Player( FRAME_PCB_EDITOR, false ) );
644
645 if( pcbframe )
647 else
649}
const char * name
Definition: DXF_plotter.cpp:57
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
@ module_wizard
static TOOL_ACTION zoomRedraw
Definition: actions.h:114
static TOOL_ACTION show3DViewer
Definition: actions.h:194
static TOOL_ACTION zoomOutCenter
Definition: actions.h:118
static TOOL_ACTION pluginsReload
Cursor control event types.
Definition: actions.h:224
static TOOL_ACTION zoomFitScreen
Definition: actions.h:124
static TOOL_ACTION zoomInCenter
Definition: actions.h:117
Define the structure of a toolbar with buttons that invoke ACTIONs.
void SetAuiManager(wxAuiManager *aManager)
Set the AUI manager that this toolbar belongs to.
void AddScaledSeparator(wxWindow *aWindow)
Add a separator that introduces space on either side to not squash the tools when scaled.
void ClearToolbar()
Clear the toolbar and remove all associated menus.
void Add(const TOOL_ACTION &aAction, bool aIsToggleEntry=false, bool aIsCancellable=false)
Add a TOOL_ACTION-based button to the toolbar.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:92
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:175
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:77
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:282
FOOTPRINT * GetFirstFootprint() const
Get the first footprint on the board or nullptr.
Definition: board.h:433
void SetVisibleAlls()
Change the bit-mask of visible element categories and layers.
Definition: board.cpp:726
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.cpp:794
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.
Definition: common_tools.h:38
Create and handle a window for the 3d viewer connected to a Kiway and a pcbboard.
static constexpr int KICAD_AUI_TB_STYLE
< Default style flags used for wxAUI toolbars.
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.
ACTION_TOOLBAR * m_mainToolBar
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:202
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
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.
void Process_Special_Functions(wxCommandEvent &event)
wxString m_auiPerspective
Encoded string describing the AUI layout.
void DefaultParameters(wxCommandEvent &event)
void ExportSelectedFootprint(wxCommandEvent &aEvent)
Will let the caller exit from the wait loop, and get the built footprint.
void SelectCurrentWizard(wxCommandEvent &event)
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...
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 IsDismissed()
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...
Definition: kiway_player.h:154
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:279
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:406
WINDOW_SETTINGS m_FootprintViewer
Gather all the actions that are shared by tools.
Definition: pcb_actions.h:50
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:
virtual SETTINGS_MANAGER & GetSettingsManager() const
Definition: pgm_base.h:142
Tool relating to pads and pad settings.
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:167
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:55
@ MODEL_RELOAD
Model changes (the sheet for a schematic)
Definition: tool_base.h:80
Master controller class:
Definition: tool_manager.h:62
void DeactivateTool()
Deactivate the currently active tool.
bool RunAction(const std::string &aActionName, T aParam)
Run the specified action immediately, pausing the current action to run the new one.
Definition: tool_manager.h:150
void ResetTools(TOOL_BASE::RESET_REASON aReason)
Reset all tools (i.e.
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
void SetColLabelSize(int aHeight)
Hide wxGrid's SetColLabelSize() method with one which makes sure the size is tall enough for the syst...
Definition: wx_grid.cpp:246
void ClearRows()
wxWidgets recently added an ASSERT which fires if the position is greater than or equal to the number...
Definition: wx_grid.h:165
#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
@ WIZ_COL_VALUE
@ WIZ_COL_NAME
@ WIZ_COL_UNITS
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_PREVIOUS
Definition: pcbnew_id.h:109
@ ID_FOOTPRINT_WIZARD_NEXT
Definition: pcbnew_id.h:108
@ ID_FOOTPRINT_WIZARD_DONE
Definition: pcbnew_id.h:110
@ ID_FOOTPRINT_WIZARD_SELECT_WIZARD
Definition: pcbnew_id.h:113
@ ID_FOOTPRINT_WIZARD_RESET_TO_DEFAULT
Definition: pcbnew_id.h:114
@ ID_FOOTPRINT_WIZARD_PARAMETER_LIST
Definition: pcbnew_id.h:112
@ ID_FOOTPRINT_WIZARD_PAGE_LIST
Definition: pcbnew_id.h:111
BOARD * GetBoard()
PGM_BASE & Pgm()
The global Program "get" accessor.
Definition: pgm_base.cpp:1059
see class PGM_BASE
KIWAY Kiway(KFCTL_STANDALONE)
Stores the common settings that are saved and loaded for each window / frame.
Definition: app_settings.h:74
wxString perspective
Definition: app_settings.h:77
Definition of file extensions used in Kicad.