KiCad PCB EDA Suite
Loading...
Searching...
No Matches
footprint_wizard_frame_functions.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 Miguel Angel Ajo Pelayo, [email protected]
5 * Copyright (C) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr
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, see <https://www.gnu.org/licenses/>.
20 */
21
22#include <pcb_edit_frame.h>
23#include <board.h>
24#include <footprint.h>
25#include <pcbnew_id.h>
28#include <wx/msgdlg.h>
29#include <tool/tool_manager.h>
31
32
33/* Displays the name of the current opened library in the caption */
35{
36 wxString msg;
37
38 msg = _( "Footprint Wizard" );
39 msg << wxT( " [" );
40
41 wxString wizardName = m_currentWizard ? m_currentWizard->Info().meta.name : _( "no wizard selected" );
42 msg << wizardName;
43
44 msg << wxT( "]" );
45
46 SetTitle( msg );
47}
48
49
51{
52 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
53
54 if( !footprintWizard )
55 return;
56
58
59 // Delete the current footprint
61
62 // Creates the footprint
63 tl::expected<FOOTPRINT*, wxString> result = Manager()->Generate( footprintWizard );
64
65 if( result )
66 {
67 m_buildMessageBox->SetValue( footprintWizard->Info().meta.description );
68 // Add the object to board
70 ( *result )->SetPosition( VECTOR2I( 0, 0 ) );
71 }
72 else
73 {
74 m_buildMessageBox->SetValue( result.error() );
75 }
76
77 updateView();
78 GetCanvas()->Refresh();
79}
80
81
86
87
89{
90 // TODO(JE) should this be cached?
91 tl::expected<FOOTPRINT*, wxString> result = Manager()->Generate( m_currentWizard );
92 return result.value_or( nullptr );
93}
94
95
97{
98 DIALOG_FOOTPRINT_WIZARD_LIST wizardSelector( this );
99
100 if( wizardSelector.ShowModal() != wxID_OK )
101 return;
102
103 m_currentWizard = nullptr;
104 wxString wizardIdentifier = wizardSelector.GetWizard();
105
106 if( !wizardIdentifier.IsEmpty() )
107 {
108 if( std::optional<FOOTPRINT_WIZARD*> wizard = Manager()->GetWizard( wizardIdentifier ) )
109 m_currentWizard = *wizard;
110 }
111
113 Zoom_Automatique( false );
116}
117
118
120{
122 updateView();
123}
124
126{
127 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
128
129 if ( footprintWizard == nullptr )
130 return;
131
132 footprintWizard->ResetParameters();
133
134 // Reload
138}
139
140
145
146
152
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
Definition board.cpp:1295
void DeleteAllFootprints()
Remove all footprints from the deque and free the memory associated with them.
Definition board.cpp:1822
int ShowModal() override
virtual void Zoom_Automatique(bool aWarpPointer)
Redraw the screen with best zoom level and the best centering that shows all the page or the board.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
FOOTPRINT_WIZARD_MANAGER * Manager() const
void ReCreateParameterList()
Create the list of parameters for the current page.
void DisplayWizardInfos()
Show all the details about the current wizard.
void SelectCurrentWizard(wxCommandEvent &aDummy)
void updateView()
Rebuild the GAL view (reint tool manager, colors and drawings) must be run after any footprint change...
FOOTPRINT_WIZARD * m_currentWizard
FOOTPRINT_WIZARD * GetMyWizard()
Reloads the wizard by name.
void RegenerateFootprint()
Regenerate the current footprint.
void SelectFootprintWizard()
Prepare the grid where parameters are displayed.
tl::expected< FOOTPRINT *, wxString > Generate(FOOTPRINT_WIZARD *aWizard)
Generates a footprint using a given wizard.
WIZARD_INFO & Info()
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
BOARD * GetBoard() const
TOOL_MANAGER * m_toolManager
@ MODEL_RELOAD
Model changes (the sheet for a schematic)
Definition tool_base.h:76
#define _(s)
WIZARD_META_INFO meta
wxString result
Test unit parsing edge cases and error handling.
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683
Definition of file extensions used in Kicad.