KDStateMachineEditor API Documentation  1.2.50
element.h
1 /*
2  This file is part of the KDAB State Machine Editor Library.
3 
4  SPDX-FileCopyrightText: 2014-2021 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
5  Author: Kevin Funk <kevin.funk@kdab.com>
6 
7  SPDX-License-Identifier: LGPL-2.1-only OR LicenseRef-KDAB-KDStateMachineEditor
8 
9  Licensees holding valid commercial KDAB State Machine Editor Library
10  licenses may use this file in accordance with the KDAB State Machine Editor
11  Library License Agreement provided with the Software.
12 
13  Contact info@kdab.com if any conditions of this licensing are not clear to you.
14 */
15 
16 #ifndef KDSME_MODEL_ELEMENT_H
17 #define KDSME_MODEL_ELEMENT_H
18 
19 #include "kdsme_core_export.h"
20 
21 #include <QObject>
22 #include <QMetaType>
23 #include <QPointF>
24 
25 QT_BEGIN_NAMESPACE
26 class QPainterPath;
27 QT_END_NAMESPACE
28 
29 namespace KDSME {
30 
31 class State;
32 class StateMachine;
33 
34 class KDSME_CORE_EXPORT Element : public QObject
35 {
36  Q_OBJECT
37  Q_ENUMS(Flags)
38  Q_PROPERTY(KDSME::Element* parent READ parentElement WRITE setParentElement NOTIFY parentChanged FINAL)
39  Q_PROPERTY(Type type READ type CONSTANT FINAL)
40  Q_PROPERTY(Flags flags READ flags WRITE setFlags NOTIFY flagsChanged FINAL)
41  Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged FINAL)
43  Q_PROPERTY(QPointF pos READ pos WRITE setPos NOTIFY posChanged FINAL)
44  Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged FINAL)
45  Q_PROPERTY(qreal height READ height WRITE setHeight NOTIFY heightChanged FINAL)
47  Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL)
49  Q_PROPERTY(bool selected READ isSelected WRITE setSelected NOTIFY selectedChanged FINAL)
50 
51 public:
52  enum Type {
53  ElementType,
54 
55  // Transition types
56  TransitionType,
57  SignalTransitionType,
58  TimeoutTransitionType,
59 
60  // State types
61  StateType,
62  StateMachineType,
63  HistoryStateType,
64  FinalStateType,
65  PseudoStateType
66  };
67  Q_ENUMS(Type)
68 
69  enum Flag {
70  NoFlags = 0x0,
71  ElementIsDragEnabled = 0x1,
72  ElementIsSelectable = 0x2,
73  ElementIsEditable = 0x4,
74  };
75  Q_DECLARE_FLAGS(Flags, Flag)
76 
77  explicit Element(QObject* parent = nullptr);
78  ~Element();
79 
80  virtual Type type() const;
81 
82  Flags flags() const;
83  void setFlags(Flags flags);
84 
88  QString label() const;
89  void setLabel(const QString& label);
90 
96  quintptr internalId() const;
97  void setInternalId(quintptr id);
98 
99  void setInternalPointer(void* ptr);
100  void* internalPointer() const;
101 
102  QPointF pos() const;
103  void setPos(const QPointF& pos);
104 
105  qreal height() const;
106  void setHeight(qreal height);
107 
108  qreal width() const;
109  void setWidth(qreal width);
110 
111  QPointF absolutePos() const;
112 
113  bool isVisible() const;
114  void setVisible(bool visible);
115 
116  bool isSelected() const;
117  void setSelected(bool selected);
118 
119  QSizeF preferredSize() const;
120  virtual QRectF boundingRect() const;
121 
122  Element* parentElement() const;
123  void setParentElement(Element* parent);
124  void setParent(QObject* object); // hide parent function
125  QList<Element*> childElements() const;
126 
127  virtual QString toDisplayString() const;
128 
129  Q_INVOKABLE static const char* typeToString(Type type);
130  Q_INVOKABLE static Type stringToType(const char* type);
131 
132 Q_SIGNALS:
133  void parentChanged(Element* parent);
134  void flagsChanged(Flags flags);
135  void labelChanged(const QString& label);
136  void posChanged(const QPointF& pos);
137  void heightChanged(qreal height);
138  void widthChanged(qreal width);
139  void visibleChanged(bool visible);
140  void selectedChanged(bool selected);
141 
142 private:
143  struct Private;
145 };
146 
147 }
148 
149 Q_DECLARE_METATYPE(KDSME::Element::Type)
150 Q_DECLARE_METATYPE(KDSME::Element*)
151 
152 #endif // TREESTRUCTURE_H
Definition: element.h:34
Definition: mainwindow.h:21

Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
KDStateMachineEditor
Create Qt State Machine metacode using a graphical user interface
https://github.com/KDAB/KDStateMachineEditor