KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pad_tool.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
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
20#pragma once
21
22#include <memory>
23
24#include <tools/pcb_tool_base.h>
25
26class ACTION_MENU;
27class PAD;
29class PCB_SHAPE;
30
31
32class PAD_TOOL : public PCB_TOOL_BASE
33{
34public:
35 PAD_TOOL();
36 ~PAD_TOOL();
37
39 void Reset( RESET_REASON aReason ) override;
40
42 bool Init() override;
43
47 int EnumeratePads( const TOOL_EVENT& aEvent );
48
49 int PadTable( const TOOL_EVENT& aEvent );
50
54 int PlacePad( const TOOL_EVENT& aEvent );
55
59 int EditPad( const TOOL_EVENT& aEvent );
60
61 int OnUndoRedo( const TOOL_EVENT& aEvent );
62
63 bool InPadEditMode() { return m_editPad != niluuid; }
64 void ExitPadEditMode();
65
66 wxString GetLastPadNumber() const { return m_lastPadNumber; }
67 void SetLastPadNumber( const wxString& aPadNumber ) { m_lastPadNumber = aPadNumber; }
68
72 void RecordMasterPad( const PAD& aPad );
73
80 std::vector<PCB_SHAPE*> RecombinePad( PAD* aPad, bool aIsDryRun );
81
82protected:
84 void setTransitions() override;
85
86private:
88 int pastePadProperties( const TOOL_EVENT& aEvent );
89
91 int copyPadSettings( const TOOL_EVENT& aEvent );
92
94 int pushPadSettings( const TOOL_EVENT& aEvent );
95
96 void explodePad( PAD* aPad, BOARD_COMMIT& aCommit );
97
98 void enterPadEditMode();
99
100private:
102
105
107 std::unique_ptr<PAD_MASTER_PROVIDER> m_masterPadProvider;
108
110 std::unique_ptr<PAD> m_bufferPad;
111};
HIGH_CONTRAST_MODE
Determine how inactive layers should be displayed.
Define the structure of a menu based on ACTIONs.
Definition action_menu.h:43
Definition kiid.h:46
void RecordMasterPad(const PAD &aPad)
Record aPad as the template for the next pad of its type placed.
Definition pad_tool.cpp:386
int OnUndoRedo(const TOOL_EVENT &aEvent)
HIGH_CONTRAST_MODE m_previousHighContrastMode
Definition pad_tool.h:103
void setTransitions() override
Bind handlers to corresponding TOOL_ACTIONs.
int EditPad(const TOOL_EVENT &aEvent)
Enter/exit WYSIWYG pad shape editing.
void ExitPadEditMode()
KIID m_editPad
Definition pad_tool.h:104
std::unique_ptr< PAD_MASTER_PROVIDER > m_masterPadProvider
When pads are created this provides the master pad settings.
Definition pad_tool.h:107
int copyPadSettings(const TOOL_EVENT &aEvent)
Copy pad settings from a pad to the tool's buffer pad.
Definition pad_tool.cpp:502
void enterPadEditMode()
int pastePadProperties(const TOOL_EVENT &aEvent)
Apply pad settings from the buffer pad to a pad.
Definition pad_tool.cpp:476
int PlacePad(const TOOL_EVENT &aEvent)
Place a pad in footprint editor.
Definition pad_tool.cpp:920
int EnumeratePads(const TOOL_EVENT &aEvent)
Tool for quick pad enumeration.
Definition pad_tool.cpp:657
void explodePad(PAD *aPad, BOARD_COMMIT &aCommit)
std::unique_ptr< PAD > m_bufferPad
The "buffer" pad that holds the settings applied by "Paste Pad Properties".
Definition pad_tool.h:110
int PadTable(const TOOL_EVENT &aEvent)
bool Init() override
Basic initialization.
Definition pad_tool.cpp:414
void SetLastPadNumber(const wxString &aPadNumber)
Definition pad_tool.h:67
wxString GetLastPadNumber() const
Definition pad_tool.h:66
std::vector< PCB_SHAPE * > RecombinePad(PAD *aPad, bool aIsDryRun)
Recombine an exploded pad (or one produced with overlapping polygons in an older version).
bool InPadEditMode()
Definition pad_tool.h:63
wxString m_lastPadNumber
Definition pad_tool.h:101
int pushPadSettings(const TOOL_EVENT &aEvent)
Push pad settings from a pad to other pads on board or footprint.
Definition pad_tool.cpp:599
Definition pad.h:61
PCB_TOOL_BASE(TOOL_ID aId, const std::string &aName)
Constructor.
RESET_REASON
Determine the reason of reset for a tool.
Definition tool_base.h:74
Generic, UI-independent tool event.
Definition tool_event.h:167
void Reset() override
KIID niluuid(0)