KiCad PCB EDA Suite
Loading...
Searching...
No Matches
dialog_footprint_fields_table.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 Oliver Walters
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
21#pragma once
22
23#include <set>
24#include <vector>
25
28#include <board.h>
30
31wxDECLARE_EVENT( EDA_EVT_CLOSE_DIALOG_FOOTPRINT_FIELDS_TABLE, wxCommandEvent );
32
33class PCBNEW_SETTINGS;
34class PCB_EDIT_FRAME;
35class JOB_EXPORT_BOM;
36class TEMPLATES;
37
38
40{
41public:
44
45 bool TransferDataToWindow() override;
46 bool TransferDataFromWindow() override;
47
48private:
49 wxGridCellEditor* createDatasheetEditor() override;
50
53
58 void LoadFieldNames();
59
60 void OnTableSelectionChanged( const std::set<int>& aRows ) override;
61
62 void OnScope( wxCommandEvent& aEvent ) override;
63 void OnMenu( wxCommandEvent& aEvent ) override;
64
65 void OnSaveAndContinue( wxCommandEvent& aEvent ) override;
66 void OnCancel( wxCommandEvent& aEvent ) override;
67 void OnOk( wxCommandEvent& aEvent ) override;
68 void OnClose( wxCloseEvent& aEvent ) override;
69
70 // Board listener event handlers
71 void OnBoardItemsAdded( BOARD& aPcb, std::vector<BOARD_ITEM*>& aPcbItem ) override;
72 void OnBoardItemsRemoved( BOARD& aPcb, std::vector<BOARD_ITEM*>& aPcbItem ) override;
73 void OnBoardItemsChanged( BOARD& aPcb, std::vector<BOARD_ITEM*>& aPcbItem ) override;
74
75 void OnBoardItemAdded( BOARD& aPcb, BOARD_ITEM* aPcbItem ) override
76 {
77 std::vector<BOARD_ITEM*> items{ aPcbItem };
78 OnBoardItemsAdded( aPcb, items );
79 }
80
81 void OnBoardItemRemoved( BOARD& aPcb, BOARD_ITEM* aPcbItem ) override
82 {
83 std::vector<BOARD_ITEM*> items{ aPcbItem };
84 OnBoardItemsRemoved( aPcb, items );
85 }
86
87 void OnBoardItemChanged( BOARD& aPcb, BOARD_ITEM* aPcbItem ) override
88 {
89 std::vector<BOARD_ITEM*> items{ aPcbItem };
90 OnBoardItemsChanged( aPcb, items );
91 }
92
93 void OnBoardCompositeUpdate( BOARD& aPcb, std::vector<BOARD_ITEM*>& aAdded,
94 std::vector<BOARD_ITEM*>& aRemoved,
95 std::vector<BOARD_ITEM*>& aChanged ) override
96 {
97 // Be careful here because footprint exchanging will give a footprint
98 // the same UUID but a different pointer. Remove first so we get
99 // rid of the old footprint/pointer from the data model and the fp ref list
100 // before we add the new-same-UUID footprint.
101 if( !aRemoved.empty() )
102 OnBoardItemsRemoved( aPcb, aRemoved );
103
104 if( !aAdded.empty() )
105 OnBoardItemsAdded( aPcb, aAdded );
106
107 if( !aChanged.empty() )
108 OnBoardItemsChanged( aPcb, aChanged );
109 }
110
111 void OnCurrentSchematicSheetChanged( wxCommandEvent& aEvent );
112 void OnBoardSelectionChanged( BOARD& aPcb ) override;
113
115 void rebuildRowsPreservingSelection( const std::set<KIID_PATH>& aSavedSelection );
116
118
119private:
120 void onAddVariant( wxCommandEvent& aEvent ) override;
121 void onDeleteVariant( wxCommandEvent& aEvent ) override;
122 void onRenameVariant( wxCommandEvent& aEvent ) override;
123 void onCopyVariant( wxCommandEvent& aEvent ) override;
124 void onEditVariantDescription( wxCommandEvent& aEvent ) override;
125 void onVariantSelectionChange( wxCommandEvent& aEvent ) override;
126
128
129 wxString resolveVariant() const override;
130 bool resolveTextVar( wxString* aToken ) const override;
131
132private:
134
137
139
140 bool m_aborted = false;
141
142public:
143 bool WasAborted() const { return m_aborted; }
144};
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:409
DIALOG_FIELDS_TABLE(wxWindow *aParent, FIELDS_TABLE_SETTINGS &aPanelSettings, FIELDS_TABLE_BOM_SETTINGS &aBomSettings, JOB_EXPORT_BOM *aJob)
bool resolveTextVar(wxString *aToken) const override
void OnBoardItemChanged(BOARD &aPcb, BOARD_ITEM *aPcbItem) override
void onAddVariant(wxCommandEvent &aEvent) override
void OnClose(wxCloseEvent &aEvent) override
void OnSaveAndContinue(wxCommandEvent &aEvent) override
void setScope(FOOTPRINT_FIELDS_EDITOR_GRID_DATA_MODEL::SCOPE aScope)
void OnBoardItemRemoved(BOARD &aPcb, BOARD_ITEM *aPcbItem) override
DIALOG_FOOTPRINT_FIELDS_TABLE(PCB_EDIT_FRAME *aParent, JOB_EXPORT_BOM *aJob=nullptr)
void OnTableSelectionChanged(const std::set< int > &aRows) override
void OnCancel(wxCommandEvent &aEvent) override
void OnMenu(wxCommandEvent &aEvent) override
void onRenameVariant(wxCommandEvent &aEvent) override
void OnBoardItemsAdded(BOARD &aPcb, std::vector< BOARD_ITEM * > &aPcbItem) override
void OnOk(wxCommandEvent &aEvent) override
void OnBoardCompositeUpdate(BOARD &aPcb, std::vector< BOARD_ITEM * > &aAdded, std::vector< BOARD_ITEM * > &aRemoved, std::vector< BOARD_ITEM * > &aChanged) override
void onDeleteVariant(wxCommandEvent &aEvent) override
void OnBoardItemsRemoved(BOARD &aPcb, std::vector< BOARD_ITEM * > &aPcbItem) override
void OnBoardSelectionChanged(BOARD &aPcb) override
FOOTPRINT_FIELDS_EDITOR_GRID_DATA_MODEL * m_dataModel
void onCopyVariant(wxCommandEvent &aEvent) override
void OnBoardItemsChanged(BOARD &aPcb, std::vector< BOARD_ITEM * > &aPcbItem) override
void OnBoardItemAdded(BOARD &aPcb, BOARD_ITEM *aPcbItem) override
FIELDS_TABLE_DATA_MODEL_BASE * getDataModel() const override
void LoadFieldNames()
Construct the rows of m_fieldsCtrl and the columns of m_dataModel from a union of all field names in ...
void onVariantSelectionChange(wxCommandEvent &aEvent) override
void onEditVariantDescription(wxCommandEvent &aEvent) override
void OnCurrentSchematicSheetChanged(wxCommandEvent &aEvent)
void OnScope(wxCommandEvent &aEvent) override
wxGridCellEditor * createDatasheetEditor() override
Contains everything completly generic to fields tables data models, as well as column functionality t...
The main frame for Pcbnew.
wxDECLARE_EVENT(EDA_EVT_CLOSE_DIALOG_FOOTPRINT_FIELDS_TABLE, wxCommandEvent)
std::vector< FOOTPRINT_REF > FOOTPRINT_REFERENCE_LIST