LibrePCB Developers Documentation
Loading...
Searching...
No Matches
cmdremoveboarditems.h
Go to the documentation of this file.
1/*
2 * LibrePCB - Professional EDA for everyone!
3 * Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors.
4 * https://librepcb.org/
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (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 <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef LIBREPCB_EDITOR_CMDREMOVEBOARDITEMS_H
21#define LIBREPCB_EDITOR_CMDREMOVEBOARDITEMS_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "../../undocommandgroup.h"
27
28#include <QtCore>
29
30/*******************************************************************************
31 * Namespace / Forward Declarations
32 ******************************************************************************/
33namespace librepcb {
34
35class BI_Device;
36class BI_Hole;
37class BI_NetLine;
38class BI_NetPoint;
39class BI_NetSegment;
40class BI_Pad;
41class BI_Plane;
42class BI_Polygon;
43class BI_StrokeText;
44class BI_Via;
45class BI_Zone;
46class Board;
47
48namespace editor {
49
50/*******************************************************************************
51 * Class CmdRemoveBoardItems
52 ******************************************************************************/
53
58private:
59 // Private Types
61 QSet<BI_Pad*> pads;
62 QSet<BI_Via*> vias;
63 QSet<BI_NetPoint*> netpoints;
64 QSet<BI_NetLine*> netlines;
65 QSet<BI_Pad*> padsToDisconnect;
66 };
67 typedef QHash<BI_NetSegment*, NetSegmentItems> NetSegmentItemList;
68
69public:
70 // Constructors / Destructor
73 explicit CmdRemoveBoardItems(Board& board) noexcept;
74 ~CmdRemoveBoardItems() noexcept;
75
76 // Set items to remove
77 void removeDeviceInstances(const QSet<BI_Device*>& set) {
78 Q_ASSERT(!wasEverExecuted());
79 mDeviceInstances += set;
80 }
81 void removeNetSegments(const QSet<BI_NetSegment*>& set) {
82 Q_ASSERT(!wasEverExecuted());
83 mNetSegments += set;
84 }
85 void removeBoardPads(const QSet<BI_Pad*>& set) {
86 Q_ASSERT(!wasEverExecuted());
87 mPads += set;
88 }
89 void removeVias(const QSet<BI_Via*>& set) {
90 Q_ASSERT(!wasEverExecuted());
91 mVias += set;
92 }
93 void removeNetPoints(const QSet<BI_NetPoint*>& set) {
94 Q_ASSERT(!wasEverExecuted());
95 mNetPoints += set;
96 }
97 void removeNetLines(const QSet<BI_NetLine*>& set) {
98 Q_ASSERT(!wasEverExecuted());
99 mNetLines += set;
100 }
101 void removePlanes(const QSet<BI_Plane*>& set) {
102 Q_ASSERT(!wasEverExecuted());
103 mPlanes += set;
104 }
105 void removeZones(const QSet<BI_Zone*>& set) {
106 Q_ASSERT(!wasEverExecuted());
107 mZones += set;
108 }
109 void removePolygons(const QSet<BI_Polygon*>& set) {
110 Q_ASSERT(!wasEverExecuted());
111 mPolygons += set;
112 }
113 void removeStrokeTexts(const QSet<BI_StrokeText*>& set) {
114 Q_ASSERT(!wasEverExecuted());
115 mStrokeTexts += set;
116 }
117 void removeHoles(const QSet<BI_Hole*>& set) {
118 Q_ASSERT(!wasEverExecuted());
119 mHoles += set;
120 }
121
122 // Output
123 const QList<BI_NetSegment*>& getModifiedNetSegments() const noexcept {
125 }
126
127 // Operator Overloadings
129
130private: // Methods
132 bool performExecute() override;
133
134 void removeNetSegmentItems(BI_NetSegment& netsegment,
135 const QSet<BI_Pad*>& padsToDisconnect,
136 const QSet<BI_Pad*>& padsToRemove,
137 const QSet<BI_Via*>& viasToRemove,
138 const QSet<BI_NetPoint*>& netpointsToRemove,
139 const QSet<BI_NetLine*>& netlinesToRemove);
140
141private: // Data
143
144 // Items to remove
145 QSet<BI_Device*> mDeviceInstances;
146 QSet<BI_NetSegment*> mNetSegments;
147 QSet<BI_Pad*> mPads;
148 QSet<BI_Via*> mVias;
149 QSet<BI_NetPoint*> mNetPoints;
150 QSet<BI_NetLine*> mNetLines;
151 QSet<BI_Plane*> mPlanes;
152 QSet<BI_Zone*> mZones;
153 QSet<BI_Polygon*> mPolygons;
154 QSet<BI_StrokeText*> mStrokeTexts;
155 QSet<BI_Hole*> mHoles;
156
157 // Output
158 QList<BI_NetSegment*> mModifiedNetSegments;
159};
160
161/*******************************************************************************
162 * End of File
163 ******************************************************************************/
164
165} // namespace editor
166} // namespace librepcb
167
168#endif
The BI_Device class.
Definition bi_device.h:57
The BI_NetSegment class.
Definition bi_netsegment.h:53
The Board class represents a PCB of a project and is always part of a circuit.
Definition board.h:74
The CmdRemoveBoardItems class.
Definition cmdremoveboarditems.h:57
QSet< BI_Plane * > mPlanes
Definition cmdremoveboarditems.h:151
QSet< BI_NetPoint * > mNetPoints
Definition cmdremoveboarditems.h:149
void removeZones(const QSet< BI_Zone * > &set)
Definition cmdremoveboarditems.h:105
QSet< BI_Zone * > mZones
Definition cmdremoveboarditems.h:152
QSet< BI_Polygon * > mPolygons
Definition cmdremoveboarditems.h:153
QSet< BI_StrokeText * > mStrokeTexts
Definition cmdremoveboarditems.h:154
void removeDeviceInstances(const QSet< BI_Device * > &set)
Definition cmdremoveboarditems.h:77
QSet< BI_Pad * > mPads
Definition cmdremoveboarditems.h:147
void removeVias(const QSet< BI_Via * > &set)
Definition cmdremoveboarditems.h:89
void removeNetSegmentItems(BI_NetSegment &netsegment, const QSet< BI_Pad * > &padsToDisconnect, const QSet< BI_Pad * > &padsToRemove, const QSet< BI_Via * > &viasToRemove, const QSet< BI_NetPoint * > &netpointsToRemove, const QSet< BI_NetLine * > &netlinesToRemove)
Definition cmdremoveboarditems.cpp:176
Board & mBoard
Definition cmdremoveboarditems.h:142
void removeStrokeTexts(const QSet< BI_StrokeText * > &set)
Definition cmdremoveboarditems.h:113
CmdRemoveBoardItems(const CmdRemoveBoardItems &other)=delete
void removeBoardPads(const QSet< BI_Pad * > &set)
Definition cmdremoveboarditems.h:85
QSet< BI_Via * > mVias
Definition cmdremoveboarditems.h:148
void removeNetPoints(const QSet< BI_NetPoint * > &set)
Definition cmdremoveboarditems.h:93
void removePolygons(const QSet< BI_Polygon * > &set)
Definition cmdremoveboarditems.h:109
QSet< BI_Device * > mDeviceInstances
Definition cmdremoveboarditems.h:145
CmdRemoveBoardItems & operator=(const CmdRemoveBoardItems &other)=delete
QSet< BI_NetSegment * > mNetSegments
Definition cmdremoveboarditems.h:146
void removeHoles(const QSet< BI_Hole * > &set)
Definition cmdremoveboarditems.h:117
bool performExecute() override
Execute the command the first time.
Definition cmdremoveboarditems.cpp:74
QHash< BI_NetSegment *, NetSegmentItems > NetSegmentItemList
Definition cmdremoveboarditems.h:67
QSet< BI_Hole * > mHoles
Definition cmdremoveboarditems.h:155
QSet< BI_NetLine * > mNetLines
Definition cmdremoveboarditems.h:150
void removePlanes(const QSet< BI_Plane * > &set)
Definition cmdremoveboarditems.h:101
~CmdRemoveBoardItems() noexcept
Definition cmdremoveboarditems.cpp:67
void removeNetLines(const QSet< BI_NetLine * > &set)
Definition cmdremoveboarditems.h:97
const QList< BI_NetSegment * > & getModifiedNetSegments() const noexcept
Definition cmdremoveboarditems.h:123
void removeNetSegments(const QSet< BI_NetSegment * > &set)
Definition cmdremoveboarditems.h:81
QList< BI_NetSegment * > mModifiedNetSegments
Definition cmdremoveboarditems.h:158
The UndoCommandGroup class makes it possible to pack multiple undo commands together (it acts as a pa...
Definition undocommandgroup.h:44
bool wasEverExecuted() const noexcept
This method shows whether that command was ever executed (execute() called successfully)
Definition undocommand.h:63
Definition occmodel.cpp:77
QSet< BI_NetPoint * > netpoints
Definition cmdremoveboarditems.h:63
QSet< BI_Pad * > pads
Definition cmdremoveboarditems.h:61
QSet< BI_Pad * > padsToDisconnect
Definition cmdremoveboarditems.h:65
QSet< BI_NetLine * > netlines
Definition cmdremoveboarditems.h:64
QSet< BI_Via * > vias
Definition cmdremoveboarditems.h:62