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, see <https://www.gnu.org/licenses/>.
19 */
20
21#include <wx/grid.h>
22
24#include <pgm_base.h>
25#include <string_utils.h>
26#include <kiface_base.h>
29
30
36
37
49
50
55
56
58{
59 m_selectedWizard = wxEmptyString;
60 m_footprintGeneratorsGrid->ClearGrid();
61
63
64 manager->ReloadWizards();
65 std::vector<FOOTPRINT_WIZARD*> wizards = manager->Wizards();
66
67 m_footprintGeneratorsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
68
69 if( !wizards.empty() )
70 {
71 m_selectedWizard = wizards[0]->Identifier();
72 m_footprintGeneratorsGrid->InsertRows( 0, wizards.size() );
73 }
74
75 int idx = 0;
76
77 for( FOOTPRINT_WIZARD* wizard : wizards )
78 {
79 wxString name = wizard->Info().meta.name;
80 wxString description = wizard->Info().meta.description;
81
82 m_footprintGeneratorsGrid->SetCellValue( idx, FP_GEN_ROW_NAME, name );
83 m_footprintGeneratorsGrid->SetCellValue( idx++, FP_GEN_ROW_DESCR, description );
84 }
85
86 m_footprintGeneratorsGrid->AutoSizeColumns();
87
88 // Auto-expand the description column
89 int width = m_footprintGeneratorsGrid->GetClientSize().GetWidth()
90 - m_footprintGeneratorsGrid->GetRowLabelSize()
92
93 if ( width > m_footprintGeneratorsGrid->GetColMinimalAcceptableWidth() )
94 m_footprintGeneratorsGrid->SetColSize( FP_GEN_ROW_DESCR, width );
95
96 // Select the first row if it exists
97 m_footprintGeneratorsGrid->ClearSelection();
98
99 if( m_footprintGeneratorsGrid->GetNumberRows() > 0 )
100 m_footprintGeneratorsGrid->SelectRow( 0, false );
101}
102
103
105{
106 int click_row = event.GetRow();
107
109 std::vector<FOOTPRINT_WIZARD*> wizards = manager->Wizards();
110
111 if( click_row >= 0 && click_row < static_cast<int>( wizards.size() ) )
112 m_selectedWizard = wizards[click_row]->Identifier();
113
114 m_footprintGeneratorsGrid->SelectRow( event.GetRow(), false );
115
116 // Move the grid cursor to the active line, mainly for aesthetic reasons:
117 m_footprintGeneratorsGrid->GoToCell( event.GetRow(), FP_GEN_ROW_NAME );
118}
119
120
122{
123 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
124}
125
126
128{
129 return m_selectedWizard;
130}
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