umbrello 2.32.2
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
widgetbase.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-2.0-or-later
3 SPDX-FileCopyrightText: 2004-2020 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4*/
5
6#ifndef WIDGETBASE_H
7#define WIDGETBASE_H
8
9#include "basictypes.h"
10#include "icon_utils.h"
11
12#include <QColor>
13#include <QDomDocument>
14#include <QFont>
15#include <QGraphicsObject>
16#include <QObject>
17#include <QPainter>
18#include <QPointer>
19#include <QXmlStreamWriter>
20
21// forward declarations
22class QAction;
23class ActivityWidget;
24class ActorWidget;
25class ArtifactWidget;
27class BoxWidget;
28class CategoryWidget;
31class ComponentWidget;
32class DatatypeWidget;
33class EntityWidget;
34class EnumWidget;
37class ForkJoinWidget;
38class IDChangeLog;
39class InterfaceWidget;
40class MessageWidget;
41class NodeWidget;
42class NoteWidget;
44class ObjectWidget;
45class PackageWidget;
46class PinWidget;
47class PortWidget;
48class PinPortBase;
50class RegionWidget;
51class SignalWidget;
52class StateWidget;
53//class TextWidget;
54class UseCaseWidget;
55class UMLDoc;
56class UMLObject;
57class UMLScene;
58class UMLWidget; // required by function onWidget()
59
86class QGraphicsObjectWrapper: public QGraphicsObject
87{
88public:
89 virtual void setSelected(bool state);
90protected:
92 QVariant itemChange(GraphicsItemChange change, const QVariant &value);
93};
94
101{
102 Q_OBJECT
103 Q_ENUMS(WidgetType)
104
105public:
107 {
108 wt_Min = 299, // lower bounds check value
109 wt_UMLWidget, // does not have UMLObject representation
110 wt_Actor, // has UMLObject representation
111 wt_UseCase, // has UMLObject representation
112 wt_Class, // has UMLObject representation
113 wt_Interface, // has UMLObject representation
114 wt_Datatype, // has UMLObject representation
115 wt_Enum, // has UMLObject representation
116 wt_Entity, // has UMLObject representation
117 wt_Package, // has UMLObject representation
118 wt_Object, // has UMLObject representation
119 wt_Note, // does not have UMLObject representation
120 wt_Box, // does not have UMLObject representation
121 wt_Message, // does not have UMLObject representation
122 wt_Text, // does not have UMLObject representation
123 wt_State, // does not have UMLObject representation
124 wt_Activity, // does not have UMLObject representation
125 wt_Component, // has UMLObject representation
126 wt_Artifact, // has UMLObject representation
127 wt_Node, // has UMLObject representation
128 wt_Association, // has UMLObject representation
129 wt_ForkJoin, // does not have UMLObject representation
130 wt_Precondition, // does not have UMLObject representation
131 wt_CombinedFragment, // does not have UMLObject representation
132 wt_FloatingDashLine, // does not have UMLObject representation
133 wt_Signal, // does not have UMLObject representation
137 wt_Category, // has UMLObject representation
138 wt_Port, // has UMLObject representation
139 wt_Instance, // has UMLObject representation == wt_Object
140 wt_Max // upper bounds check value
141 };
142
143 static QString toString(WidgetType wt);
144 static QString toI18nString(WidgetType wt);
146
148 virtual ~WidgetBase();
149
150 UMLObject* umlObject() const;
151 virtual void setUMLObject(UMLObject *obj);
152
153 Uml::ID::Type id() const;
154 void setID(Uml::ID::Type id);
155
156 void setLocalID(Uml::ID::Type id);
157 Uml::ID::Type localID() const;
158
160
161 WidgetType baseType() const;
162 void setBaseType(const WidgetType& baseType);
163 QLatin1String baseTypeStr() const;
164 QString baseTypeStrWithoutPrefix() const;
165
166 virtual void setSelected(bool select);
167
168 UMLScene* umlScene() const;
169 UMLDoc* umlDoc() const;
170
171 QString documentation() const;
172 bool hasDocumentation();
173 virtual void setDocumentation(const QString& doc);
174
175 QString name() const;
176 virtual void setName(const QString &strName);
177
178 QColor lineColor() const;
179 virtual void setLineColor(const QColor& color);
180
181 uint lineWidth() const;
182 virtual void setLineWidth(uint width);
183
184 QColor textColor() const;
185 virtual void setTextColor(const QColor& color);
186
187 QColor fillColor() const;
188 virtual void setFillColor(const QColor& color);
189
190 bool usesDiagramLineColor() const;
191 void setUsesDiagramLineColor(bool state);
192
193 bool usesDiagramLineWidth() const;
194 void setUsesDiagramLineWidth(bool state);
195
196 bool useFillColor();
197 virtual void setUseFillColor(bool state);
198
199 bool usesDiagramTextColor() const;
200 void setUsesDiagramTextColor(bool state);
201
202 bool usesDiagramFillColor() const;
203 void setUsesDiagramFillColor(bool state);
204
205 bool usesDiagramUseFillColor() const;
206 void setUsesDiagramUseFillColor(bool state);
207
208 virtual QFont font() const;
209 virtual void setFont(const QFont& font);
210
211 bool autoResize();
212 void setAutoResize(bool state);
213
214 bool changesShape();
215 void setChangesShape(bool state);
216
217 virtual bool showPropertiesDialog();
218
219 virtual bool loadFromXMI1(QDomElement &qElement);
220 virtual void saveToXMI1(QXmlStreamWriter& writer);
221
222 virtual void removeAssoc(AssociationWidget* pAssoc);
223 virtual void addAssoc(AssociationWidget* pAssoc);
224
225 WidgetBase& operator=(const WidgetBase& other);
226
227 QRectF rect() const;
228 void setRect(const QRectF& rect);
229 void setRect(qreal x, qreal y, qreal width, qreal height);
230
231 virtual QRectF boundingRect() const;
232
233 virtual UMLWidget* onWidget(const QPointF &p);
234
235 virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
236
237 bool isActivityWidget() { return baseType() == wt_Activity; }
238 bool isActorWidget() { return baseType() == wt_Actor; }
239 bool isArtifactWidget() { return baseType() == wt_Artifact; }
241 bool isBoxWidget() { return baseType() == wt_Box; }
242 bool isCategoryWidget() { return baseType() == wt_Category; }
243 bool isClassWidget() { return baseType() == wt_Class; }
246 bool isDatatypeWidget() { return baseType() == wt_Datatype; }
247 bool isEntityWidget() { return baseType() == wt_Entity; }
248 bool isEnumWidget() { return baseType() == wt_Enum; }
250 bool isForkJoinWidget() { return baseType() == wt_ForkJoin; }
252 bool isMessageWidget() { return baseType() == wt_Message; }
253 bool isNodeWidget() { return baseType() == wt_Node; }
254 bool isNoteWidget() { return baseType() == wt_Note; }
256 bool isObjectWidget() { return baseType() == wt_Object; }
257 bool isPackageWidget() { return baseType() == wt_Package; }
258 bool isPinWidget() { return baseType() == wt_Pin; }
259 bool isPortWidget() { return baseType() == wt_Port; }
261 bool isRegionWidget() { return baseType() == wt_Region; }
262 bool isSignalWidget() { return baseType() == wt_Signal; }
263 bool isStateWidget() { return baseType() == wt_State; }
264 bool isTextWidget() { return baseType() == wt_Text; }
265 bool isUseCaseWidget() { return baseType() == wt_UseCase; }
266
296// TextWidget* asTextWidget();
299
301 virtual bool activate(IDChangeLog *changeLog = 0);
302
303public Q_SLOTS:
304 virtual void slotMenuSelection(QAction *trigger);
305
306protected:
307 virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
308
309private:
311protected:
313 QPointer<UMLObject> m_umlObject;
314 QString m_Doc;
315 QString m_Text;
316 QRectF m_rect;
317
324
329
330 QColor m_textColor;
331 QColor m_lineColor;
332 QColor m_fillColor;
333 QBrush m_brush;
334 QFont m_font;
337
350};
351
352#endif
A graphical version of a UML Activity.
Definition: activitywidget.h:29
A graphical version of a UML Actor.
Definition: actorwidget.h:37
A graphical version of an Artifact.
Definition: artifactwidget.h:26
This class represents an association inside a diagram. Bugs and comments to umbrello-devel@kde....
Definition: associationwidget.h:47
Displays a box.
Definition: boxwidget.h:23
A graphical version of a UMLCategory.
Definition: categorywidget.h:32
Common implementation for class widget and interface widget.
Definition: classifierwidget.h:28
A graphical version of a UML combined fragment.
Definition: combinedfragmentwidget.h:28
A graphical version of a Component.
Definition: componentwidget.h:25
A graphical version of an datatype.
Definition: datatypewidget.h:25
A graphical version of an entity.
Definition: entitywidget.h:25
A graphical version of an enum.
Definition: enumwidget.h:23
A dash line for UML combined fragments.
Definition: floatingdashlinewidget.h:29
Displays a line of text or an operation.
Definition: floatingtextwidget.h:32
Displays a fork/join plate in a state diagram.
Definition: forkjoinwidget.h:21
Definition: idchangelog.h:22
Definition: interfacewidget.h:20
Displays a message.
Definition: messagewidget.h:36
A graphical version of a Node.
Definition: nodewidget.h:23
Displays a note box.
Definition: notewidget.h:26
A graphical version of a UML Activity.
Definition: objectnodewidget.h:24
Displays an instance of a Concept.
Definition: objectwidget.h:28
A graphical version of a Package.
Definition: packagewidget.h:26
Abstract base class for PinWidget and PortWidget.
Definition: pinportbase.h:23
A graphical version of a UML pin.
Definition: pinwidget.h:24
A graphical version of a port on a component.
Definition: portwidget.h:23
A graphical version of a UML Precondition (new in UML 2.0).
Definition: preconditionwidget.h:28
Definition: widgetbase.h:87
QVariant itemChange(GraphicsItemChange change, const QVariant &value)
Definition: widgetbase.cpp:52
bool m_calledFromItemChange
Definition: widgetbase.h:91
virtual void setSelected(bool state)
Definition: widgetbase.cpp:36
Definition: regionwidget.h:15
Definition: signalwidget.h:23
A graphical version of a UML State.
Definition: statewidget.h:34
Definition: umldoc.h:70
The base class for UML objects.
Definition: umlobject.h:70
Definition: umlscene.h:65
The base class for graphical UML objects.
Definition: umlwidget.h:36
A graphical version of a UMLUseCase.
Definition: usecasewidget.h:38
Common base class for UMLWidget and AssociationWidget.
Definition: widgetbase.h:101
Uml::ID::Type m_nId
Definition: widgetbase.h:323
bool isPackageWidget()
Definition: widgetbase.h:257
void setUsesDiagramFillColor(bool state)
Definition: widgetbase.cpp:501
NoteWidget * asNoteWidget()
Definition: widgetbase.cpp:1488
bool isNoteWidget()
Definition: widgetbase.h:254
QString name() const
Definition: widgetbase.cpp:316
UMLScene * m_scene
Definition: widgetbase.h:312
Uml::ID::Type localID() const
Definition: widgetbase.cpp:245
QPointer< UMLObject > m_umlObject
Definition: widgetbase.h:313
ActorWidget * asActorWidget()
Definition: widgetbase.cpp:1472
bool usesDiagramTextColor() const
Definition: widgetbase.cpp:447
bool isMessageWidget()
Definition: widgetbase.h:252
bool m_useFillColor
flag indicates if the UMLWidget uses the Diagram FillColour
Definition: widgetbase.h:336
static QString toI18nString(WidgetType wt)
Definition: widgetbase.cpp:1231
virtual ~WidgetBase()
Definition: widgetbase.cpp:115
ObjectWidget * asObjectWidget()
Definition: widgetbase.cpp:1490
PinWidget * asPinWidget()
Definition: widgetbase.cpp:1492
virtual QRectF boundingRect() const
Definition: widgetbase.cpp:864
bool isAssociationWidget()
Definition: widgetbase.h:240
bool isComponentWidget()
Definition: widgetbase.h:245
UMLWidget * asUMLWidget()
Definition: widgetbase.cpp:1502
FloatingDashLineWidget * asFloatingDashLineWidget()
Definition: widgetbase.cpp:1483
bool m_autoResize
Definition: widgetbase.h:348
virtual void addAssoc(AssociationWidget *pAssoc)
Definition: widgetbase.cpp:704
virtual void setLineWidth(uint width)
Definition: widgetbase.cpp:415
QLatin1String baseTypeStr() const
Definition: widgetbase.cpp:140
bool m_usesDiagramLineColor
Definition: widgetbase.h:344
virtual void slotMenuSelection(QAction *trigger)
Definition: widgetbase.cpp:967
bool isEntityWidget()
Definition: widgetbase.h:247
bool isStateWidget()
Definition: widgetbase.h:263
bool isActivityWidget()
Definition: widgetbase.h:237
QString m_Doc
Only used if m_umlObject is not set.
Definition: widgetbase.h:314
virtual void removeAssoc(AssociationWidget *pAssoc)
Definition: widgetbase.cpp:713
bool isUseCaseWidget()
Definition: widgetbase.h:265
bool autoResize()
Definition: widgetbase.cpp:567
NodeWidget * asNodeWidget()
Definition: widgetbase.cpp:1487
CombinedFragmentWidget * asCombinedFragmentWidget()
Definition: widgetbase.cpp:1478
bool useFillColor()
Definition: widgetbase.cpp:426
bool m_usesDiagramUseFillColor
Definition: widgetbase.h:347
QString baseTypeStrWithoutPrefix() const
Definition: widgetbase.cpp:149
bool isObjectWidget()
Definition: widgetbase.h:256
bool usesDiagramLineColor() const
Definition: widgetbase.cpp:471
FloatingTextWidget * asFloatingTextWidget()
Definition: widgetbase.cpp:1499
bool isActorWidget()
Definition: widgetbase.h:238
PinPortBase * asPinPortBase()
Definition: widgetbase.cpp:1493
void setUsesDiagramLineColor(bool state)
Definition: widgetbase.cpp:481
QRectF m_rect
widget size
Definition: widgetbase.h:316
QColor m_fillColor
color of the background of the widget
Definition: widgetbase.h:332
CategoryWidget * asCategoryWidget()
Definition: widgetbase.cpp:1476
void setRect(const QRectF &rect)
Definition: widgetbase.cpp:843
void setAutoResize(bool state)
Definition: widgetbase.cpp:576
bool isCombinedFragmentWidget()
Definition: widgetbase.h:244
MessageWidget * asMessageWidget()
Definition: widgetbase.cpp:1486
ActivityWidget * asActivityWidget()
Definition: widgetbase.cpp:1471
virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
Definition: widgetbase.cpp:918
AssociationWidget * asAssociationWidget()
Definition: widgetbase.cpp:1474
bool isFloatingDashLineWidget()
Definition: widgetbase.h:249
InterfaceWidget * asInterfaceWidget()
Definition: widgetbase.cpp:1485
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: widgetbase.cpp:624
QColor textColor() const
Definition: widgetbase.cpp:342
void setUsesDiagramLineWidth(bool state)
Definition: widgetbase.cpp:541
bool isRegionWidget()
Definition: widgetbase.h:261
bool isObjectNodeWidget()
Definition: widgetbase.h:255
bool usesDiagramLineWidth() const
Definition: widgetbase.cpp:531
virtual void setFillColor(const QColor &color)
Definition: widgetbase.cpp:394
PreconditionWidget * asPreconditionWidget()
Definition: widgetbase.cpp:1495
EnumWidget * asEnumWidget()
Definition: widgetbase.cpp:1482
ForkJoinWidget * asForkJoinWidget()
Definition: widgetbase.cpp:1484
StateWidget * asStateWidget()
Definition: widgetbase.cpp:1498
static QString toString(WidgetType wt)
Definition: widgetbase.cpp:1221
BoxWidget * asBoxWidget()
Definition: widgetbase.cpp:1475
WidgetType m_baseType
Type of widget.
Definition: widgetbase.h:310
bool isPortWidget()
Definition: widgetbase.h:259
QRectF rect() const
Definition: widgetbase.cpp:835
bool m_usesDiagramTextColor
Definition: widgetbase.h:346
virtual bool loadFromXMI1(QDomElement &qElement)
Definition: widgetbase.cpp:730
PackageWidget * asPackageWidget()
Definition: widgetbase.cpp:1491
ComponentWidget * asComponentWidget()
Definition: widgetbase.cpp:1479
WidgetBase(UMLScene *scene, WidgetType type=wt_UMLWidget, Uml::ID::Type id=Uml::ID::None)
Definition: widgetbase.cpp:69
virtual void setTextColor(const QColor &color)
Definition: widgetbase.cpp:352
UMLDoc * umlDoc() const
Definition: widgetbase.cpp:179
UMLObject * umlObject() const
Definition: widgetbase.cpp:189
ClassifierWidget * asClassifierWidget()
Definition: widgetbase.cpp:1477
bool isForkJoinWidget()
Definition: widgetbase.h:250
bool isTextWidget()
Definition: widgetbase.h:264
bool usesDiagramFillColor() const
Definition: widgetbase.cpp:491
void setID(Uml::ID::Type id)
Definition: widgetbase.cpp:207
virtual UMLWidget * onWidget(const QPointF &p)
Definition: widgetbase.cpp:879
void setLocalID(Uml::ID::Type id)
Definition: widgetbase.cpp:233
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Definition: widgetbase.cpp:910
virtual bool activate(IDChangeLog *changeLog=0)
Definition: widgetbase.cpp:686
bool isPinWidget()
Definition: widgetbase.h:258
QString m_Text
Definition: widgetbase.h:315
bool isInterfaceWidget()
Definition: widgetbase.h:251
RegionWidget * asRegionWidget()
Definition: widgetbase.cpp:1496
bool hasDocumentation()
Definition: widgetbase.cpp:288
Uml::ID::Type id() const
Definition: widgetbase.cpp:221
QColor m_textColor
Color of the text of the widget. Is saved to XMI.
Definition: widgetbase.h:330
bool isNodeWidget()
Definition: widgetbase.h:253
QBrush m_brush
Definition: widgetbase.h:333
virtual void setUMLObject(UMLObject *obj)
Definition: widgetbase.cpp:199
bool isArtifactWidget()
Definition: widgetbase.h:239
void setChangesShape(bool state)
Definition: widgetbase.cpp:594
virtual void setDocumentation(const QString &doc)
Definition: widgetbase.cpp:301
bool m_changesShape
The widget changes its shape when the number of connections or their positions are changed.
Definition: widgetbase.h:349
static bool widgetHasUMLObject(WidgetBase::WidgetType type)
Definition: widgetbase.cpp:660
SignalWidget * asSignalWidget()
Definition: widgetbase.cpp:1497
bool isBoxWidget()
Definition: widgetbase.h:241
QString documentation() const
Definition: widgetbase.cpp:276
bool isClassWidget()
Definition: widgetbase.h:243
void setUsesDiagramUseFillColor(bool state)
Definition: widgetbase.cpp:521
QColor lineColor() const
Definition: widgetbase.cpp:363
QColor m_lineColor
Color of the lines of the widget. Is saved to XMI.
Definition: widgetbase.h:331
PortWidget * asPortWidget()
Definition: widgetbase.cpp:1494
bool m_usesDiagramLineWidth
Definition: widgetbase.h:345
Uml::ID::Type m_nLocalID
Definition: widgetbase.h:328
bool isSignalWidget()
Definition: widgetbase.h:262
WidgetBase & operator=(const WidgetBase &other)
Definition: widgetbase.cpp:807
bool changesShape()
Definition: widgetbase.cpp:585
UseCaseWidget * asUseCaseWidget()
Definition: widgetbase.cpp:1501
QFont m_font
Definition: widgetbase.h:334
UMLScene * umlScene() const
Definition: widgetbase.cpp:169
bool usesDiagramUseFillColor() const
Definition: widgetbase.cpp:511
bool isPreconditionWidget()
Definition: widgetbase.h:260
virtual UMLWidget * widgetWithID(Uml::ID::Type id)
Definition: widgetbase.cpp:262
bool isCategoryWidget()
Definition: widgetbase.h:242
bool isEnumWidget()
Definition: widgetbase.h:248
bool isDatatypeWidget()
Definition: widgetbase.h:246
virtual void setUseFillColor(bool state)
Definition: widgetbase.cpp:436
DatatypeWidget * asDatatypeWidget()
Definition: widgetbase.cpp:1480
bool m_usesDiagramFillColor
Definition: widgetbase.h:343
virtual bool showPropertiesDialog()
Definition: widgetbase.cpp:609
EntityWidget * asEntityWidget()
Definition: widgetbase.cpp:1481
virtual void setSelected(bool select)
Definition: widgetbase.cpp:160
virtual void setName(const QString &strName)
Definition: widgetbase.cpp:329
ArtifactWidget * asArtifactWidget()
Definition: widgetbase.cpp:1473
void setBaseType(const WidgetType &baseType)
Definition: widgetbase.cpp:131
uint lineWidth() const
Definition: widgetbase.cpp:405
virtual QFont font() const
Definition: widgetbase.cpp:550
virtual void setFont(const QFont &font)
Definition: widgetbase.cpp:558
void setUsesDiagramTextColor(bool state)
Definition: widgetbase.cpp:457
ObjectNodeWidget * asObjectNodeWidget()
Definition: widgetbase.cpp:1489
QColor fillColor() const
Definition: widgetbase.cpp:384
static Icon_Utils::IconType toIcon(WidgetType wt)
Definition: widgetbase.cpp:1339
uint m_lineWidth
Width of the lines of the widget. Is saved to XMI.
Definition: widgetbase.h:335
WidgetType baseType() const
Definition: widgetbase.cpp:122
WidgetType
Definition: widgetbase.h:107
@ wt_Object
Definition: widgetbase.h:118
@ wt_ForkJoin
Definition: widgetbase.h:129
@ wt_Instance
Definition: widgetbase.h:139
@ wt_Enum
Definition: widgetbase.h:115
@ wt_Message
Definition: widgetbase.h:121
@ wt_ObjectNode
Definition: widgetbase.h:135
@ wt_Entity
Definition: widgetbase.h:116
@ wt_Actor
Definition: widgetbase.h:110
@ wt_Category
Definition: widgetbase.h:137
@ wt_Package
Definition: widgetbase.h:117
@ wt_Node
Definition: widgetbase.h:127
@ wt_Region
Definition: widgetbase.h:136
@ wt_Port
Definition: widgetbase.h:138
@ wt_Artifact
Definition: widgetbase.h:126
@ wt_Class
Definition: widgetbase.h:112
@ wt_Pin
Definition: widgetbase.h:134
@ wt_Interface
Definition: widgetbase.h:113
@ wt_Activity
Definition: widgetbase.h:124
@ wt_Text
Definition: widgetbase.h:122
@ wt_UseCase
Definition: widgetbase.h:111
@ wt_Max
Definition: widgetbase.h:140
@ wt_State
Definition: widgetbase.h:123
@ wt_Precondition
Definition: widgetbase.h:130
@ wt_Min
Definition: widgetbase.h:108
@ wt_Association
Definition: widgetbase.h:128
@ wt_Datatype
Definition: widgetbase.h:114
@ wt_Component
Definition: widgetbase.h:125
@ wt_UMLWidget
Definition: widgetbase.h:109
@ wt_CombinedFragment
Definition: widgetbase.h:131
@ wt_Note
Definition: widgetbase.h:119
@ wt_Box
Definition: widgetbase.h:120
@ wt_FloatingDashLine
Definition: widgetbase.h:132
@ wt_Signal
Definition: widgetbase.h:133
virtual void setLineColor(const QColor &color)
Definition: widgetbase.cpp:373
int x
Definition: cxx11-lambda-functions-and-expressions.h:4
IconType
Definition: icon_utils.h:33
const Type None
special value for uninitialized ID
Definition: basictypes.h:373
std::string Type
Definition: basictypes.h:371