umbrello  2.35.1
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
classifierwidget.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3  SPDX-FileCopyrightText: 2004-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4 */
5 
6 #ifndef CLASSIFIERWIDGET_H
7 #define CLASSIFIERWIDGET_H
8 
9 #include "basictypes.h"
10 #include "umlobject.h"
11 #include "umlwidget.h"
12 
13 class AssociationWidget;
14 class FloatingTextWidget;
15 class QPainter;
16 class UMLClassifier;
17 
28 {
29  Q_OBJECT
30  Q_ENUMS(VisualProperty)
31 public:
38  ShowStereotype = 0x1, // DEPRECATED - see umlwidgets/widgetbase.cpp
39  // WidgetBase::slotMenuSelection(QAction*)
40  // case ListPopupMenu::mt_{Show,Hide}_Stereotypes_Selection
44  ShowPackage = 0x10,
46  DrawAsCircle = 0x40,
49  DrawAsPackage = 0x100,
51  };
52 
53  Q_DECLARE_FLAGS(VisualProperties, VisualProperty)
54 
55  ClassifierWidget(UMLScene * scene, UMLClassifier * umlc);
56  ClassifierWidget(UMLScene * scene, UMLInstance * umli);
57  ClassifierWidget(UMLScene * scene, UMLPackage * o);
58  virtual ~ClassifierWidget();
59 
60  UMLClassifier *classifier() const;
61 
62  void setShowStereotype(Uml::ShowStereoType::Enum flag);
63 
64  VisualProperties visualProperties() const;
65  void setVisualProperties(VisualProperties properties);
66 
67  bool visualProperty(VisualProperty property) const;
68  void setVisualProperty(VisualProperty property, bool enable = true);
69  void setVisualPropertyCmd(VisualProperty property, bool enable = true);
70  void toggleVisualProperty(VisualProperty property);
71 
72  int displayedAttributes() const;
73  int displayedOperations() const;
74 
75  Uml::SignatureType::Enum attributeSignature() const;
76  void setAttributeSignature(Uml::SignatureType::Enum sig);
77 
78  Uml::SignatureType::Enum operationSignature() const;
79  void setOperationSignature(Uml::SignatureType::Enum sig);
80 
81  void setShowAttSigs(bool _show);
82  void toggleShowAttSigs();
83 
84  bool getDrawAsCircle() const;
85  void setDrawAsCircle(bool drawAsCircle);
86  void toggleDrawAsCircle();
87 
88  void changeToClass();
89  void changeToInterface();
90  void changeToPackage();
91 
94 
95  UMLWidget* onWidget(const QPointF& p);
96  UMLWidget* widgetWithID(Uml::ID::Type id);
97 
98  virtual void setDocumentation(const QString& doc);
99 
100  QSizeF calculateSize(bool withExtensions = true) const;
101 
102  virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
103  virtual QPainterPath shape() const;
104 
105  virtual void saveToXMI(QXmlStreamWriter& writer);
106  virtual bool loadFromXMI(QDomElement & qElement);
107 
108  virtual bool showPropertiesDialog();
109  void setUMLObject(UMLObject *obj);
110 
111 public Q_SLOTS:
112  virtual void slotMenuSelection(QAction* action);
113 
114 private Q_SLOTS:
115  void slotShowAttributes(bool state);
116  void slotShowOperations(bool state);
117 
118 protected:
119  virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
120 
121 private:
122  void updateSignatureTypes();
123  QSize calculateTemplatesBoxSize() const;
124 
125  QSizeF minimumSize() const;
126 
127  void drawAsCircle(QPainter *p, const QStyleOptionGraphicsItem *option);
128  QSize calculateAsCircleSize() const;
129 
130  void drawAsPackage(QPainter *painter, const QStyleOptionGraphicsItem *option);
131  QSize calculateAsPackageSize() const;
132 
133  int displayedMembers(UMLObject::ObjectType ot) const;
134  void drawMembers(QPainter *painter, UMLObject::ObjectType ot, Uml::SignatureType::Enum sigType,
135  int x, int y, int textWidth, int fontHeight);
136 
137  static const int CIRCLE_SIZE;
138  static const int SOCKET_INCREMENT;
139 
140  VisualProperties m_visualProperties;
141  Uml::SignatureType::Enum m_attributeSignature;
142  Uml::SignatureType::Enum m_operationSignature;
145 
146 };
147 
148 Q_DECLARE_OPERATORS_FOR_FLAGS(ClassifierWidget::VisualProperties)
149 
150 #endif
Non-graphical information for a Package.
Definition: package.h:27
QPointer< FloatingTextWidget > m_pInterfaceName
Separate widget for name in case of interface drawn as circle.
Definition: classifierwidget.h:144
void setDrawAsCircle(bool drawAsCircle)
Definition: classifierwidget.cpp:1242
Information for a non-graphical Concept/Class.
Definition: classifier.h:34
void toggleVisualProperty(VisualProperty property)
Definition: classifierwidget.cpp:339
Definition: classifierwidget.h:38
void setShowAttSigs(bool _show)
Definition: classifierwidget.cpp:447
AssociationWidget * classAssociationWidget() const
Definition: classifierwidget.cpp:753
Definition: classifierwidget.h:43
void toggleShowAttSigs()
Definition: classifierwidget.cpp:469
only in setter
Definition: classifierwidget.h:47
bool getDrawAsCircle() const
Definition: classifierwidget.cpp:1279
void slotShowOperations(bool state)
Definition: classifierwidget.cpp:1582
Definition: classifierwidget.h:50
void toggleDrawAsCircle()
Definition: classifierwidget.cpp:1288
Definition: classifierwidget.h:44
UMLWidget * onWidget(const QPointF &p)
Definition: classifierwidget.cpp:1207
void drawAsCircle(QPainter *p, const QStyleOptionGraphicsItem *option)
Definition: classifierwidget.cpp:976
only in setter
Definition: classifierwidget.h:48
int x
Definition: cxx11-lambda-functions-and-expressions.h:4
void changeToInterface()
Definition: classifierwidget.cpp:1319
int displayedAttributes() const
Definition: classifierwidget.cpp:718
void setAttributeSignature(Uml::SignatureType::Enum sig)
Definition: classifierwidget.cpp:412
QSizeF calculateSize(bool withExtensions=true) const
Definition: classifierwidget.cpp:519
Definition: classifierwidget.h:42
QSize calculateAsPackageSize() const
Definition: classifierwidget.cpp:1106
virtual void slotMenuSelection(QAction *action)
Definition: classifierwidget.cpp:1468
The base class for UML objects.
Definition: umlobject.h:69
This class represents an association inside a diagram. Bugs and comments to umbrello-devel@kde.org or https://bugs.kde.org.
Definition: associationwidget.h:46
QSizeF minimumSize() const
Definition: classifierwidget.cpp:510
void updateSignatureTypes()
Definition: classifierwidget.cpp:362
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
Definition: classifierwidget.cpp:1587
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Definition: classifierwidget.cpp:763
void slotShowAttributes(bool state)
Definition: classifierwidget.cpp:1574
void setOperationSignature(Uml::SignatureType::Enum sig)
Definition: classifierwidget.cpp:433
VisualProperty
Definition: classifierwidget.h:37
Definition: basictypes.cpp:22
void setVisualProperties(VisualProperties properties)
Definition: classifierwidget.cpp:204
void setVisualProperty(VisualProperty property, bool enable=true)
Definition: classifierwidget.cpp:252
virtual bool loadFromXMI(QDomElement &qElement)
Definition: classifierwidget.cpp:1350
static const int SOCKET_INCREMENT
augmentation of circle for socket (required interface)
Definition: classifierwidget.h:138
VisualProperties m_visualProperties
Definition: classifierwidget.h:140
int displayedOperations() const
Definition: classifierwidget.cpp:728
Uml::SignatureType::Enum attributeSignature() const
Definition: classifierwidget.cpp:401
Definition: classifierwidget.h:46
Definition: classifierwidget.h:41
void drawAsPackage(QPainter *painter, const QStyleOptionGraphicsItem *option)
Definition: classifierwidget.cpp:1066
void setUMLObject(UMLObject *obj)
Definition: classifierwidget.cpp:1613
void drawMembers(QPainter *painter, UMLObject::ObjectType ot, Uml::SignatureType::Enum sigType, int x, int y, int textWidth, int fontHeight)
Definition: classifierwidget.cpp:1143
Uml::SignatureType::Enum m_operationSignature
Loaded/saved item.
Definition: classifierwidget.h:142
Uml::SignatureType::Enum m_attributeSignature
Loaded/saved item.
Definition: classifierwidget.h:141
AssociationWidget * m_pAssocWidget
related AssociationWidget in case this classifier acts as an association class
Definition: classifierwidget.h:143
std::string Type
Definition: basictypes.h:371
QSize calculateTemplatesBoxSize() const
Definition: classifierwidget.cpp:686
QSize calculateAsCircleSize() const
Definition: classifierwidget.cpp:1059
UMLClassifier * classifier() const
Definition: classifierwidget.cpp:175
void setClassAssociationWidget(AssociationWidget *assocwidget)
Definition: classifierwidget.cpp:739
Definition: classifierwidget.h:49
void setVisualPropertyCmd(VisualProperty property, bool enable=true)
Definition: classifierwidget.cpp:268
virtual QPainterPath shape() const
Definition: classifierwidget.cpp:953
Displays a line of text or an operation.
Definition: floatingtextwidget.h:31
virtual void saveToXMI(QXmlStreamWriter &writer)
Definition: classifierwidget.cpp:1422
bool visualProperty(VisualProperty property) const
Definition: classifierwidget.cpp:222
Non-graphical Information for an Instance.
Definition: instance.h:42
virtual bool showPropertiesDialog()
Definition: classifierwidget.cpp:1598
VisualProperties visualProperties() const
Definition: classifierwidget.cpp:195
virtual void setDocumentation(const QString &doc)
Definition: classifierwidget.cpp:1230
void changeToClass()
Definition: classifierwidget.cpp:1301
int displayedMembers(UMLObject::ObjectType ot) const
Definition: classifierwidget.cpp:491
Enum
Definition: basictypes.h:27
Common implementation for class widget and interface widget.
Definition: classifierwidget.h:27
Uml::SignatureType::Enum operationSignature() const
Definition: classifierwidget.cpp:423
Definition: classifierwidget.h:45
void changeToPackage()
Definition: classifierwidget.cpp:1335
UMLWidget * widgetWithID(Uml::ID::Type id)
Definition: classifierwidget.cpp:1221
Definition: umlscene.h:64
void setShowStereotype(Uml::ShowStereoType::Enum flag)
Definition: classifierwidget.cpp:183
static const int CIRCLE_SIZE
size of circle when interface is rendered as such
Definition: classifierwidget.h:137
The base class for graphical UML objects.
Definition: umlwidget.h:35