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, see <https://www.gnu.org/licenses/>.
19
*/
20
#ifndef PANEL_FOOTPRINT_CHOOSER_H
21
#define PANEL_FOOTPRINT_CHOOSER_H
22
23
#include <wx/toplevel.h>
24
#include <
widgets/lib_tree.h
>
25
#include <
fp_tree_model_adapter.h
>
26
#include <
widgets/footprint_preview_widget.h
>
27
28
class
wxTimer;
29
class
wxSplitterWindow;
30
class
wxBoxSizer;
31
32
class
PCB_BASE_FRAME
;
33
class
FOOTPRINT
;
34
35
// When a new footprint is selected, a custom event is sent, for instance to update
36
// 3D viewer. So declare a FP_SELECTION_EVENT event
37
wxDECLARE_EVENT
(FP_SELECTION_EVENT, wxCommandEvent);
38
39
class
PANEL_FOOTPRINT_CHOOSER
:
public
wxPanel
40
{
41
public
:
50
PANEL_FOOTPRINT_CHOOSER
(
PCB_BASE_FRAME
* aFrame, wxTopLevelWindow* aParent,
51
const
wxArrayString& aFootprintHistoryList,
52
std::function<
bool
(
LIB_TREE_NODE
& )> aFilter,
53
std::function<
void
()> aAcceptHandler,
54
std::function<
void
()> aEscapeHandler );
55
56
~PANEL_FOOTPRINT_CHOOSER
();
57
58
void
OnChar
( wxKeyEvent& aEvent );
59
60
void
FinishSetup
();
61
62
void
SetPreselect
(
const
LIB_ID
& aPreselect );
63
69
LIB_ID
GetSelectedLibId
()
const
;
70
71
int
GetItemCount
()
const
{
return
m_adapter
->GetItemCount(); }
72
73
wxWindow*
GetFocusTarget
()
const
{
return
m_tree
->GetFocusTarget(); }
74
75
wxSizer*
GetFiltersSizer
()
const
{
return
m_tree
->GetFiltersSizer(); }
76
77
void
Regenerate
() {
m_tree
->Regenerate(
true
); }
78
79
FOOTPRINT_PREVIEW_WIDGET
*
GetViewerPanel
()
const
{
return
m_preview_ctrl
; }
80
81
wxSplitterWindow*
GetVerticalSpliter
()
const
{
return
m_vsplitter
; }
82
83
wxPanel*
GetDetailsPanel
()
const
{
return
m_detailsPanel
; }
84
85
protected
:
86
static
constexpr
int
DblClickDelay
= 100;
// milliseconds
87
88
void
OnDetailsCharHook
( wxKeyEvent& aEvt );
89
void
onCloseTimer
( wxTimerEvent& aEvent );
90
void
onOpenLibsTimer
( wxTimerEvent& aEvent );
91
95
void
onMenuOpen
( wxMenuEvent& aEvent );
96
void
onMenuClose
( wxMenuEvent& aEvent );
97
98
void
onFootprintSelected
( wxCommandEvent& aEvent );
99
106
void
onFootprintChosen
( wxCommandEvent& aEvent );
107
108
public
:
109
wxPanel*
m_RightPanel
;
110
wxBoxSizer*
m_RightPanelSizer
;
111
112
const
FOOTPRINT
*
m_CurrFootprint
;
113
114
protected
:
115
wxPanel*
m_detailsPanel
;
116
wxTimer*
m_dbl_click_timer
;
117
wxTimer*
m_open_libs_timer
;
118
wxSplitterWindow*
m_hsplitter
;
119
wxSplitterWindow*
m_vsplitter
;
120
121
wxObjectDataPtr<LIB_TREE_MODEL_ADAPTER>
m_adapter
;
122
123
FOOTPRINT_PREVIEW_WIDGET
*
m_preview_ctrl
;
124
LIB_TREE
*
m_tree
;
125
HTML_WINDOW
*
m_details
;
126
127
PCB_BASE_FRAME
*
m_frame
;
128
std::function<bool(
LIB_TREE_NODE
& )>
m_filter
;
129
std::function<void()>
m_acceptHandler
;
130
std::function<void()>
m_escapeHandler
;
131
132
LIB_ID
m_preselect
;
133
134
std::vector<std::unique_ptr<FOOTPRINT>>
m_historyFootprints
;
135
};
136
137
#endif
/* PANEL_FOOTPRINT_CHOOSER_H */
FOOTPRINT_PREVIEW_WIDGET
Definition
footprint_preview_widget.h:42
FOOTPRINT
Definition
footprint.h:288
HTML_WINDOW
Add dark theme support to wxHtmlWindow.
Definition
html_window.h:31
LIB_ID
A logical library item identifier and consists of various portions much like a URI.
Definition
lib_id.h:45
LIB_TREE_NODE
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
Definition
lib_tree_model.h:76
LIB_TREE
Widget displaying a tree of symbols with optional search text control and description panel.
Definition
lib_tree.h:46
PANEL_FOOTPRINT_CHOOSER::onFootprintSelected
void onFootprintSelected(wxCommandEvent &aEvent)
Definition
panel_footprint_chooser.cpp:341
PANEL_FOOTPRINT_CHOOSER::m_adapter
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > m_adapter
Definition
panel_footprint_chooser.h:121
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:129
PANEL_FOOTPRINT_CHOOSER::GetFiltersSizer
wxSizer * GetFiltersSizer() const
Definition
panel_footprint_chooser.h:75
PANEL_FOOTPRINT_CHOOSER::m_preview_ctrl
FOOTPRINT_PREVIEW_WIDGET * m_preview_ctrl
Definition
panel_footprint_chooser.h:123
PANEL_FOOTPRINT_CHOOSER::m_preselect
LIB_ID m_preselect
Definition
panel_footprint_chooser.h:132
PANEL_FOOTPRINT_CHOOSER::m_RightPanelSizer
wxBoxSizer * m_RightPanelSizer
Definition
panel_footprint_chooser.h:110
PANEL_FOOTPRINT_CHOOSER::GetFocusTarget
wxWindow * GetFocusTarget() const
Definition
panel_footprint_chooser.h:73
PANEL_FOOTPRINT_CHOOSER::m_CurrFootprint
const FOOTPRINT * m_CurrFootprint
Definition
panel_footprint_chooser.h:112
PANEL_FOOTPRINT_CHOOSER::OnChar
void OnChar(wxKeyEvent &aEvent)
Definition
panel_footprint_chooser.cpp:214
PANEL_FOOTPRINT_CHOOSER::m_escapeHandler
std::function< void()> m_escapeHandler
Definition
panel_footprint_chooser.h:130
PANEL_FOOTPRINT_CHOOSER::onMenuOpen
void onMenuOpen(wxMenuEvent &aEvent)
Handle parent frame menu events to block tree preview.
Definition
panel_footprint_chooser.cpp:235
PANEL_FOOTPRINT_CHOOSER::GetVerticalSpliter
wxSplitterWindow * GetVerticalSpliter() const
Definition
panel_footprint_chooser.h:81
PANEL_FOOTPRINT_CHOOSER::m_open_libs_timer
wxTimer * m_open_libs_timer
Definition
panel_footprint_chooser.h:117
PANEL_FOOTPRINT_CHOOSER::DblClickDelay
static constexpr int DblClickDelay
Definition
panel_footprint_chooser.h:86
PANEL_FOOTPRINT_CHOOSER::~PANEL_FOOTPRINT_CHOOSER
~PANEL_FOOTPRINT_CHOOSER()
Definition
panel_footprint_chooser.cpp:180
PANEL_FOOTPRINT_CHOOSER::m_filter
std::function< bool(LIB_TREE_NODE &)> m_filter
Definition
panel_footprint_chooser.h:128
PANEL_FOOTPRINT_CHOOSER::OnDetailsCharHook
void OnDetailsCharHook(wxKeyEvent &aEvt)
Definition
panel_footprint_chooser.cpp:386
PANEL_FOOTPRINT_CHOOSER::GetDetailsPanel
wxPanel * GetDetailsPanel() const
Definition
panel_footprint_chooser.h:83
PANEL_FOOTPRINT_CHOOSER::m_details
HTML_WINDOW * m_details
Definition
panel_footprint_chooser.h:125
PANEL_FOOTPRINT_CHOOSER::FinishSetup
void FinishSetup()
Definition
panel_footprint_chooser.cpp:249
PANEL_FOOTPRINT_CHOOSER::m_RightPanel
wxPanel * m_RightPanel
Definition
panel_footprint_chooser.h:109
PANEL_FOOTPRINT_CHOOSER::GetViewerPanel
FOOTPRINT_PREVIEW_WIDGET * GetViewerPanel() const
Definition
panel_footprint_chooser.h:79
PANEL_FOOTPRINT_CHOOSER::m_detailsPanel
wxPanel * m_detailsPanel
Definition
panel_footprint_chooser.h:115
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:124
PANEL_FOOTPRINT_CHOOSER::SetPreselect
void SetPreselect(const LIB_ID &aPreselect)
Definition
panel_footprint_chooser.cpp:286
PANEL_FOOTPRINT_CHOOSER::GetItemCount
int GetItemCount() const
Definition
panel_footprint_chooser.h:71
PANEL_FOOTPRINT_CHOOSER::m_frame
PCB_BASE_FRAME * m_frame
Definition
panel_footprint_chooser.h:127
PANEL_FOOTPRINT_CHOOSER::m_vsplitter
wxSplitterWindow * m_vsplitter
Definition
panel_footprint_chooser.h:119
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:49
PANEL_FOOTPRINT_CHOOSER::m_dbl_click_timer
wxTimer * m_dbl_click_timer
Definition
panel_footprint_chooser.h:116
PANEL_FOOTPRINT_CHOOSER::m_historyFootprints
std::vector< std::unique_ptr< FOOTPRINT > > m_historyFootprints
Definition
panel_footprint_chooser.h:134
PANEL_FOOTPRINT_CHOOSER::onMenuClose
void onMenuClose(wxMenuEvent &aEvent)
Definition
panel_footprint_chooser.cpp:242
PANEL_FOOTPRINT_CHOOSER::Regenerate
void Regenerate()
Definition
panel_footprint_chooser.h:77
PANEL_FOOTPRINT_CHOOSER::onFootprintChosen
void onFootprintChosen(wxCommandEvent &aEvent)
Handle the selection of an item.
Definition
panel_footprint_chooser.cpp:368
PANEL_FOOTPRINT_CHOOSER::m_hsplitter
wxSplitterWindow * m_hsplitter
Definition
panel_footprint_chooser.h:118
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:90
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 Fri Jun 26 2026 00:05:42 for KiCad PCB EDA Suite by
1.13.2