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
27#include <pcbnew_settings.h>
28#include <pgm_base.h>
30#include <string_utils.h>
31#include <kiface_base.h>
34
36
37
39{
43};
44
45
48{
49 OptOut( this );
50 initLists();
51
54
55 Center();
56}
57
58
60{
61 // Current wizard selection, empty or first
62 m_footprintWizard = NULL;
63
65
66 if( n_wizards )
68
69 // Choose selection mode and insert the needed rows
70
71 m_footprintGeneratorsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
72
73 int curr_row_cnt = m_footprintGeneratorsGrid->GetNumberRows();
74
75 if( curr_row_cnt )
76 m_footprintGeneratorsGrid->DeleteRows( 0, curr_row_cnt );
77
78 if( n_wizards )
79 m_footprintGeneratorsGrid->InsertRows( 0, n_wizards );
80
81 // Put all wizards in the list
82 for( int ii = 0; ii < n_wizards; ii++ )
83 {
84 wxString num = wxString::Format( wxT( "%d" ), ii+1 );
86 wxString name = wizard->GetName();
87 wxString description = wizard->GetDescription();
88
89 m_footprintGeneratorsGrid->SetCellValue( ii, FP_GEN_ROW_NUMBER, num );
91 m_footprintGeneratorsGrid->SetCellValue( ii, FP_GEN_ROW_DESCR, description );
92 }
93
94 m_footprintGeneratorsGrid->AutoSizeColumns();
95
96 // Auto-expand the description column
97 int width = m_footprintGeneratorsGrid->GetClientSize().GetWidth()
98 - m_footprintGeneratorsGrid->GetRowLabelSize()
100
101 if ( width > m_footprintGeneratorsGrid->GetColMinimalAcceptableWidth() )
102 m_footprintGeneratorsGrid->SetColSize( FP_GEN_ROW_DESCR, width );
103
104 // Select the first row if it exists
105 m_footprintGeneratorsGrid->ClearSelection();
106
107 if( m_footprintGeneratorsGrid->GetNumberRows() > 0 )
108 m_footprintGeneratorsGrid->SelectRow( 0, false );
109
110 // Display info about scripts: Search paths
111 wxString message;
113 m_tcSearchPaths->SetValue( message );
114
115 // Display info about scripts: unloadable scripts (due to syntax errors is python source).
117
118 if( message.IsEmpty() )
119 {
120 m_tcNotLoaded->SetValue( _( "All footprint generator scripts were loaded" ) );
121 m_buttonShowTrace->Show( false );
122 }
123 else
124 m_tcNotLoaded->SetValue( message );
125}
126
127
129{
130 FOOTPRINT_WIZARD_FRAME* fpw_frame = static_cast<FOOTPRINT_WIZARD_FRAME*>( GetParent() );
131 fpw_frame->PythonPluginsReload();
132
133 initLists();
134}
135
136
138{
139 int click_row = event.GetRow();
141 m_footprintGeneratorsGrid->SelectRow( event.GetRow(), false );
142
143 // Move the grid cursor to the active line, mainly for aesthetic reasons:
144 m_footprintGeneratorsGrid->GoToCell( event.GetRow(), FP_GEN_ROW_NUMBER );
145}
146
147
149{
150 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
151}
152
153
154void DIALOG_FOOTPRINT_WIZARD_LIST::onShowTrace( wxCommandEvent& event )
155{
156 wxString trace;
158
159 // Now display the filtered trace in our dialog
160 // (a simple wxMessageBox is really not suitable for long messages)
161 DIALOG_FOOTPRINT_WIZARD_LOG logWindow( this );
162 logWindow.m_Message->SetValue( trace );
163 logWindow.ShowModal();
164}
165
166
168{
169 return m_footprintWizard;
170}
const char * name
Definition: DXF_plotter.cpp:62
Class DIALOG_FOOTPRINT_WIZARD_LIST_BASE.
void onShowTrace(wxCommandEvent &event) override
void onUpdatePythonModulesClick(wxCommandEvent &event) override
void OnCellFpGeneratorDoubleClick(wxGridEvent &event) override
void OnCellFpGeneratorClick(wxGridEvent &event) override
FOOTPRINT_WIZARD * m_footprintWizard
The selected python script wizard.
Class DIALOG_FOOTPRINT_WIZARD_LOG.
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...
int ShowModal() override
void PythonPluginsReload()
Reload the Python plugins if they are newer than the already loaded, and load new plugins if any.
static FOOTPRINT_WIZARD * GetWizard(const wxString &aName)
The parent class from where any footprint wizard class must derive.
virtual wxString GetName()=0
virtual wxString GetDescription()=0
#define _(s)
void pcbnewGetUnloadableScriptNames(wxString &aNames)
Collect the list of python scripts which could not be loaded.
void pcbnewGetScriptsSearchPaths(wxString &aNames)
Collect the list of paths where python scripts are searched.
void pcbnewGetWizardsBackTrace(wxString &aTrace)
Return the backtrace of errors (if any) when wizard python scripts are loaded.
see class PGM_BASE