KiCad PCB EDA Suite
Loading...
Searching...
No Matches
dialog_footprint_wizard_list.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-2014 Miguel Angel Ajo <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#include <wx/grid.h>
26
28#include <pgm_base.h>
29#include <string_utils.h>
30#include <kiface_base.h>
33
34
40
41
53
54
59
60
62{
63 m_selectedWizard = wxEmptyString;
64 m_footprintGeneratorsGrid->ClearGrid();
65
67
68 manager->ReloadWizards();
69 std::vector<FOOTPRINT_WIZARD*> wizards = manager->Wizards();
70
71 m_footprintGeneratorsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
72
73 if( !wizards.empty() )
74 {
75 m_selectedWizard = wizards[0]->Identifier();
76 m_footprintGeneratorsGrid->InsertRows( 0, wizards.size() );
77 }
78
79 int idx = 0;
80
81 for( FOOTPRINT_WIZARD* wizard : wizards )
82 {
83 wxString name = wizard->Info().meta.name;
84 wxString description = wizard->Info().meta.description;
85
86 m_footprintGeneratorsGrid->SetCellValue( idx, FP_GEN_ROW_NAME, name );
87 m_footprintGeneratorsGrid->SetCellValue( idx++, FP_GEN_ROW_DESCR, description );
88 }
89
90 m_footprintGeneratorsGrid->AutoSizeColumns();
91
92 // Auto-expand the description column
93 int width = m_footprintGeneratorsGrid->GetClientSize().GetWidth()
94 - m_footprintGeneratorsGrid->GetRowLabelSize()
96
97 if ( width > m_footprintGeneratorsGrid->GetColMinimalAcceptableWidth() )
98 m_footprintGeneratorsGrid->SetColSize( FP_GEN_ROW_DESCR, width );
99
100 // Select the first row if it exists
101 m_footprintGeneratorsGrid->ClearSelection();
102
103 if( m_footprintGeneratorsGrid->GetNumberRows() > 0 )
104 m_footprintGeneratorsGrid->SelectRow( 0, false );
105}
106
107
109{
110 int click_row = event.GetRow();
111
113 std::vector<FOOTPRINT_WIZARD*> wizards = manager->Wizards();
114
115 if( click_row >= 0 && click_row < static_cast<int>( wizards.size() ) )
116 m_selectedWizard = wizards[click_row]->Identifier();
117
118 m_footprintGeneratorsGrid->SelectRow( event.GetRow(), false );
119
120 // Move the grid cursor to the active line, mainly for aesthetic reasons:
121 m_footprintGeneratorsGrid->GoToCell( event.GetRow(), FP_GEN_ROW_NAME );
122}
123
124
126{
127 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
128}
129
130
132{
133 return m_selectedWizard;
134}
const char * name
DIALOG_FOOTPRINT_WIZARD_LIST_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Footprint Wizards"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
void OnCellFpGeneratorDoubleClick(wxGridEvent &event) override
void OnCellFpGeneratorClick(wxGridEvent &event) override
wxString m_selectedWizard
The selected footprint wizard identifier.
DIALOG_FOOTPRINT_WIZARD_LIST(FOOTPRINT_WIZARD_FRAME *aParent)
void OptOut(wxWindow *aWindow)
Opt out of control state saving.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
FOOTPRINT_WIZARD_MANAGER * Manager() const
The footprint wizard manager interfaces with API_PLUGINs that can generate footprints.
void ReloadWizards()
Goes through the list of IPC API plugins that provide wizard actions and attempts to refresh the info...
std::vector< FOOTPRINT_WIZARD * > Wizards() const
see class PGM_BASE