KiCad PCB EDA Suite
Loading...
Searching...
No Matches
drc_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, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#ifndef DRC_TOOL_H
25#define DRC_TOOL_H
26
27#include <board_commit.h>
28#include <board.h>
29#include <pcb_marker.h>
30#include <geometry/seg.h>
32#include <memory>
33#include <vector>
34#include <tools/pcb_tool_base.h>
35
36
37class PCB_EDIT_FRAME;
38class DIALOG_DRC;
40class DRC_ITEM;
42class DRC_ENGINE;
43
44
45class DRC_TOOL : public PCB_TOOL_BASE
46{
47public:
48 DRC_TOOL();
49 ~DRC_TOOL();
50
52 void Reset( RESET_REASON aReason ) override;
53
60 void ShowDRCDialog( wxWindow* aParent );
61
62 int ShowDRCDialog( const TOOL_EVENT& aEvent );
63
65
69 bool IsDRCDialogShown();
70
74 bool IsDRCRunning() const { return m_drcRunning; }
75
79 void DestroyDRCDialog();
80
81 void ShowDesignRuleEditorDialog( wxWindow* aParent );
82
83 int ShowDesignRuleEditorDialog( const TOOL_EVENT& aEvent );
84
86
87 std::shared_ptr<DRC_ENGINE> GetDRCEngine() { return m_drcEngine; }
88
92 void RunTests( PROGRESS_REPORTER* aProgressReporter, bool aRefillZones,
93 bool aReportAllTrackErrors, bool aTestFootprints );
94
95 int PrevMarker( const TOOL_EVENT& aEvent );
96 int NextMarker( const TOOL_EVENT& aEvent );
97 int CrossProbe( const TOOL_EVENT& aEvent );
98
103 void CrossProbe( const PCB_MARKER* aMarker );
104
105 int ExcludeMarker( const TOOL_EVENT& aEvent );
106
107 wxString FixDRCErrorMenuText( const std::shared_ptr<RC_ITEM>& aDRCItem );
108 void FixDRCError( const std::shared_ptr<RC_ITEM>& aDRCItem );
109
110private:
112 void setTransitions() override;
113
117 void updatePointers( bool aDRCWasCancelled );
118
119 EDA_UNITS userUnits() const { return m_editFrame->GetUserUnits(); }
120
121private:
127 std::shared_ptr<DRC_ENGINE> m_drcEngine;
128};
129
130
131#endif // DRC_TOOL_H
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:322
Design Rule Checker object that performs all the DRC tests.
Definition drc_engine.h:133
EDA_UNITS userUnits() const
Definition drc_tool.h:119
void updatePointers(bool aDRCWasCancelled)
Update needed pointers from the one pointer which is known not to change.
Definition drc_tool.cpp:218
void ShowDRCDialog(wxWindow *aParent)
Opens the DRC dialog.
Definition drc_tool.cpp:75
void FixDRCError(const std::shared_ptr< RC_ITEM > &aDRCItem)
Definition drc_tool.cpp:353
int NextMarker(const TOOL_EVENT &aEvent)
Definition drc_tool.cpp:247
wxString FixDRCErrorMenuText(const std::shared_ptr< RC_ITEM > &aDRCItem)
Definition drc_tool.cpp:297
void DestroyDRCDialog()
Close and free the DRC dialog.
Definition drc_tool.cpp:126
std::shared_ptr< DRC_ENGINE > GetDRCEngine()
Definition drc_tool.h:87
DIALOG_DRC * m_drcDialog
Definition drc_tool.h:124
PCB_EDIT_FRAME * m_editFrame
Definition drc_tool.h:122
DIALOG_DRC * GetDRCDialog()
Definition drc_tool.h:64
void DestroyDesignRuleEditorDialog()
Definition drc_tool.cpp:443
bool IsDRCDialogShown()
Check to see if the DRC_TOOL dialog is currently shown.
Definition drc_tool.cpp:117
int CrossProbe(const TOOL_EVENT &aEvent)
Definition drc_tool.cpp:264
bool IsDRCRunning() const
Check to see if the DRC engine is running the tests.
Definition drc_tool.h:74
int ExcludeMarker(const TOOL_EVENT &aEvent)
Definition drc_tool.cpp:288
void setTransitions() override
< Set up handlers for various events.
Definition drc_tool.cpp:453
BOARD * m_pcb
Definition drc_tool.h:123
int PrevMarker(const TOOL_EVENT &aEvent)
Definition drc_tool.cpp:230
bool m_drcRunning
Definition drc_tool.h:126
DIALOG_DRC_RULE_EDITOR * m_designRuleEditorDlg
Definition drc_tool.h:125
void RunTests(PROGRESS_REPORTER *aProgressReporter, bool aRefillZones, bool aReportAllTrackErrors, bool aTestFootprints)
Run the DRC tests.
Definition drc_tool.cpp:136
std::shared_ptr< DRC_ENGINE > m_drcEngine
Definition drc_tool.h:127
void ShowDesignRuleEditorDialog(wxWindow *aParent)
Definition drc_tool.cpp:401
The main frame for Pcbnew.
PCB_TOOL_BASE(TOOL_ID aId, const std::string &aName)
Constructor.
A progress reporter interface for use in multi-threaded environments.
RESET_REASON
Determine the reason of reset for a tool.
Definition tool_base.h:78
Generic, UI-independent tool event.
Definition tool_event.h:171
Multi-thread safe progress reporter dialog, intended for use of tasks that parallel reporting back of...
EDA_UNITS
Definition eda_units.h:48
void Reset() override