umbrello  2.31.3
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
diagramproxywidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  * This program is free software; you can redistribute it and/or modify *
3  * it under the terms of the GNU General Public License as published by *
4  * the Free Software Foundation; either version 2 of the License, or *
5  * (at your option) any later version. *
6  * *
7  * copyright (C) 2019-2020 *
8  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
9  ***************************************************************************/
10 
11 #ifndef DIAGRAMPROXYWIDGET_H
12 #define DIAGRAMPROXYWIDGET_H
13 
14 #include <basictypes.h>
15 
16 #include <QPointer>
17 #include <QPointF>
18 #include <QRectF>
19 #include <QGraphicsSceneEvent>
20 
21 class UMLWidget;
22 class UMLScene;
23 class IDChangeLog;
24 class QAction;
25 class QDomDocument;
26 class QDomElement;
27 class QStyleOptionGraphicsItem;
28 
30 public:
31  DiagramProxyWidget(UMLWidget *widget, qreal borderWidth = 5);
32  virtual ~DiagramProxyWidget() {}
33  Uml::ID::Type diagramLink() const;
34  UMLScene *linkedDiagram() const;
35  bool setDiagramLink(const Uml::ID::Type &id);
36  const QRectF &clientRect();
37  const QRectF &sceneRect();
38  void setClientRect(const QRectF &rect);
39 
40  bool isProxyWidget();
41  UMLWidget *getProxiedWidget(const QPointF &p);
42  QPointF mapFromClient(const QPointF &p);
43  QRectF mapFromClient(const QRectF &r);
44  QPointF mapToClient(const QPointF &pos);
45 
46  void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
47 
48  bool showLinkedDiagram() const;
49  void setShowLinkedDiagram(bool showLinkedDiagram);
50 
51  QRectF iconRect() const;
52  void setIconRect(const QRectF &iconRect);
53 
54 protected:
56  bool activate(IDChangeLog* changeLog = 0);
57  bool loadFromXMI1(QDomElement &qElement);
58  void saveToXMI1(QDomDocument &qDoc, QDomElement &qElement);
59  void setupEvent(QGraphicsSceneMouseEvent &e, QGraphicsSceneMouseEvent *event, const QPointF &pos);
60  void setupEvent(QGraphicsSceneContextMenuEvent &e, QGraphicsSceneContextMenuEvent *event, const QPointF &pos);
61  virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
62  virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
63  virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
64  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
65  virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
66  void slotMenuSelection(QAction *action);
67 
68 private:
70  QPointer<UMLScene> m_linkedDiagram;
71  QRectF m_clientRect;
72  QRectF m_sceneRect;
73  QRectF m_iconRect;
77 };
78 
79 #endif // DIAGRAMPROXYWIDGET_H
bool activate(IDChangeLog *changeLog=0)
Definition: diagramproxywidget.cpp:95
QPointF mapToClient(const QPointF &pos)
Definition: diagramproxywidget.cpp:157
bool loadFromXMI1(QDomElement &qElement)
Definition: diagramproxywidget.cpp:104
bool showLinkedDiagram() const
Definition: diagramproxywidget.cpp:306
QPointF mapFromClient(const QPointF &p)
Definition: diagramproxywidget.cpp:136
Uml::ID::Type diagramLink() const
Definition: diagramproxywidget.cpp:38
qreal m_borderWidth
Definition: diagramproxywidget.h:75
bool m_showLinkedDiagram
Definition: diagramproxywidget.h:76
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Definition: diagramproxywidget.cpp:272
DiagramProxyWidget & operator=(const DiagramProxyWidget &other)
Definition: diagramproxywidget.cpp:167
Definition: idchangelog.h:26
UMLWidget * getProxiedWidget(const QPointF &p)
Definition: diagramproxywidget.cpp:124
QRectF m_clientRect
widget area for embedded diagram
Definition: diagramproxywidget.h:71
const QRectF & sceneRect()
Definition: diagramproxywidget.cpp:80
void saveToXMI1(QDomDocument &qDoc, QDomElement &qElement)
Definition: diagramproxywidget.cpp:111
bool setDiagramLink(const Uml::ID::Type &id)
Definition: diagramproxywidget.cpp:48
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Definition: diagramproxywidget.cpp:327
QRectF m_sceneRect
scene rectangle used for internal calculations
Definition: diagramproxywidget.h:72
bool isProxyWidget()
Definition: diagramproxywidget.cpp:119
QRectF iconRect() const
Definition: diagramproxywidget.cpp:288
QRectF m_iconRect
widget area for diagram icon
Definition: diagramproxywidget.h:73
Definition: diagramproxywidget.h:29
Uml::ID::Type m_diagramLinkId
id of linked diagram
Definition: diagramproxywidget.h:69
UMLWidget * m_widget
Definition: diagramproxywidget.h:74
virtual ~DiagramProxyWidget()
Definition: diagramproxywidget.h:32
QPointer< UMLScene > m_linkedDiagram
pointer to linked diagram
Definition: diagramproxywidget.h:70
std::string Type
Definition: basictypes.h:351
virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
Definition: diagramproxywidget.cpp:215
UMLScene * linkedDiagram() const
Definition: diagramproxywidget.cpp:43
DiagramProxyWidget(UMLWidget *widget, qreal borderWidth=5)
Definition: diagramproxywidget.cpp:29
const QRectF & clientRect()
Definition: diagramproxywidget.cpp:70
void setShowLinkedDiagram(bool showLinkedDiagram)
Definition: diagramproxywidget.cpp:315
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
Definition: diagramproxywidget.cpp:227
void slotMenuSelection(QAction *action)
Definition: diagramproxywidget.cpp:354
void setupEvent(QGraphicsSceneMouseEvent &e, QGraphicsSceneMouseEvent *event, const QPointF &pos)
Definition: diagramproxywidget.cpp:184
void setClientRect(const QRectF &rect)
Definition: diagramproxywidget.cpp:90
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Definition: diagramproxywidget.cpp:260
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
Definition: diagramproxywidget.cpp:248
void setIconRect(const QRectF &iconRect)
Definition: diagramproxywidget.cpp:297
Definition: umlscene.h:68
The base class for graphical UML objects.
Definition: umlwidget.h:40