LibrePCB Developers Documentation
Loading...
Searching...
No Matches
devicepinoutbuilder.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_DEVICEPINOUTBUILDER_H
21#define LIBREPCB_EDITOR_DEVICEPINOUTBUILDER_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "appwindow.h"
27
31
32#include <QtCore>
33
34/*******************************************************************************
35 * Namespace / Forward Declarations
36 ******************************************************************************/
37namespace librepcb {
38namespace editor {
39
40class UndoStack;
41
42/*******************************************************************************
43 * Class DevicePinoutBuilder
44 ******************************************************************************/
45
49class DevicePinoutBuilder final : public QObject {
50 Q_OBJECT
51
52public:
53 // Constructors / Destructor
57 QObject* parent = nullptr) noexcept;
58 ~DevicePinoutBuilder() noexcept;
59
60 // General Methods
61 void setPads(const PackagePadList& list) noexcept;
62 void setSignals(const ComponentSignalList& list) noexcept;
63
64 // State Query
65 bool hasUnconnectedPadsAndSignals() const noexcept;
66 bool hasAutoConnectablePads() const noexcept;
67 bool areAllPadsUnconnected() const noexcept;
68
69 // One-Shot Actions
70 void resetAll() noexcept;
71 void autoConnect() noexcept;
72 void loadFromFile() noexcept;
73
74 // Interactive Mode
75 void startInteractiveMode() noexcept;
76 void commitInteractiveMode() noexcept;
77 void exitInteractiveMode() noexcept;
78 int getCurrentPadNumber() const noexcept { return mCurrentPadIndex + 1; }
79 QString getCurrentPadName() const noexcept;
80 const QString& getSignalsFilter() const noexcept { return mSignalsFilter; }
81 void setSignalsFilter(const QString& filter) noexcept;
82 const auto& getFilteredSignals() noexcept { return mFilteredSignalsModel; }
83 int getCurrentSignalIndex() const noexcept { return mCurrentSignalIndex; }
84 void setCurrentSignalIndex(int index) noexcept;
85
86 // Operator Overloadings
88
89private:
90 void loadNextPad() noexcept;
91 bool commitCurrentPad() noexcept;
92 void updateFilteredSignals() noexcept;
93 QMap<Uuid, Uuid> getMap() const noexcept;
94 void setMap(const QString& cmdText, const QMap<Uuid, Uuid>& map);
95 bool askForResetFirst() noexcept;
96
97private:
98 typedef std::pair<std::shared_ptr<const ComponentSignal>, bool> SignalChoice;
99
100 // References
105
106 // Interactive mode state
107 int mCurrentPadIndex; // -1 = not in interactive mode
110 std::shared_ptr<slint::VectorModel<ui::DeviceInteractivePinoutSignalData>>
113};
114
115/*******************************************************************************
116 * End of File
117 ******************************************************************************/
118
119} // namespace editor
120} // namespace librepcb
121
122#endif
The ComponentSignal class represents one signal of a component.
Definition componentsignal.h:45
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
The DevicePinoutBuilder class.
Definition devicepinoutbuilder.h:49
void autoConnect() noexcept
Definition devicepinoutbuilder.cpp:140
DevicePadSignalMap & mList
Definition devicepinoutbuilder.h:101
PackagePadList mPadsSorted
Definition devicepinoutbuilder.h:103
void setCurrentSignalIndex(int index) noexcept
Definition devicepinoutbuilder.cpp:265
ComponentSignalList mSignals
Definition devicepinoutbuilder.h:104
const QString & getSignalsFilter() const noexcept
Definition devicepinoutbuilder.h:80
bool askForResetFirst() noexcept
Definition devicepinoutbuilder.cpp:441
bool hasUnconnectedPadsAndSignals() const noexcept
Definition devicepinoutbuilder.cpp:89
int getCurrentSignalIndex() const noexcept
Definition devicepinoutbuilder.h:83
QMap< Uuid, Uuid > getMap() const noexcept
Definition devicepinoutbuilder.cpp:414
void setMap(const QString &cmdText, const QMap< Uuid, Uuid > &map)
Definition devicepinoutbuilder.cpp:424
bool areAllPadsUnconnected() const noexcept
Definition devicepinoutbuilder.cpp:122
void setSignalsFilter(const QString &filter) noexcept
Definition devicepinoutbuilder.cpp:258
void loadNextPad() noexcept
Definition devicepinoutbuilder.cpp:290
std::pair< std::shared_ptr< const ComponentSignal >, bool > SignalChoice
Definition devicepinoutbuilder.h:98
DevicePinoutBuilder & operator=(const DevicePinoutBuilder &rhs)=delete
void updateFilteredSignals() noexcept
Definition devicepinoutbuilder.cpp:336
const auto & getFilteredSignals() noexcept
Definition devicepinoutbuilder.h:82
std::shared_ptr< slint::VectorModel< ui::DeviceInteractivePinoutSignalData > > mFilteredSignalsModel
Definition devicepinoutbuilder.h:111
void setSignals(const ComponentSignalList &list) noexcept
Definition devicepinoutbuilder.cpp:84
QString getCurrentPadName() const noexcept
Definition devicepinoutbuilder.cpp:250
UndoStack & mUndoStack
Definition devicepinoutbuilder.h:102
QString mSignalsFilter
Definition devicepinoutbuilder.h:108
QVector< SignalChoice > mFilteredSignals
Definition devicepinoutbuilder.h:109
bool hasAutoConnectablePads() const noexcept
Definition devicepinoutbuilder.cpp:102
int mCurrentSignalIndex
Definition devicepinoutbuilder.h:112
void resetAll() noexcept
Definition devicepinoutbuilder.cpp:131
void loadFromFile() noexcept
Definition devicepinoutbuilder.cpp:167
void exitInteractiveMode() noexcept
Definition devicepinoutbuilder.cpp:246
bool commitCurrentPad() noexcept
Definition devicepinoutbuilder.cpp:307
int getCurrentPadNumber() const noexcept
Definition devicepinoutbuilder.h:78
DevicePinoutBuilder(const DevicePinoutBuilder &other)=delete
void setPads(const PackagePadList &list) noexcept
Definition devicepinoutbuilder.cpp:71
void commitInteractiveMode() noexcept
Definition devicepinoutbuilder.cpp:240
int mCurrentPadIndex
Definition devicepinoutbuilder.h:107
void startInteractiveMode() noexcept
Definition devicepinoutbuilder.cpp:235
The UndoStack class holds UndoCommand objects and provides undo/redo commands.
Definition undostack.h:106
Definition occmodel.cpp:77
Definition uuid.h:186