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 {
68 m_buildMessageBox->SetValue( footprintWizard->Info().meta.description );
69 // Add the object to board
71 m_builtFootprint->SetPosition( VECTOR2I( 0, 0 ) );
72 }
73 else
74 {
75 m_builtFootprint = nullptr;
76 m_buildMessageBox->SetValue( result.error() );
77 }
78
79 updateView();
80 GetCanvas()->Refresh();
81}
82
83
88
89
91{
92 if( !m_builtFootprint )
93 return nullptr;
94
95 return static_cast<FOOTPRINT*>( m_builtFootprint->Duplicate( IGNORE_PARENT_GROUP ) );
96}
97
98
100{
101 DIALOG_FOOTPRINT_WIZARD_LIST wizardSelector( this );
102
103 if( wizardSelector.ShowModal() != wxID_OK )
104 return;
105
106 m_currentWizard = nullptr;
107 m_builtFootprint = nullptr;
108 wxString wizardIdentifier = wizardSelector.GetWizard();
109
110 if( !wizardIdentifier.IsEmpty() )
111 {
112 if( std::optional<FOOTPRINT_WIZARD*> wizard = Manager()->GetWizard( wizardIdentifier ) )
113 m_currentWizard = *wizard;
114 }
115
117 Zoom_Automatique( false );
120}
121
122
124{
126 updateView();
127}
128
130{
131 FOOTPRINT_WIZARD* footprintWizard = GetMyWizard();
132
133 if ( footprintWizard == nullptr )
134 return;
135
136 footprintWizard->ResetParameters();
137
138 // Reload
142}
143
144
149
150
156
157
158void FOOTPRINT_WIZARD_FRAME::SetBuildMessage( const wxString& aMessage )
159{
160 m_buildMessageBox->SetValue( aMessage );
161}
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
Definition board.cpp:1497
void DeleteAllFootprints()
Remove all footprints from the deque and free the memory associated with them.
Definition board.cpp:2077
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
FOOTPRINT * GetBuiltFootprint()
Return a duplicate of the generated footprint. The caller takes ownership.
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 SetBuildMessage(const wxString &aMessage)
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)
#define IGNORE_PARENT_GROUP
Definition eda_item.h:55
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.