QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
partdynamictextfield.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 PARTDYNAMICTEXTFIELD_H
19#define PARTDYNAMICTEXTFIELD_H
20
22#include "QGraphicsTextItem"
23#include "customelementpart.h"
24
33class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
34{
35 Q_OBJECT
36
37 Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
38 Q_PROPERTY(DynamicElementTextItem::TextFrom textFrom READ textFrom WRITE setTextFrom NOTIFY textFromChanged)
39 Q_PROPERTY(QString infoName READ infoName WRITE setInfoName NOTIFY infoNameChanged)
41 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
42 Q_PROPERTY(bool frame READ frame WRITE setFrame NOTIFY frameChanged)
43 Q_PROPERTY(qreal textWidth READ textWidth WRITE setTextWidth NOTIFY textWidthChanged)
44 Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged)
45 Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
48
49 public:
51 void setProperty(const char *name, const QVariant &value) override {QGraphicsTextItem::setProperty(name, value);}
52 QVariant property(const char *name) const override {return QGraphicsTextItem::property(name);}
53
54 signals:
55 void taggChanged(QString tagg);
56 void textChanged(QString text);
58 void infoNameChanged(QString info);
60 void colorChanged(QColor color);
61 void frameChanged(bool frame);
62 void textWidthChanged(qreal width);
63 void alignmentChanged(Qt::Alignment alignment);
64 void fontChanged(QFont font);
66 void rotationPointCenterChanged(bool center);
67
68 public:
69 PartDynamicTextField(QETElementEditor *editor, QGraphicsItem *parent = nullptr);
70
71 enum {Type = UserType + 1110};
72 int type() const override {return Type;}
73
74 QString name() const override;
75 QString xmlName() const override;
76 static QString xmlTaggName() {return QString("dynamic_text");}
77 bool isUseless() const override {return false;}
78 QRectF sceneGeometricRect() const override {return sceneBoundingRect();}
79 void startUserTransformation(const QRectF &initial_selection_rect) override;
80 void handleUserTransformation(const QRectF &initial_selection_rect, const QRectF &new_selection_rect) override;
81
82 const QDomElement toXml(QDomDocument &dom_doc) const override;
83 void fromXml(const QDomElement &dom_elmt) override;
84 void fromTextFieldXml(const QDomElement &dom_element);
85
88 QString text() const;
89 void setText(const QString &text);
90 void setInfoName(const QString &info_name);
91 QString infoName() const;
92 void setCompositeText(const QString &text);
93 QString compositeText() const;
94 void setColor(const QColor& color);
95 QColor color() const;
96 void setFrame(bool frame);
97 bool frame() const;
98 void setTextWidth(qreal width);
99 void setPlainText(const QString &text);
100 void setAlignment(Qt::Alignment alignment);
101 Qt::Alignment alignment() const;
102 void setFont(const QFont &font);
103 void setKeepVisualRotation(const bool &keep);
104 bool keepVisualRotation() const;
105 void setRotationPointCenter(const bool &center);
106 bool rotationPointCenter() const;
107
108 void setRotation(qreal angle);
109 void mirror(qreal axis_x = 0);
110 void flip(qreal axis_y = 0);
111
112
113 protected:
114 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
115 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
116 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
117 QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
118 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
119
120 private:
121 void elementInfoChanged();
122 void prepareAlignment();
123 void finishAlignment();
124
125 private:
128 QString m_text,
132 QUuid m_uuid;
133 bool m_frame = false,
138 qreal m_text_width = -1;
139 Qt::Alignment m_alignment = Qt::AlignTop|Qt::AlignLeft;
141};
142
143#endif // PARTDYNAMICTEXTFIELD_H
CustomElementPart(QETElementEditor *editor)
CustomElementPart Constructor.
Definition customelementpart.h:48
The DynamicElementTextItem class This class provide a simple text field of element who can be added o...
Definition dynamicelementtextitem.h:40
TextFrom
Definition dynamicelementtextitem.h:57
@ UserText
Definition dynamicelementtextitem.h:58
qreal textWidth
Definition partdynamictextfield.h:43
QString compositeText
Definition partdynamictextfield.h:40
void fromTextFieldXml(const QDomElement &dom_element)
PartDynamicTextField::fromTextFieldXml Setup this text from the xml definition of a text field (The x...
Definition partdynamictextfield.cpp:282
QString infoName
Definition partdynamictextfield.h:39
QVariant property(const char *name) const override
Definition partdynamictextfield.h:52
Qt::Alignment alignment
Definition partdynamictextfield.h:44
QFont font
Definition partdynamictextfield.h:45
void alignmentChanged(Qt::Alignment alignment)
static QString xmlTaggName()
Definition partdynamictextfield.h:76
void setRotation(qreal angle)
Definition partdynamictextfield.cpp:71
void colorChanged(QColor color)
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
PartDynamicTextField::mouseMoveEvent.
Definition partdynamictextfield.cpp:515
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
Definition partdynamictextfield.cpp:581
void setRotationPointCenter(const bool &center)
Definition partdynamictextfield.cpp:497
void setCompositeText(const QString &text)
PartDynamicTextField::setCompositeText Set the composite text of this text item to text.
Definition partdynamictextfield.cpp:388
void flip(qreal axis_y=0)
Definition partdynamictextfield.cpp:89
bool isUseless() const override
Definition partdynamictextfield.h:77
void infoNameChanged(QString info)
void elementInfoChanged()
PartDynamicTextField::elementInfoChanged Used to up to date this text field, when the element informa...
Definition partdynamictextfield.cpp:630
void handleUserTransformation(const QRectF &initial_selection_rect, const QRectF &new_selection_rect) override
PartDynamicTextField::handleUserTransformation.
Definition partdynamictextfield.cpp:120
QString name() const override
Definition partdynamictextfield.cpp:55
void setAlignment(Qt::Alignment alignment)
Definition partdynamictextfield.cpp:463
QPointF m_origin_pos
Definition partdynamictextfield.h:126
void setText(const QString &text)
PartDynamicTextField::setText Set the text of this text.
Definition partdynamictextfield.cpp:362
QUuid m_uuid
Definition partdynamictextfield.h:132
void prepareAlignment()
Definition partdynamictextfield.cpp:642
DynamicElementTextItem::TextFrom textFrom
Definition partdynamictextfield.h:38
DynamicElementTextItem::TextFrom m_text_from
Definition partdynamictextfield.h:131
bool keepVisualRotation
Definition partdynamictextfield.h:46
void setTextWidth(qreal width)
Definition partdynamictextfield.cpp:433
void keepVisualRotationChanged(bool keep)
int type() const override
Definition partdynamictextfield.h:72
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
PartDynamicTextField::mousePressEvent.
Definition partdynamictextfield.cpp:532
QString xmlName() const override
Definition partdynamictextfield.cpp:60
void rotationPointCenterChanged(bool center)
qreal m_text_width
Definition partdynamictextfield.h:138
void setFrame(bool frame)
Definition partdynamictextfield.cpp:422
bool m_keep_visual_rotation
Definition partdynamictextfield.h:136
void taggChanged(QString tagg)
bool m_rotation_point_center
Definition partdynamictextfield.h:137
void setFont(const QFont &font)
Definition partdynamictextfield.cpp:473
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
PartDynamicTextField::itemChange.
Definition partdynamictextfield.cpp:563
PartDynamicTextField(QETElementEditor *editor, QGraphicsItem *parent=nullptr)
Definition partdynamictextfield.cpp:30
void startUserTransformation(const QRectF &initial_selection_rect) override
PartDynamicTextField::startUserTransformation.
Definition partdynamictextfield.cpp:108
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
PartDynamicTextField::mouseReleaseEvent.
Definition partdynamictextfield.cpp:543
QString m_text
Definition partdynamictextfield.h:128
void textWidthChanged(qreal width)
void setPlainText(const QString &text)
Definition partdynamictextfield.cpp:444
void setKeepVisualRotation(const bool &keep)
Definition partdynamictextfield.cpp:483
void textFromChanged(DynamicElementTextItem::TextFrom text_from)
@ Type
Definition partdynamictextfield.h:71
bool m_first_add
Definition partdynamictextfield.h:134
const QDomElement toXml(QDomDocument &dom_doc) const override
PartDynamicTextField::toXml.
Definition partdynamictextfield.cpp:134
void compositeTextChanged(QString text)
QString m_info_name
Definition partdynamictextfield.h:129
void mirror(qreal axis_x=0)
Definition partdynamictextfield.cpp:77
void setTextFrom(DynamicElementTextItem::TextFrom text_from)
PartDynamicTextField::setTextFrom Set the final text is created from.
Definition partdynamictextfield.cpp:330
QRectF m_alignment_rect
Definition partdynamictextfield.h:140
void setProperty(const char *name, const QVariant &value) override
PROPERTY.
Definition partdynamictextfield.h:51
QRectF sceneGeometricRect() const override
Definition partdynamictextfield.h:78
bool m_block_alignment
Definition partdynamictextfield.h:135
void textChanged(QString text)
Qt::Alignment m_alignment
Definition partdynamictextfield.h:139
void finishAlignment()
Definition partdynamictextfield.cpp:647
void fontChanged(QFont font)
QString text
Definition partdynamictextfield.h:37
void fromXml(const QDomElement &dom_elmt) override
PartDynamicTextField::fromXml.
Definition partdynamictextfield.cpp:203
QString m_composite_text
Definition partdynamictextfield.h:130
bool m_frame
Definition partdynamictextfield.h:133
bool rotationPointCenter
Definition partdynamictextfield.h:47
bool frame
Definition partdynamictextfield.h:42
void setColor(const QColor &color)
PartDynamicTextField::setColor.
Definition partdynamictextfield.cpp:408
void frameChanged(bool frame)
QPointF m_saved_point
Definition partdynamictextfield.h:127
QColor color
Definition partdynamictextfield.h:41
void setInfoName(const QString &info_name)
Definition partdynamictextfield.cpp:368
Definition qetelementeditor.h:39