QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
dynamicelementtextitem.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2026 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 QElectroTech is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef DYNAMICELEMENTTEXTITEM_H
19#define DYNAMICELEMENTTEXTITEM_H
20
22#include "diagramtextitem.h"
23#include "element.h"
24
25#include <QPointer>
26#include <QUuid>
27
28class Element;
29class Conductor;
31class CrossRefItem;
32
40{
43 friend class Element;
44
45 Q_OBJECT
46
47 Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
49 Q_PROPERTY(QString infoName READ infoName WRITE setInfoName NOTIFY infoNameChanged)
51 Q_PROPERTY(bool frame READ frame WRITE setFrame NOTIFY frameChanged)
52 Q_PROPERTY(qreal textWidth READ textWidth WRITE setTextWidth NOTIFY textWidthChanged)
55 public:
56
62 Q_ENUM (TextFrom)
63 enum {Type = UserType + 1010};
64 int type() const override {return Type;}
65
66 signals:
67 void textChanged(QString text);
69 void infoNameChanged(QString info);
71 void frameChanged(bool frame);
73 void textWidthChanged(qreal width);
75 void rotationPointCenterChanged(bool center);
76
77 public:
78 DynamicElementTextItem(Element *parent_element);
79 ~DynamicElementTextItem() override;
80 static QMetaEnum textFromMetaEnum();
81 private:
84
85 public:
86 QDomElement toXml(QDomDocument &dom_doc) const override;
87 void fromXml(const QDomElement &dom_elmt) override;
88
89 Element *parentElement() const;
91 QGraphicsTextItem *slaveXrefItem() const { return m_slave_Xref_item; }
95 Element *masterElement() const;
99
102 QString text() const;
103 void setText(const QString &text);
104 static QString xmlTagName() {return QString("dynamic_elmt_text");}
105 void setInfoName(const QString &info_name);
106 QString infoName() const;
107 void setCompositeText(const QString &text);
108 QString compositeText() const;
109 void setFrame(const bool frame);
110 bool frame() const;
111 QUuid uuid() const;
112 void updateXref();
113 void setPlainText(const QString &text);
114 void setTextWidth(qreal width);
115 void setXref_item(Qt::AlignmentFlag m_exHrefPos, int slave_offset = 0);
116
117 void setKeepVisualRotation(bool set);
118 bool keepVisualRotation() const;
119
120 void setRotationPointCenter(bool set);
121 bool rotationPointCenter() const;
122
123 protected:
124 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
125 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
126 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
127 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
128 void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
129 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
130 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
131 QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
132 bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) override;
133
134 private:
135 void elementInfoChanged();
136 void masterChanged();
137 void reportChanged();
139 void setConnectionForReportFormula(const QString &formula);
140 void removeConnectionForReportFormula(const QString &formula);
144 void updateReportText();
145 void updateLabel();
146 void conductorWasAdded(Conductor *conductor);
147 void conductorWasRemoved(Conductor *conductor);
150 QString reportReplacedCompositeText() const;
151 void zoomToLinkedElement();
153 void thisRotationChanged();
154
155 private:
156 QPointer <Element>
160 QPointer <Conductor> m_watched_conductor;
161 QString
168 QUuid m_uuid;
169 QMetaObject::Connection m_report_formula_con;
170 QList<QMetaObject::Connection>
174 bool
175 m_frame = false,
178 QGraphicsTextItem *m_slave_Xref_item = nullptr;
179 qreal m_text_width = -1;
184 bool m_move_parent = true;
185};
186
187#endif // DYNAMICELEMENTTEXTITEM_H
Definition conductor.h:44
The CrossRefItem class This clas provide an item, for show the cross reference, like the contacts lin...
Definition crossrefitem.h:47
DiagramTextItem(QGraphicsItem *=nullptr)
DiagramTextItem::DiagramTextItem.
Definition diagramtextitem.cpp:29
friend class Element
Definition dynamicelementtextitem.h:43
void textFromChanged(DynamicElementTextItem::TextFrom text_from)
void textChanged(QString text)
void parentElementRotationChanged()
DynamicElementTextItem::parentElementRotationChanged Called when the parent element is rotated.
Definition dynamicelementtextitem.cpp:1332
qreal m_text_width
Definition dynamicelementtextitem.h:179
QString text
Definition dynamicelementtextitem.h:47
void keepVisualRotationChanged(bool keep)
void setXref_item(Qt::AlignmentFlag m_exHrefPos, int slave_offset=0)
Definition dynamicelementtextitem.cpp:1546
bool rotationPointCenter
Definition dynamicelementtextitem.h:54
void clearFormulaConnection()
Definition dynamicelementtextitem.cpp:1055
void setConnectionForReportFormula(const QString &formula)
Definition dynamicelementtextitem.cpp:958
void setupFormulaConnection()
DynamicElementTextItem::setupFormulaConnection Setup the required connection for the formula of the l...
Definition dynamicelementtextitem.cpp:1017
void setRotationPointCenter(bool set)
Definition dynamicelementtextitem.cpp:1611
void setInfoName(const QString &info_name)
DynamicElementTextItem::setInfoName Set the information name of the parent element.
Definition dynamicelementtextitem.cpp:440
QString m_composite_text
Definition dynamicelementtextitem.h:164
bool m_keep_visual_rotation
Definition dynamicelementtextitem.h:181
void setPotentialConductor()
DynamicElementTextItem::setPotentialConductor This function is only used when the parent element of t...
Definition dynamicelementtextitem.cpp:1163
Element * parentElement() const
DynamicElementTextItem::ParentElement.
Definition dynamicelementtextitem.cpp:234
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
DynamicElementTextItem::hoverLeaveEvent.
Definition dynamicelementtextitem.cpp:701
void updateReportText()
DynamicElementTextItem::updateReportText This function is only use when this text is owned by a repor...
Definition dynamicelementtextitem.cpp:1077
QList< QMetaObject::Connection > m_update_slave_Xref_connection
Definition dynamicelementtextitem.h:172
Element * elementUseForInfo() const
DynamicElementTextItem::elementUseForInfo.
Definition dynamicelementtextitem.cpp:289
QString m_report_formula
Definition dynamicelementtextitem.h:165
void rotationPointCenterChanged(bool center)
QPointer< Conductor > m_watched_conductor
Definition dynamicelementtextitem.h:160
void removeConnectionForReportFormula(const QString &formula)
Definition dynamicelementtextitem.cpp:987
static QMetaEnum textFromMetaEnum()
DynamicElementTextItem::textFromMetaEnum.
Definition dynamicelementtextitem.cpp:75
void setCompositeText(const QString &text)
DynamicElementTextItem::setCompositeText Set the composite text of this text item to text.
Definition dynamicelementtextitem.cpp:496
QString m_info_name
Definition dynamicelementtextitem.h:163
QMetaObject::Connection m_report_formula_con
Definition dynamicelementtextitem.h:169
QUuid uuid() const
Definition dynamicelementtextitem.cpp:561
DynamicElementTextItem()
Definition dynamicelementtextitem.cpp:81
TextFrom textFrom
Definition dynamicelementtextitem.h:48
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition dynamicelementtextitem.cpp:713
QString m_F_str
Definition dynamicelementtextitem.h:166
friend class CompositeTextEditDialog
Definition dynamicelementtextitem.h:42
int type() const override
Definition dynamicelementtextitem.h:64
bool frame
Definition dynamicelementtextitem.h:51
QString reportReplacedCompositeText() const
DynamicElementTextItem::reportReplacedCompositeText This function is only used when the parent elemen...
Definition dynamicelementtextitem.cpp:1242
QList< QMetaObject::Connection > m_formula_connection
Definition dynamicelementtextitem.h:171
bool m_rotation_point_center
Definition dynamicelementtextitem.h:182
DynamicElementTextItem(Element *parent_element)
DynamicElementTextItem::DynamicElementTextItem Constructor.
Definition dynamicelementtextitem.cpp:40
QPointF m_initial_position
Definition dynamicelementtextitem.h:180
QGraphicsTextItem * m_slave_Xref_item
Definition dynamicelementtextitem.h:178
QString m_text
Definition dynamicelementtextitem.h:162
void conductorWasAdded(Conductor *conductor)
DynamicElementTextItem::conductorWasAdded Function only use when parent element is a folio report.
Definition dynamicelementtextitem.cpp:1134
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
DynamicElementTextItem::mousePressEvent.
Definition dynamicelementtextitem.cpp:570
CrossRefItem * masterXrefItem() const
Definition dynamicelementtextitem.h:94
QString infoName
Definition dynamicelementtextitem.h:49
void textWidthChanged(qreal width)
void compositeTextChanged(QString text)
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
DynamicElementTextItem::mouseMoveEvent.
Definition dynamicelementtextitem.cpp:597
DynamicElementTextItem(const DynamicElementTextItem &)
bool m_move_parent
Definition dynamicelementtextitem.h:184
qreal m_visual_rotation_ref
Definition dynamicelementtextitem.h:183
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
DynamicElementTextItem::hoverEnterEvent If the parent element of this text is a folio report or a sla...
Definition dynamicelementtextitem.cpp:677
void refreshLabelConnection()
DynamicElementTextItem::refreshLabelConnection Refresh the connection of this text when the source of...
Definition dynamicelementtextitem.cpp:330
static QString xmlTagName()
Definition dynamicelementtextitem.h:104
void thisRotationChanged()
DynamicElementTextItem::thisRotationChanged This function is called when user change the rotation of ...
Definition dynamicelementtextitem.cpp:1351
bool keepVisualRotation
Definition dynamicelementtextitem.h:53
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
DynamicElementTextItem::mouseReleaseEvent.
Definition dynamicelementtextitem.cpp:640
void setTextFrom(DynamicElementTextItem::TextFrom text_from)
DynamicElementTextItem::setTextFrom Set the final text is created from.
Definition dynamicelementtextitem.cpp:363
void elementInfoChanged()
Definition dynamicelementtextitem.cpp:829
QString compositeText
Definition dynamicelementtextitem.h:50
void conductorPropertiesChanged()
DynamicElementTextItem::conductorPropertiesChanged This function is only used when the parent element...
Definition dynamicelementtextitem.cpp:1214
QDomElement toXml(QDomDocument &dom_doc) const override
DynamicElementTextItem::toXml Export this text to xml.
Definition dynamicelementtextitem.cpp:90
void setPlainText(const QString &text)
Definition dynamicelementtextitem.cpp:1489
DynamicElementTextItem::TextFrom m_text_from
Definition dynamicelementtextitem.h:167
void setTextWidth(qreal width)
Definition dynamicelementtextitem.cpp:1539
void fromXml(const QDomElement &dom_elmt) override
DynamicElementTextItem::fromXml Import this text from xml.
Definition dynamicelementtextitem.cpp:159
QPointer< Element > m_master_element
Definition dynamicelementtextitem.h:158
void infoNameChanged(QString info)
void updateReportFormulaConnection()
Definition dynamicelementtextitem.cpp:1062
QUuid m_uuid
Definition dynamicelementtextitem.h:168
bool m_frame
Definition dynamicelementtextitem.h:175
void updateLabel()
DynamicElementTextItem::updateLabel Update the displayed text, when this dynamic text is based on the...
Definition dynamicelementtextitem.cpp:1108
void setFrame(const bool frame)
Definition dynamicelementtextitem.cpp:549
TextFrom
Definition dynamicelementtextitem.h:57
@ CompositeText
Definition dynamicelementtextitem.h:60
@ ElementInfo
Definition dynamicelementtextitem.h:59
@ UserText
Definition dynamicelementtextitem.h:58
void setKeepVisualRotation(bool set)
Definition dynamicelementtextitem.cpp:1591
void masterChanged()
DynamicElementTextItem::masterChanged This function is only use when the parent element is a slave....
Definition dynamicelementtextitem.cpp:877
friend class DynamicTextItemDelegate
Definition dynamicelementtextitem.h:41
QGraphicsTextItem * slaveXrefItem() const
PDF export: slave cross-reference text item ("(folio-pos)") and its master target.
Definition dynamicelementtextitem.h:91
CrossRefItem * m_Xref_item
Definition dynamicelementtextitem.h:177
bool m_first_scene_change
Definition dynamicelementtextitem.h:176
bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) override
Definition dynamicelementtextitem.cpp:808
void frameChanged(bool frame)
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
Definition dynamicelementtextitem.cpp:745
void setText(const QString &text)
DynamicElementTextItem::setText Set the text of this text.
Definition dynamicelementtextitem.cpp:427
~DynamicElementTextItem() override
Definition dynamicelementtextitem.cpp:68
Element * masterElement() const
DynamicElementTextItem::masterElement.
Definition dynamicelementtextitem.cpp:262
void zoomToLinkedElement()
DynamicElementTextItem::zoomToLinkedElement If the parent element is a folio report or a slave elemen...
Definition dynamicelementtextitem.cpp:1297
@ Type
Definition dynamicelementtextitem.h:63
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
DynamicElementTextItem::mouseDoubleClickEvent Reimplemented functions, for add extra feature when thi...
Definition dynamicelementtextitem.cpp:664
qreal textWidth
Definition dynamicelementtextitem.h:52
ElementTextItemGroup * parentGroup() const
DynamicElementTextItem::parentGroup.
Definition dynamicelementtextitem.cpp:244
void conductorWasRemoved(Conductor *conductor)
DynamicElementTextItem::conductorWasRemoved Function only use when parent element is a folio report.
Definition dynamicelementtextitem.cpp:1148
void reportFormulaChanged()
DynamicElementTextItem::reportFormulaChanged The report formula use in the project was changed.
Definition dynamicelementtextitem.cpp:950
void updateXref()
DynamicElementTextItem::updateXref Create or delete the Xref according to the current properties of t...
Definition dynamicelementtextitem.cpp:1359
QPointer< Element > m_parent_element
Definition dynamicelementtextitem.h:157
QPointer< Element > m_other_report
Definition dynamicelementtextitem.h:159
QColor m_user_color
Definition dynamicelementtextitem.h:173
void reportChanged()
DynamicElementTextItem::reportChanged This function is only use when parent element of this text is a...
Definition dynamicelementtextitem.cpp:905
Definition element.h:44
The ElementTextItemGroup class This class represent a group of element text Texts in the group can be...
Definition elementtextitemgroup.h:36