KiCad PCB EDA Suite
Loading...
Searching...
No Matches
panel_footprint_chooser.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) 2023 CERN
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
#ifndef PANEL_FOOTPRINT_CHOOSER_H
25
#define PANEL_FOOTPRINT_CHOOSER_H
26
27
#include <
widgets/lib_tree.h
>
28
#include <
fp_tree_model_adapter.h
>
29
#include <
widgets/footprint_preview_widget.h
>
30
31
class
wxTimer;
32
class
wxSplitterWindow;
33
class
wxBoxSizer;
34
35
class
PCB_BASE_FRAME
;
36
class
FOOTPRINT
;
37
38
// When a new footprint is selected, a custom event is sent, for instance to update
39
// 3D viewer. So declare a FP_SELECTION_EVENT event
40
wxDECLARE_EVENT
(FP_SELECTION_EVENT, wxCommandEvent);
41
42
class
PANEL_FOOTPRINT_CHOOSER
:
public
wxPanel
43
{
44
public
:
53
PANEL_FOOTPRINT_CHOOSER
(
PCB_BASE_FRAME
* aFrame, wxTopLevelWindow* aParent,
54
const
wxArrayString& aFootprintHistoryList,
55
std::function<
bool
(
LIB_TREE_NODE
& )> aFilter,
56
std::function<
void
()> aAcceptHandler,
57
std::function<
void
()> aEscapeHandler );
58
59
~PANEL_FOOTPRINT_CHOOSER
();
60
61
void
OnChar
( wxKeyEvent& aEvent );
62
63
void
FinishSetup
();
64
65
void
SetPreselect
(
const
LIB_ID
& aPreselect );
66
72
LIB_ID
GetSelectedLibId
()
const
;
73
74
int
GetItemCount
()
const
{
return
m_adapter
->GetItemCount(); }
75
76
wxWindow*
GetFocusTarget
()
const
{
return
m_tree
->GetFocusTarget(); }
77
78
wxSizer*
GetFiltersSizer
()
const
{
return
m_tree
->GetFiltersSizer(); }
79
80
void
Regenerate
() {
m_tree
->Regenerate(
true
); }
81
82
FOOTPRINT_PREVIEW_WIDGET
*
GetViewerPanel
()
const
{
return
m_preview_ctrl
; }
83
84
wxSplitterWindow*
GetVerticalSpliter
()
const
{
return
m_vsplitter
; }
85
86
wxPanel*
GetDetailsPanel
()
const
{
return
m_detailsPanel
; }
87
88
protected
:
89
static
constexpr
int
DblClickDelay
= 100;
// milliseconds
90
91
void
OnDetailsCharHook
( wxKeyEvent& aEvt );
92
void
onCloseTimer
( wxTimerEvent& aEvent );
93
void
onOpenLibsTimer
( wxTimerEvent& aEvent );
94
98
void
onMenuOpen
( wxMenuEvent& aEvent );
99
void
onMenuClose
( wxMenuEvent& aEvent );
100
101
void
onFootprintSelected
( wxCommandEvent& aEvent );
102
109
void
onFootprintChosen
( wxCommandEvent& aEvent );
110
111
public
:
112
wxPanel*
m_RightPanel
;
113
wxBoxSizer*
m_RightPanelSizer
;
114
115
const
FOOTPRINT
*
m_CurrFootprint
;
116
117
protected
:
118
wxPanel*
m_detailsPanel
;
119
wxTimer*
m_dbl_click_timer
;
120
wxTimer*
m_open_libs_timer
;
121
wxSplitterWindow*
m_hsplitter
;
122
wxSplitterWindow*
m_vsplitter
;
123
124
wxObjectDataPtr<LIB_TREE_MODEL_ADAPTER>
m_adapter
;
125
126
FOOTPRINT_PREVIEW_WIDGET
*
m_preview_ctrl
;
127
LIB_TREE
*
m_tree
;
128
HTML_WINDOW
*
m_details
;
129
130
PCB_BASE_FRAME
*
m_frame
;
131
std::function<bool(
LIB_TREE_NODE
& )>
m_filter
;
132
std::function<void()>
m_acceptHandler
;
133
std::function<void()>
m_escapeHandler
;
134
135
std::vector<std::unique_ptr<FOOTPRINT>>
m_historyFootprints
;
136
};
137
138
#endif
/* PANEL_FOOTPRINT_CHOOSER_H */
FOOTPRINT_PREVIEW_WIDGET
Definition
footprint_preview_widget.h:42
FOOTPRINT
Definition
footprint.h:219
HTML_WINDOW
Add dark theme support to wxHtmlWindow.
Definition
html_window.h:35
LIB_ID
A logical library item identifier and consists of various portions much like a URI.
Definition
lib_id.h:49
LIB_TREE_NODE
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
Definition
lib_tree_model.h:75
LIB_TREE
Widget displaying a tree of symbols with optional search text control and description panel.
Definition
lib_tree.h:48
PANEL_FOOTPRINT_CHOOSER::onFootprintSelected
void onFootprintSelected(wxCommandEvent &aEvent)
Definition
panel_footprint_chooser.cpp:331
PANEL_FOOTPRINT_CHOOSER::m_adapter
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > m_adapter
Definition
panel_footprint_chooser.h:124
PANEL_FOOTPRINT_CHOOSER::onCloseTimer
void onCloseTimer(wxTimerEvent &aEvent)
Definition
panel_footprint_chooser.cpp:302
PANEL_FOOTPRINT_CHOOSER::m_acceptHandler
std::function< void()> m_acceptHandler
Definition
panel_footprint_chooser.h:132
PANEL_FOOTPRINT_CHOOSER::GetFiltersSizer
wxSizer * GetFiltersSizer() const
Definition
panel_footprint_chooser.h:78
PANEL_FOOTPRINT_CHOOSER::m_preview_ctrl
FOOTPRINT_PREVIEW_WIDGET * m_preview_ctrl
Definition
panel_footprint_chooser.h:126
PANEL_FOOTPRINT_CHOOSER::m_RightPanelSizer
wxBoxSizer * m_RightPanelSizer
Definition
panel_footprint_chooser.h:113
PANEL_FOOTPRINT_CHOOSER::GetFocusTarget
wxWindow * GetFocusTarget() const
Definition
panel_footprint_chooser.h:76
PANEL_FOOTPRINT_CHOOSER::m_CurrFootprint
const FOOTPRINT * m_CurrFootprint
Definition
panel_footprint_chooser.h:115
PANEL_FOOTPRINT_CHOOSER::OnChar
void OnChar(wxKeyEvent &aEvent)
Definition
panel_footprint_chooser.cpp:218
PANEL_FOOTPRINT_CHOOSER::m_escapeHandler
std::function< void()> m_escapeHandler
Definition
panel_footprint_chooser.h:133
PANEL_FOOTPRINT_CHOOSER::onMenuOpen
void onMenuOpen(wxMenuEvent &aEvent)
Handle parent frame menu events to block tree preview.
Definition
panel_footprint_chooser.cpp:239
PANEL_FOOTPRINT_CHOOSER::GetVerticalSpliter
wxSplitterWindow * GetVerticalSpliter() const
Definition
panel_footprint_chooser.h:84
PANEL_FOOTPRINT_CHOOSER::m_open_libs_timer
wxTimer * m_open_libs_timer
Definition
panel_footprint_chooser.h:120
PANEL_FOOTPRINT_CHOOSER::DblClickDelay
static constexpr int DblClickDelay
Definition
panel_footprint_chooser.h:89
PANEL_FOOTPRINT_CHOOSER::~PANEL_FOOTPRINT_CHOOSER
~PANEL_FOOTPRINT_CHOOSER()
Definition
panel_footprint_chooser.cpp:184
PANEL_FOOTPRINT_CHOOSER::m_filter
std::function< bool(LIB_TREE_NODE &)> m_filter
Definition
panel_footprint_chooser.h:131
PANEL_FOOTPRINT_CHOOSER::OnDetailsCharHook
void OnDetailsCharHook(wxKeyEvent &aEvt)
Definition
panel_footprint_chooser.cpp:376
PANEL_FOOTPRINT_CHOOSER::GetDetailsPanel
wxPanel * GetDetailsPanel() const
Definition
panel_footprint_chooser.h:86
PANEL_FOOTPRINT_CHOOSER::m_details
HTML_WINDOW * m_details
Definition
panel_footprint_chooser.h:128
PANEL_FOOTPRINT_CHOOSER::FinishSetup
void FinishSetup()
Definition
panel_footprint_chooser.cpp:253
PANEL_FOOTPRINT_CHOOSER::m_RightPanel
wxPanel * m_RightPanel
Definition
panel_footprint_chooser.h:112
PANEL_FOOTPRINT_CHOOSER::GetViewerPanel
FOOTPRINT_PREVIEW_WIDGET * GetViewerPanel() const
Definition
panel_footprint_chooser.h:82
PANEL_FOOTPRINT_CHOOSER::m_detailsPanel
wxPanel * m_detailsPanel
Definition
panel_footprint_chooser.h:118
PANEL_FOOTPRINT_CHOOSER::onOpenLibsTimer
void onOpenLibsTimer(wxTimerEvent &aEvent)
Definition
panel_footprint_chooser.cpp:324
PANEL_FOOTPRINT_CHOOSER::m_tree
LIB_TREE * m_tree
Definition
panel_footprint_chooser.h:127
PANEL_FOOTPRINT_CHOOSER::SetPreselect
void SetPreselect(const LIB_ID &aPreselect)
Definition
panel_footprint_chooser.cpp:290
PANEL_FOOTPRINT_CHOOSER::GetItemCount
int GetItemCount() const
Definition
panel_footprint_chooser.h:74
PANEL_FOOTPRINT_CHOOSER::m_frame
PCB_BASE_FRAME * m_frame
Definition
panel_footprint_chooser.h:130
PANEL_FOOTPRINT_CHOOSER::m_vsplitter
wxSplitterWindow * m_vsplitter
Definition
panel_footprint_chooser.h:122
PANEL_FOOTPRINT_CHOOSER::PANEL_FOOTPRINT_CHOOSER
PANEL_FOOTPRINT_CHOOSER(PCB_BASE_FRAME *aFrame, wxTopLevelWindow *aParent, const wxArrayString &aFootprintHistoryList, std::function< bool(LIB_TREE_NODE &)> aFilter, std::function< void()> aAcceptHandler, std::function< void()> aEscapeHandler)
Create dialog to choose component.
Definition
panel_footprint_chooser.cpp:53
PANEL_FOOTPRINT_CHOOSER::m_dbl_click_timer
wxTimer * m_dbl_click_timer
Definition
panel_footprint_chooser.h:119
PANEL_FOOTPRINT_CHOOSER::m_historyFootprints
std::vector< std::unique_ptr< FOOTPRINT > > m_historyFootprints
Definition
panel_footprint_chooser.h:135
PANEL_FOOTPRINT_CHOOSER::onMenuClose
void onMenuClose(wxMenuEvent &aEvent)
Definition
panel_footprint_chooser.cpp:246
PANEL_FOOTPRINT_CHOOSER::Regenerate
void Regenerate()
Definition
panel_footprint_chooser.h:80
PANEL_FOOTPRINT_CHOOSER::onFootprintChosen
void onFootprintChosen(wxCommandEvent &aEvent)
Handle the selection of an item.
Definition
panel_footprint_chooser.cpp:358
PANEL_FOOTPRINT_CHOOSER::m_hsplitter
wxSplitterWindow * m_hsplitter
Definition
panel_footprint_chooser.h:121
PANEL_FOOTPRINT_CHOOSER::GetSelectedLibId
LIB_ID GetSelectedLibId() const
To be called after this dialog returns from ShowModal().
Definition
panel_footprint_chooser.cpp:296
PCB_BASE_FRAME
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
Definition
pcb_base_frame.h:93
footprint_preview_widget.h
fp_tree_model_adapter.h
lib_tree.h
wxDECLARE_EVENT
wxDECLARE_EVENT(FP_SELECTION_EVENT, wxCommandEvent)
src
pcbnew
widgets
panel_footprint_chooser.h
Generated on Sun Feb 1 2026 00:08:35 for KiCad PCB EDA Suite by
1.13.2