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 /*******************************************************************************
21 * Includes
22 ******************************************************************************/
23 #include "msgoverlappingsymbolpins.h"
24
25 #include "../symbolpin.h"
26
27 #include <algorithm>
28
29 /*******************************************************************************
30 * Namespace
31 ******************************************************************************/
32 namespace librepcb {
33 namespace library {
34
35 /*******************************************************************************
36 * Constructors / Destructor
37 ******************************************************************************/
38
MsgOverlappingSymbolPins(QVector<std::shared_ptr<const SymbolPin>> pins)39 MsgOverlappingSymbolPins::MsgOverlappingSymbolPins(
40 QVector<std::shared_ptr<const SymbolPin>> pins) noexcept
41 : LibraryElementCheckMessage(
42 Severity::Error, buildMessage(pins),
43 tr("There are multiple pins at the same position. This is not allowed "
44 "because you cannot connect wires to these pins in the schematic "
45 "editor.")),
46 mPins(pins) {
47 }
48
~MsgOverlappingSymbolPins()49 MsgOverlappingSymbolPins::~MsgOverlappingSymbolPins() noexcept {
50 }
51
52 /*******************************************************************************
53 * Private Methods
54 ******************************************************************************/
55
buildMessage(const QVector<std::shared_ptr<const SymbolPin>> & pins)56 QString MsgOverlappingSymbolPins::buildMessage(
57 const QVector<std::shared_ptr<const SymbolPin>>& pins) noexcept {
58 QStringList pinNames;
59 foreach (const auto& pin, pins) {
60 pinNames.append("'" % pin->getName() % "'");
61 }
62 std::sort(pinNames.begin(), pinNames.end());
63 return tr("Overlapping pins: %1").arg(pinNames.join(", "));
64 }
65
66 /*******************************************************************************
67 * End of File
68 ******************************************************************************/
69
70 } // namespace library
71 } // namespace librepcb
72