KiCad PCB EDA Suite
Loading...
Searching...
No Matches
footprint_edit_frame.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 The 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_EDIT_FRAME_H
21#define FOOTPRINT_EDIT_FRAME_H
22
23#include <pcb_base_frame.h>
24#include <pcb_base_edit_frame.h>
25#include <pcb_io/pcb_io_mgr.h>
26#include <widgets/lib_tree.h>
27#include <footprint_tree_pane.h>
29
31class FP_LIB_TABLE;
35class EDA_LIST_DIALOG;
36
37#ifdef KICAD_IPC_API
40#endif
41
42namespace PCB { struct IFACE; } // A KIFACE coded in pcbnew.cpp
43
44
46{
47public:
49
54 static const wxChar* GetFootprintEditorFrameName();
55
57 BOARD_ITEM_CONTAINER* GetModel() const override;
59
65 bool IsContentModified() const override;
66
67 bool IsCurrentFPFromBoard() const;
68
69 bool CanCloseFPFromBoard( bool doClose );
70
72
76 EDA_ANGLE GetRotationAngle() const override;
77
78 APP_SETTINGS_BASE* config() const override;
79
81
82 const PCB_PLOT_PARAMS& GetPlotSettings() const override;
83 void SetPlotSettings( const PCB_PLOT_PARAMS& aSettings ) override;
84
86
87 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
88 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
89
90 COLOR_SETTINGS* GetColorSettings( bool aForceRefresh = false ) const override;
91
92 std::unique_ptr<GRID_HELPER> MakeGridHelper() override;
93
94 const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;
95
96 bool canCloseWindow( wxCloseEvent& Event ) override;
97 void doCloseWindow() override;
98 void CloseFootprintEditor( wxCommandEvent& Event );
99 void OnExitKiCad( wxCommandEvent& aEvent );
100
106 void SwitchCanvas( EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType ) override;
107
112 void UpdateUserInterface();
113
115 void UpdateMsgPanel() override;
116
120 void HardRedraw() override;
121
130 void ReCreateLayerBox( bool aForceResizeToolbar = true );
131
132 // The Tool Framework initialization, for GAL mode
133 void setupTools();
134
135 void OnSaveFootprintAsPng( wxCommandEvent& event );
136
137 bool IsLibraryTreeShown() const override;
138 void ToggleLibraryTree() override;
139 void FocusLibraryTreeInput() override;
140
141 void ToggleLayersManager();
142
150 bool SaveLibraryAs( const wxString& aLibraryPath );
151
153 void OnEditItemRequest( BOARD_ITEM* aItem ) override;
154
155 void LoadFootprintFromLibrary( LIB_ID aFPID );
156
160 wxObjectDataPtr<LIB_TREE_MODEL_ADAPTER>& GetLibTreeAdapter() { return m_adapter; }
161
168 bool SaveFootprint( FOOTPRINT* aFootprint );
169 bool DuplicateFootprint( FOOTPRINT* aFootprint );
170 bool SaveFootprintAs( FOOTPRINT* aFootprint );
171 bool SaveFootprintToBoard( bool aAddNew );
172 bool SaveFootprintInLibrary( FOOTPRINT* aFootprint, const wxString& aLibraryName );
173 bool RevertFootprint();
174
181 void OnModify() override;
182
189 bool Clear_Pcb( bool doAskAboutUnsavedChanges );
190
192 LIB_ID GetLoadedFPID() const;
193
196 LIB_ID GetTargetFPID() const;
197
198 void ClearModify();
199
203 void ExportFootprint( FOOTPRINT* aFootprint );
204
211 FOOTPRINT* ImportFootprint( const wxString& aName = wxT( "" ) );
212
220 bool LoadFootprintFromBoard( FOOTPRINT* aFootprint );
221
228
232 bool DeleteFootprintFromLibrary( const LIB_ID& aFPID, bool aConfirm );
233
237 COLOR4D GetGridColor() override;
238
240 void SetActiveLayer( PCB_LAYER_ID aLayer ) override;
241
242 void OnDisplayOptionsChanged() override;
243
245 void ActivateGalCanvas() override;
246
256 bool OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl = 0 ) override;
257
262 void AddFootprintToBoard( FOOTPRINT* aFootprint ) override;
263
268 void ReloadFootprint( FOOTPRINT* aFootprint ) override;
269
273 void ShowChangedLanguage() override;
274
278 void CommonSettingsChanged( int aFlags ) override;
279
280 LIB_TREE* GetLibTree() const override
281 {
282 return m_treePane->GetLibTree();
283 }
284
289 void SyncLibraryTree( [[maybe_unused]] bool aProgress );
290
294 void RefreshLibraryTree();
295
299 void UpdateLibraryTree( const wxDataViewItem& treeItem, FOOTPRINT* aFootprint );
300
302 void UpdateView();
303
304 void UpdateTitle();
305
306 void FocusOnLibID( const LIB_ID& aLibID );
307
308 void KiwayMailIn( KIWAY_MAIL_EVENT& mail ) override;
309
310 DECLARE_EVENT_TABLE()
311
312protected:
314 FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
315
319 void resolveCanvasType() override;
320
325 void initLibraryTree();
326
328 void retainLastFootprint();
329
330 void updateEnabledLayers();
331
335 void doReCreateMenuBar() override;
336
340 void editFootprintProperties( FOOTPRINT* aFootprint );
341
342 void setupUIConditions() override;
343
344 void centerItemIdleHandler( wxIdleEvent& aEvent );
345
346protected:
348
349private:
350 friend struct PCB::IFACE;
351
354
356
358
362
363#ifdef KICAD_IPC_API
364 std::unique_ptr<API_HANDLER_FOOTPRINT> m_apiHandler;
365 std::unique_ptr<API_HANDLER_COMMON> m_apiHandlerCommon;
366#endif
367};
368
369#endif // FOOTPRINT_EDIT_FRAME_H
BOX2< VECTOR2I > BOX2I
Definition box2.h:922
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Container for design settings for a BOARD object.
Abstract interface for BOARD_ITEMs capable of storing other items inside.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition board_item.h:84
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:323
Color settings are a bit different than most of the settings objects in that there can be more than o...
A dialog which shows:
void CloseFootprintEditor(wxCommandEvent &Event)
BOARD_DESIGN_SETTINGS & GetDesignSettings() const override
Return the BOARD_DESIGN_SETTINGS for the open project.
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void ActivateGalCanvas() override
Use to start up the GAL drawing canvas.
void editFootprintProperties(FOOTPRINT *aFootprint)
Run the Footprint Properties dialog and handle changes made in it.
void HardRedraw() override
Refresh the library tree and redraw the window.
void UpdateLibraryTree(const wxDataViewItem &treeItem, FOOTPRINT *aFootprint)
Update a single node in the library tree.
static const wxChar * GetFootprintEditorFrameName()
void SyncLibraryTree(bool aProgress)
Synchronize the footprint library tree to the current state of the footprint library table.
bool SaveFootprintInLibrary(FOOTPRINT *aFootprint, const wxString &aLibraryName)
bool SaveLibraryAs(const wxString &aLibraryPath)
Save a library to a new name and/or library type.
void OnSaveFootprintAsPng(wxCommandEvent &event)
bool SaveFootprintAs(FOOTPRINT *aFootprint)
bool DuplicateFootprint(FOOTPRINT *aFootprint)
void FocusLibraryTreeInput() override
BOARD_ITEM_CONTAINER * GetModel() const override
void ReCreateLayerBox(bool aForceResizeToolbar=true)
Re create the layer Box by clearing the old list, and building a new one from the new layers names an...
LIB_TREE * GetLibTree() const override
bool canCloseWindow(wxCloseEvent &Event) override
void UpdateMsgPanel() override
Redraw the message panel.
void ExportFootprint(FOOTPRINT *aFootprint)
Create a file containing only one footprint.
LIB_ID GetTargetFPID() const
Return the LIB_ID of the part selected in the footprint tree, or the loaded part if there is no selec...
LIB_ID GetLoadedFPID() const
Return the LIB_ID of the part being edited.
APP_SETTINGS_BASE * config() const override
Return the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
bool SaveFootprintToBoard(bool aAddNew)
void SetPlotSettings(const PCB_PLOT_PARAMS &aSettings) override
bool SaveFootprint(FOOTPRINT *aFootprint)
Save in an existing library a given footprint.
void initLibraryTree()
Make sure the footprint info list is loaded (with a progress dialog) and then initialize the footprin...
void LoadFootprintFromLibrary(LIB_ID aFPID)
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > & GetLibTreeAdapter()
Return the adapter object that provides the stored data.
FOOTPRINT * ImportFootprint(const wxString &aName=wxT(""))
Read a file containing only one footprint.
std::map< KIID, KIID > m_boardFootprintUuids
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
FOOTPRINT * SelectFootprintFromBoard(BOARD *aPcb)
Display the list of footprints currently existing on the BOARD.
void ShowChangedLanguage() override
Update visible items after a language change.
void resolveCanvasType() override
Determines the Canvas type to load (with prompt if required) and initializes m_canvasType.
void CommonSettingsChanged(int aFlags) override
Called after the preferences dialog is run.
bool IsContentModified() const override
Get if any footprints or libraries have been modified but not saved.
void UpdateUserInterface()
Update the layer manager and other widgets from the board setup (layer and items visibility,...
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > m_adapter
bool IsLibraryTreeShown() const override
FOOTPRINT_EDITOR_SETTINGS * m_editorSettings
void centerItemIdleHandler(wxIdleEvent &aEvent)
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Return bounding box of document with option to not include some items.
bool Clear_Pcb(bool doAskAboutUnsavedChanges)
Delete all and reinitialize the current board.
Definition initpcb.cpp:108
FOOTPRINT_EDIT_FRAME(KIWAY *aKiway, wxWindow *aParent)
protected so only friend PCB::IFACE::CreateWindow() can act as sole factory.
void KiwayMailIn(KIWAY_MAIL_EVENT &mail) override
Receive #KIWAY_ROUTED_EVENT messages from other players.
void OnEditItemRequest(BOARD_ITEM *aItem) override
Install the corresponding dialog editor for the given item.
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
bool CanCloseFPFromBoard(bool doClose)
void SetActiveLayer(PCB_LAYER_ID aLayer) override
void AddFootprintToBoard(FOOTPRINT *aFootprint) override
Override from PCB_BASE_EDIT_FRAME which adds a footprint to the editor's dummy board,...
bool DeleteFootprintFromLibrary(const LIB_ID &aFPID, bool aConfirm)
Delete the given footprint from its library.
void OnModify() override
Must be called after a footprint change in order to set the "modify" flag of the current screen and p...
FOOTPRINT_TREE_PANE * m_treePane
std::unique_ptr< GRID_HELPER > MakeGridHelper() override
void OnDisplayOptionsChanged() override
void doReCreateMenuBar() override
(Re)Create the menubar for the Footprint Editor frame
void FocusOnLibID(const LIB_ID &aLibID)
const PCB_PLOT_PARAMS & GetPlotSettings() const override
Return the PCB_PLOT_PARAMS for the BOARD owned by this frame.
std::unique_ptr< FOOTPRINT > m_originalFootprintCopy
void ReloadFootprint(FOOTPRINT *aFootprint) override
Override from PCB_BASE_FRAME which reloads the footprint from the library without setting the footpri...
EDA_ANGLE GetRotationAngle() const override
Return the angle used for rotate operations.
void RefreshLibraryTree()
Redisplay the library tree.
void OnExitKiCad(wxCommandEvent &aEvent)
bool OpenProjectFiles(const std::vector< wxString > &aFileSet, int aCtl=0) override
Load a KiCad board (.kicad_pcb) from aFileName.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
MAGNETIC_SETTINGS * GetMagneticItemsSettings() override
FOOTPRINT_EDITOR_SETTINGS * GetSettings()
void SwitchCanvas(EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType) override
Switch the currently used canvas (Cairo / OpenGL).
bool LoadFootprintFromBoard(FOOTPRINT *aFootprint)
Load a footprint from the main board into the Footprint Editor.
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Helper to retrieve the current color settings.
Footprint Editor pane with footprint library tree.
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:105
Definition kiid.h:48
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
Definition kiway_mail.h:38
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:315
A logical library item identifier and consists of various portions much like a URI.
Definition lib_id.h:49
Widget displaying a tree of symbols with optional search text control and description panel.
Definition lib_tree.h:50
PCB_BASE_EDIT_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName)
Class to display a pcb layer list in a wxBitmapComboBox.
Parameters and options when plotting/printing a board.
Class to handle modifications to the symbol libraries.
STL class.
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:60
STL namespace.