LibrePCB Developers Documentation
symboleditorstate.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_SYMBOLEDITORSTATE_H
21#define LIBREPCB_EDITOR_SYMBOLEDITORSTATE_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "../../../utils/toolbarproxy.h"
27#include "symboleditorfsm.h"
28
30
31#include <QtCore>
32#include <QtWidgets>
33
34/*******************************************************************************
35 * Namespace / Forward Declarations
36 ******************************************************************************/
37namespace librepcb {
38
39class Layer;
40class LengthUnit;
41
42namespace editor {
43
44/*******************************************************************************
45 * Class SymbolEditorState
46 ******************************************************************************/
47
52class SymbolEditorState : public QObject {
53 Q_OBJECT
54
55public:
57
58 // Constructors / Destructor
60 SymbolEditorState(const SymbolEditorState& other) = delete;
61 explicit SymbolEditorState(const Context& context) noexcept;
62 virtual ~SymbolEditorState() noexcept;
63
64 // General Methods
65 virtual bool entry() noexcept { return true; }
66 virtual bool exit() noexcept { return true; }
67 virtual QSet<EditorWidgetBase::Feature> getAvailableFeatures()
68 const noexcept = 0;
69
70 // Event Handlers
71 virtual bool processKeyPressed(const QKeyEvent& e) noexcept {
72 Q_UNUSED(e);
73 return false;
74 }
75 virtual bool processKeyReleased(const QKeyEvent& e) noexcept {
76 Q_UNUSED(e);
77 return false;
78 }
80 QGraphicsSceneMouseEvent& e) noexcept {
81 Q_UNUSED(e);
82 return false;
83 }
85 QGraphicsSceneMouseEvent& e) noexcept {
86 Q_UNUSED(e);
87 return false;
88 }
90 QGraphicsSceneMouseEvent& e) noexcept {
91 Q_UNUSED(e);
92 return false;
93 }
95 QGraphicsSceneMouseEvent& e) noexcept {
96 Q_UNUSED(e);
97 return false;
98 }
100 QGraphicsSceneMouseEvent& e) noexcept {
101 Q_UNUSED(e);
102 return false;
103 }
104 virtual bool processSelectAll() noexcept { return false; }
105 virtual bool processCut() noexcept { return false; }
106 virtual bool processCopy() noexcept { return false; }
107 virtual bool processPaste() noexcept { return false; }
108 virtual bool processMove(Qt::ArrowType direction) {
109 Q_UNUSED(direction);
110 return false;
111 }
112 virtual bool processRotate(const Angle& rotation) noexcept {
113 Q_UNUSED(rotation);
114 return false;
115 }
116 virtual bool processMirror(Qt::Orientation orientation) noexcept {
117 Q_UNUSED(orientation);
118 return false;
119 }
120 virtual bool processSnapToGrid() noexcept { return false; }
121 virtual bool processRemove() noexcept { return false; }
122 virtual bool processEditProperties() noexcept { return false; }
123 virtual bool processImportDxf() noexcept { return false; }
124 virtual bool processAbortCommand() noexcept { return false; }
125
126 // Operator Overloadings
128
129signals:
131 void statusBarMessageChanged(const QString& message, int timeoutMs = -1);
132
133protected: // Methods
134 const PositiveLength& getGridInterval() const noexcept;
135 const LengthUnit& getLengthUnit() const noexcept;
136 static const QSet<const Layer*>& getAllowedTextLayers() noexcept;
137 static const QSet<const Layer*>& getAllowedCircleAndPolygonLayers() noexcept;
138
139protected: // Data
141};
142
143/*******************************************************************************
144 * End of File
145 ******************************************************************************/
146
147} // namespace editor
148} // namespace librepcb
149
150#endif
The Angle class is used to represent an angle (for example 12.75 degrees)
Definition: angle.h:78
The Layer class provides all supported geometry layers.
Definition: layer.h:40
The LengthUnit class represents a length unit (millimeters, inches,...) and provides some useful meth...
Definition: lengthunit.h:60
The SymbolEditorState class is the base class of all symbol editor FSM states.
Definition: symboleditorstate.h:52
Context mContext
Definition: symboleditorstate.h:140
virtual bool processEditProperties() noexcept
Definition: symboleditorstate.h:122
const PositiveLength & getGridInterval() const noexcept
Definition: symboleditorstate.cpp:53
virtual bool processAbortCommand() noexcept
Definition: symboleditorstate.h:124
virtual bool processGraphicsSceneLeftMouseButtonDoubleClicked(QGraphicsSceneMouseEvent &e) noexcept
Definition: symboleditorstate.h:94
virtual bool exit() noexcept
Definition: symboleditorstate.h:66
void statusBarMessageChanged(const QString &message, int timeoutMs=-1)
const LengthUnit & getLengthUnit() const noexcept
Definition: symboleditorstate.cpp:57
virtual bool processKeyPressed(const QKeyEvent &e) noexcept
Definition: symboleditorstate.h:71
virtual bool processSnapToGrid() noexcept
Definition: symboleditorstate.h:120
virtual QSet< EditorWidgetBase::Feature > getAvailableFeatures() const noexcept=0
static const QSet< const Layer * > & getAllowedCircleAndPolygonLayers() noexcept
Definition: symboleditorstate.cpp:76
virtual bool entry() noexcept
Definition: symboleditorstate.h:65
virtual bool processSelectAll() noexcept
Definition: symboleditorstate.h:104
SymbolEditorState(const SymbolEditorState &other)=delete
virtual bool processGraphicsSceneRightMouseButtonReleased(QGraphicsSceneMouseEvent &e) noexcept
Definition: symboleditorstate.h:99
static const QSet< const Layer * > & getAllowedTextLayers() noexcept
Definition: symboleditorstate.cpp:61
virtual bool processGraphicsSceneLeftMouseButtonReleased(QGraphicsSceneMouseEvent &e) noexcept
Definition: symboleditorstate.h:89
virtual bool processRotate(const Angle &rotation) noexcept
Definition: symboleditorstate.h:112
virtual ~SymbolEditorState() noexcept
Definition: symboleditorstate.cpp:46
virtual bool processImportDxf() noexcept
Definition: symboleditorstate.h:123
SymbolEditorState & operator=(const SymbolEditorState &rhs)=delete
virtual bool processKeyReleased(const QKeyEvent &e) noexcept
Definition: symboleditorstate.h:75
virtual bool processMove(Qt::ArrowType direction)
Definition: symboleditorstate.h:108
virtual bool processGraphicsSceneMouseMoved(QGraphicsSceneMouseEvent &e) noexcept
Definition: symboleditorstate.h:79
virtual bool processGraphicsSceneLeftMouseButtonPressed(QGraphicsSceneMouseEvent &e) noexcept
Definition: symboleditorstate.h:84
virtual bool processMirror(Qt::Orientation orientation) noexcept
Definition: symboleditorstate.h:116
virtual bool processCopy() noexcept
Definition: symboleditorstate.h:106
virtual bool processCut() noexcept
Definition: symboleditorstate.h:105
virtual bool processPaste() noexcept
Definition: symboleditorstate.h:107
virtual bool processRemove() noexcept
Definition: symboleditorstate.h:121
Definition: occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition: length.h:812
Definition: symboleditorfsm.h:76