KiCad PCB EDA Suite
footprint_select_widget.h
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) 2017 KiCad Developers, see AUTHORS.txt for contributors.
5  *
6  * This program is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef FOOTPRINT_SELECT_WIDGET_H
21 #define FOOTPRINT_SELECT_WIDGET_H
22 
23 #include <footprint_filter.h>
24 #include <footprint_info.h>
25 #include <vector>
26 #include <wx/panel.h>
27 #include <wx/wx.h>
28 
29 class KIWAY;
30 class PROJECT;
31 class FOOTPRINT_CHOICE;
33 class wxMenu;
34 class wxTimer;
35 class wxTimerEvent;
36 class wxWindow;
37 class wxSimplebook;
38 
43 wxDECLARE_EVENT( EVT_FOOTPRINT_SELECTED, wxCommandEvent );
44 
45 class FOOTPRINT_SELECT_WIDGET : public wxPanel
46 {
47 public:
67  FOOTPRINT_SELECT_WIDGET( wxWindow* aParent, FOOTPRINT_LIST* aFpList,
68  bool aUpdate = true, int aMaxItems = 400 );
69 
71  {
72  }
73 
82  void Load( KIWAY& aKiway, PROJECT& aProject );
83 
87  void ClearFilters();
88 
92  void FilterByPinCount( int aPinCount );
93 
104  void FilterByFootprintFilters( wxArrayString const& aFilters, bool aZeroFilters );
105 
110  void SetDefaultFootprint( wxString const& aFp );
111 
119  bool UpdateList();
120 
124  void SelectDefault();
125 
129  virtual bool Enable( bool aEnable = true ) override;
130 
131 private:
135  wxSizer* m_sizer;
136  wxSimplebook* m_book;
137 
138  bool m_update;
144 
148 
149  void FootprintsLoaded();
150  void OnComboBox( wxCommandEvent& aEvent );
151  void OnComboInteractive( wxCommandEvent& aEvent );
152 
154  wxString ShowPicker();
155 
157  void DoOther();
158 };
159 
160 
161 #endif // FOOTPRINT_SELECT_WIDGET
wxDECLARE_EVENT(EVT_FOOTPRINT_SELECTED, wxCommandEvent)
This event is fired when a footprint is selected.
Class PROJECT holds project specific data.
Definition: project.h:56
void FilterByFootprintFilters(wxArrayString const &aFilters, bool aZeroFilters)
Filter by footprint filter list.
void OnComboInteractive(wxCommandEvent &aEvent)
void DoOther()
Handle activation of the "Other..." item.
FOOTPRINT_SELECT_WIDGET(wxWindow *aParent, FOOTPRINT_LIST *aFpList, bool aUpdate=true, int aMaxItems=400)
Construct a footprint selector widget.
void SetDefaultFootprint(wxString const &aFp)
Set the default footprint for a part.
Customized combo box for footprint selection.
wxString ShowPicker()
Show the component picker and return the selected component. Used by DoOther()
GAUGE_PROGRESS_REPORTER * m_progress_ctrl
void ClearFilters()
Clear all filters.
bool UpdateList()
Update the contents of the list to match the filters.
void OnComboBox(wxCommandEvent &aEvent)
Class KIWAY is a minimalistic software bus for communications between various DLLs/DSOs (DSOs) within...
Definition: kiway.h:258
virtual bool Enable(bool aEnable=true) override
Enable or disable the control for input.
Footprint display filter.
void SelectDefault()
Set current selection to the default footprint.
Holds a list of FOOTPRINT_INFO objects, along with a list of IO_ERRORs or PARSE_ERRORs that were thro...
void Load(KIWAY &aKiway, PROJECT &aProject)
Start loading.
void FilterByPinCount(int aPinCount)
Filter by pin count.