LibrePCB Developers Documentation
Loading...
Searching...
No Matches
boardselectionquery.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_BOARDSELECTIONQUERY_H
21#define LIBREPCB_EDITOR_BOARDSELECTIONQUERY_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include <QtCore>
27
28/*******************************************************************************
29 * Namespace / Forward Declarations
30 ******************************************************************************/
31namespace librepcb {
32
33class BI_Device;
34class BI_Hole;
35class BI_NetLine;
36class BI_NetPoint;
37class BI_NetSegment;
38class BI_Pad;
39class BI_Plane;
40class BI_Polygon;
41class BI_StrokeText;
42class BI_Via;
43class BI_Zone;
44class Uuid;
45
46namespace editor {
47
48class BoardGraphicsScene;
49
50/*******************************************************************************
51 * Class BoardSelectionQuery
52 ******************************************************************************/
53
57class BoardSelectionQuery final : public QObject {
58 Q_OBJECT
59
60public:
61 // Types
63 QSet<BI_Pad*> pads;
64 QSet<BI_Via*> vias;
65 QSet<BI_NetPoint*> netpoints;
66 QSet<BI_NetLine*> netlines;
67 };
68
69 // Constructors / Destructor
73 bool includeLockedItems,
74 QObject* parent = nullptr);
75 ~BoardSelectionQuery() noexcept;
76
77 // Getters
78 const QSet<BI_Device*>& getDeviceInstances() const noexcept {
80 }
81 const QSet<BI_NetPoint*>& getNetPoints() const noexcept {
82 return mResultNetPoints;
83 }
84 const QSet<BI_NetLine*>& getNetLines() const noexcept {
85 return mResultNetLines;
86 }
87 const QSet<BI_Pad*>& getPads() const noexcept { return mResultPads; }
88 const QSet<BI_Via*>& getVias() const noexcept { return mResultVias; }
89 const QSet<BI_Plane*>& getPlanes() const noexcept { return mResultPlanes; }
90 const QSet<BI_Zone*>& getZones() const noexcept { return mResultZones; }
91 const QSet<BI_Polygon*>& getPolygons() const noexcept {
92 return mResultPolygons;
93 }
94 const QSet<BI_StrokeText*>& getStrokeTexts() const noexcept {
95 return mResultStrokeTexts;
96 }
97 const QSet<BI_Hole*>& getHoles() const noexcept { return mResultHoles; }
98
108 QHash<BI_NetSegment*, NetSegmentItems> getNetSegmentItems() const noexcept;
109 int getResultCount() const noexcept;
110 bool isResultEmpty() const noexcept { return (getResultCount() == 0); }
111
112 // General Methods
114 void addSelectedVias() noexcept;
115 void addSelectedBoardPads() noexcept;
116 void addSelectedNetPoints() noexcept;
117 void addSelectedNetLines() noexcept;
118 void addSelectedPlanes() noexcept;
119 void addSelectedZones() noexcept;
120 void addSelectedPolygons() noexcept;
121 void addSelectedBoardStrokeTexts() noexcept;
122 void addSelectedFootprintStrokeTexts() noexcept;
123 void addSelectedHoles() noexcept;
133 void addNetPointsOfNetLines(bool onlyIfAllNetLinesSelected = false) noexcept;
134
135 // Operator Overloadings
136 BoardSelectionQuery& operator=(const BoardSelectionQuery& rhs) = delete;
137
138private: // Data
141
142 // query result
153};
154
155/*******************************************************************************
156 * End of File
157 ******************************************************************************/
158
159} // namespace editor
160} // namespace librepcb
161
162#endif
The BI_Device class.
Definition bi_device.h:57
The BI_Hole class.
Definition bi_hole.h:46
The BI_NetLine class.
Definition bi_netline.h:71
The BI_NetPoint class.
Definition bi_netpoint.h:46
A pad in a board (either standalone or from a footprint)
Definition bi_pad.h:49
The BI_Plane class.
Definition bi_plane.h:52
The BI_Polygon class.
Definition bi_polygon.h:46
The BI_StrokeText class.
Definition bi_stroketext.h:49
The BI_Via class.
Definition bi_via.h:44
The BI_Zone class.
Definition bi_zone.h:46
The BoardGraphicsScene class.
Definition boardgraphicsscene.h:77
The BoardSelectionQuery class.
Definition boardselectionquery.h:57
const QSet< BI_Plane * > & getPlanes() const noexcept
Definition boardselectionquery.h:89
void addSelectedBoardStrokeTexts() noexcept
Definition boardselectionquery.cpp:181
const QSet< BI_Pad * > & getPads() const noexcept
Definition boardselectionquery.h:87
QSet< BI_Pad * > mResultPads
Definition boardselectionquery.h:146
const QSet< BI_NetLine * > & getNetLines() const noexcept
Definition boardselectionquery.h:84
QSet< BI_Hole * > mResultHoles
Definition boardselectionquery.h:152
BoardSelectionQuery(const BoardSelectionQuery &other)=delete
const QSet< BI_NetPoint * > & getNetPoints() const noexcept
Definition boardselectionquery.h:81
QSet< BI_Device * > mResultDeviceInstances
Definition boardselectionquery.h:143
void addSelectedPlanes() noexcept
Definition boardselectionquery.cpp:151
void addSelectedNetPoints() noexcept
Definition boardselectionquery.cpp:133
void addNetPointsOfNetLines(bool onlyIfAllNetLinesSelected=false) noexcept
Add net points of the selected net lines.
Definition boardselectionquery.cpp:211
void addSelectedFootprintStrokeTexts() noexcept
Definition boardselectionquery.cpp:191
bool isResultEmpty() const noexcept
Definition boardselectionquery.h:110
QSet< BI_Zone * > mResultZones
Definition boardselectionquery.h:149
void addSelectedPolygons() noexcept
Definition boardselectionquery.cpp:171
BoardGraphicsScene & mScene
Definition boardselectionquery.h:139
void addSelectedNetLines() noexcept
Definition boardselectionquery.cpp:142
const QSet< BI_Device * > & getDeviceInstances() const noexcept
Definition boardselectionquery.h:78
const QSet< BI_StrokeText * > & getStrokeTexts() const noexcept
Definition boardselectionquery.h:94
QSet< BI_Polygon * > mResultPolygons
Definition boardselectionquery.h:150
const QSet< BI_Polygon * > & getPolygons() const noexcept
Definition boardselectionquery.h:91
QSet< BI_StrokeText * > mResultStrokeTexts
Definition boardselectionquery.h:151
QSet< BI_NetLine * > mResultNetLines
Definition boardselectionquery.h:145
void addSelectedHoles() noexcept
Definition boardselectionquery.cpp:201
const QSet< BI_Hole * > & getHoles() const noexcept
Definition boardselectionquery.h:97
int getResultCount() const noexcept
Definition boardselectionquery.cpp:95
QSet< BI_NetPoint * > mResultNetPoints
Definition boardselectionquery.h:144
QSet< BI_Plane * > mResultPlanes
Definition boardselectionquery.h:148
~BoardSelectionQuery() noexcept
Definition boardselectionquery.cpp:68
QHash< BI_NetSegment *, NetSegmentItems > getNetSegmentItems() const noexcept
Get pads, vias, net points and net lines grouped by net segment.
Definition boardselectionquery.cpp:76
void addDeviceInstancesOfSelectedFootprints() noexcept
Definition boardselectionquery.cpp:106
QSet< BI_Via * > mResultVias
Definition boardselectionquery.h:147
const bool mIncludeLockedItems
Definition boardselectionquery.h:140
void addSelectedBoardPads() noexcept
Definition boardselectionquery.cpp:116
const QSet< BI_Via * > & getVias() const noexcept
Definition boardselectionquery.h:88
const QSet< BI_Zone * > & getZones() const noexcept
Definition boardselectionquery.h:90
void addSelectedZones() noexcept
Definition boardselectionquery.cpp:161
void addSelectedVias() noexcept
Definition boardselectionquery.cpp:125
Definition occmodel.cpp:77
QSet< BI_NetPoint * > netpoints
Definition boardselectionquery.h:65
QSet< BI_Pad * > pads
Definition boardselectionquery.h:63
QSet< BI_NetLine * > netlines
Definition boardselectionquery.h:66
QSet< BI_Via * > vias
Definition boardselectionquery.h:64