mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-24 03:10:52 +01:00
Dynamic element text can have a frame
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5093 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -104,6 +104,7 @@ const QDomElement PartDynamicTextField::toXml(QDomDocument &dom_doc) const
|
||||
root_element.setAttribute("rotation", QString::number(QET::correctAngle(rotation())));
|
||||
root_element.setAttribute("font_size", font().pointSize());
|
||||
root_element.setAttribute("uuid", m_uuid.toString());
|
||||
root_element.setAttribute("frame", m_frame? "true" : "false");
|
||||
|
||||
|
||||
QMetaEnum me = DynamicElementTextItem::textFromMetaEnum();
|
||||
@@ -165,6 +166,7 @@ void PartDynamicTextField::fromXml(const QDomElement &dom_elmt)
|
||||
QGraphicsTextItem::setRotation(dom_elmt.attribute("rotation", QString::number(0)).toDouble());
|
||||
setFont(QETApp::diagramTextsFont(dom_elmt.attribute("font_size", QString::number(9)).toInt()));
|
||||
m_uuid = QUuid(dom_elmt.attribute("uuid", QUuid::createUuid().toString()));
|
||||
m_frame = dom_elmt.attribute("frame", "false") == "true"? true : false;
|
||||
|
||||
QMetaEnum me = DynamicElementTextItem::textFromMetaEnum();
|
||||
m_text_from = DynamicElementTextItem::TextFrom(me.keyToValue(dom_elmt.attribute("text_from").toStdString().data()));
|
||||
@@ -349,6 +351,18 @@ int PartDynamicTextField::fontSize() const {
|
||||
return font().pointSize();
|
||||
}
|
||||
|
||||
void PartDynamicTextField::setFrame(bool frame)
|
||||
{
|
||||
m_frame = frame;
|
||||
update();
|
||||
emit frameChanged(m_frame);
|
||||
}
|
||||
|
||||
bool PartDynamicTextField::frame() const
|
||||
{
|
||||
return m_frame;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief PartDynamicTextField::mouseMoveEvent
|
||||
* @param event
|
||||
@@ -408,3 +422,43 @@ QVariant PartDynamicTextField::itemChange(QGraphicsItem::GraphicsItemChange chan
|
||||
|
||||
return(QGraphicsTextItem::itemChange(change, value));
|
||||
}
|
||||
|
||||
void PartDynamicTextField::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||||
{
|
||||
QGraphicsTextItem::paint(painter, option, widget);
|
||||
|
||||
if (m_frame)
|
||||
{
|
||||
painter->save();
|
||||
painter->setFont(QETApp::diagramTextsFont(fontSize()));
|
||||
|
||||
//Adjust the thickness according to the font size,
|
||||
qreal w=0.3;
|
||||
if(fontSize() >= 5)
|
||||
{
|
||||
w = (qreal)fontSize()*0.1;
|
||||
if(w > 2.5)
|
||||
w = 2.5;
|
||||
}
|
||||
|
||||
QPen pen;
|
||||
pen.setColor(color());
|
||||
pen.setWidthF(w);
|
||||
painter->setPen(pen);
|
||||
painter->setRenderHint(QPainter::Antialiasing);
|
||||
|
||||
//Get the bounding rectangle of the text
|
||||
QRectF text_bounding = painter->boundingRect(boundingRect(), toPlainText());
|
||||
//Center text_bounding in the bounding rect of this
|
||||
text_bounding.moveTop((boundingRect().height()-text_bounding.height())/2);
|
||||
text_bounding.moveLeft((boundingRect().width() - text_bounding.width())/2);
|
||||
//adjust only for better visual
|
||||
text_bounding.adjust(-2,0,2,0);
|
||||
|
||||
//Adjust the rounding of the rectangle according to the size of the font
|
||||
qreal ro = (qreal)fontSize()/3;
|
||||
painter->drawRoundedRect(text_bounding, ro, ro);
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
|
||||
Q_PROPERTY(QString compositeText READ compositeText WRITE setCompositeText NOTIFY compositeTextChanged)
|
||||
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
|
||||
Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
|
||||
Q_PROPERTY(bool frame READ frame WRITE setFrame NOTIFY frameChanged)
|
||||
|
||||
public:
|
||||
static bool canImportFromTextField(const QDomElement &dom_element);
|
||||
@@ -57,6 +58,7 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
|
||||
void compositeTextChanged(QString text);
|
||||
void colorChanged(QColor color);
|
||||
void fontSizeChanged(int size);
|
||||
void frameChanged(bool frame);
|
||||
|
||||
public:
|
||||
PartDynamicTextField(QETElementEditor *editor, QGraphicsItem *parent = nullptr);
|
||||
@@ -89,12 +91,15 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
|
||||
QColor color() const;
|
||||
void setFontSize(int s);
|
||||
int fontSize()const;
|
||||
void setFrame(bool frame);
|
||||
bool frame() const;
|
||||
|
||||
protected:
|
||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||
|
||||
private:
|
||||
QPointF m_origine_pos,
|
||||
@@ -107,6 +112,7 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
|
||||
DynamicElementTextItem::TextFrom m_text_from = DynamicElementTextItem::UserText;
|
||||
QUuid m_uuid;
|
||||
|
||||
bool m_frame = false;
|
||||
};
|
||||
|
||||
#endif // PARTDYNAMICTEXTFIELD_H
|
||||
|
||||
@@ -74,6 +74,7 @@ bool DynamicTextFieldEditor::setPart(CustomElementPart *part)
|
||||
m_connection_list << connect(m_text_field.data(), &PartDynamicTextField::textChanged, [this](){this->updateForm();});
|
||||
m_connection_list << connect(m_text_field.data(), &PartDynamicTextField::infoNameChanged, [this](){this->updateForm();});
|
||||
m_connection_list << connect(m_text_field.data(), &PartDynamicTextField::rotationChanged, [this](){this->updateForm();});
|
||||
m_connection_list << connect(m_text_field.data(), &PartDynamicTextField::frameChanged, [this](){this->updateForm();});
|
||||
m_connection_list << connect(m_text_field.data(), &PartDynamicTextField::compositeTextChanged, [this]() {this->updateForm();});
|
||||
|
||||
return true;
|
||||
@@ -95,6 +96,7 @@ void DynamicTextFieldEditor::updateForm()
|
||||
ui->m_x_sb->setValue(m_text_field.data()->x());
|
||||
ui->m_y_sb->setValue(m_text_field.data()->y());
|
||||
ui->m_rotation_sb->setValue(QET::correctAngle(m_text_field.data()->rotation()));
|
||||
ui->m_frame_cb->setChecked(m_text_field.data()->frame());
|
||||
ui->m_user_text_le->setText(m_text_field.data()->text());
|
||||
ui->m_size_sb->setValue(m_text_field.data()->fontSize());
|
||||
ui->m_tagg_le->setText(m_text_field.data()->tagg());
|
||||
@@ -112,7 +114,7 @@ void DynamicTextFieldEditor::setColorPushButton(QColor color)
|
||||
void DynamicTextFieldEditor::on_m_x_sb_editingFinished()
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "x", m_text_field.data()->x(), ui->m_x_sb->value());
|
||||
undo->setText(tr("Déplacer un champ texte dynamique"));
|
||||
undo->setText(tr("Déplacer un champ texte"));
|
||||
undo->enableAnimation(true);
|
||||
undoStack().push(undo);
|
||||
}
|
||||
@@ -120,7 +122,7 @@ void DynamicTextFieldEditor::on_m_x_sb_editingFinished()
|
||||
void DynamicTextFieldEditor::on_m_y_sb_editingFinished()
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "y", m_text_field.data()->y(), ui->m_y_sb->value());
|
||||
undo->setText(tr("Déplacer un champ texte dynamique"));
|
||||
undo->setText(tr("Déplacer un champ texte"));
|
||||
undo->enableAnimation(true);
|
||||
undoStack().push(undo);
|
||||
}
|
||||
@@ -128,7 +130,7 @@ void DynamicTextFieldEditor::on_m_y_sb_editingFinished()
|
||||
void DynamicTextFieldEditor::on_m_rotation_sb_editingFinished()
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "rotation", m_text_field.data()->rotation(), ui->m_rotation_sb->value());
|
||||
undo->setText(tr("Pivoter un champ texte dynamique"));
|
||||
undo->setText(tr("Pivoter un champ texte"));
|
||||
undo->enableAnimation(true);
|
||||
undoStack().push(undo);
|
||||
}
|
||||
@@ -136,14 +138,14 @@ void DynamicTextFieldEditor::on_m_rotation_sb_editingFinished()
|
||||
void DynamicTextFieldEditor::on_m_user_text_le_editingFinished()
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "text", m_text_field.data()->text(), ui->m_user_text_le->text());
|
||||
undo->setText(tr("Modifier le texte d'un champ texte dynamique"));
|
||||
undo->setText(tr("Modifier le texte d'un champ texte"));
|
||||
undoStack().push(undo);
|
||||
}
|
||||
|
||||
void DynamicTextFieldEditor::on_m_size_sb_editingFinished()
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "fontSize", m_text_field.data()->fontSize(), ui->m_size_sb->value());
|
||||
undo->setText(tr("Modifier la taille d'un champ texte dynamique"));
|
||||
undo->setText(tr("Modifier la taille d'un champ texte"));
|
||||
undo->enableAnimation(true);
|
||||
undoStack().push(undo);
|
||||
}
|
||||
@@ -155,8 +157,20 @@ void DynamicTextFieldEditor::on_m_color_pb_clicked()
|
||||
if(color.isValid() && color != m_text_field.data()->color())
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "color", m_text_field.data()->color(), color);
|
||||
undo->setText(tr("Modifier la couleur d'un champ texte dynamique"));
|
||||
undo->setText(tr("Modifier la couleur d'un champ texte"));
|
||||
undoStack().push(undo);
|
||||
setColorPushButton(m_text_field.data()->color());
|
||||
}
|
||||
}
|
||||
|
||||
void DynamicTextFieldEditor::on_m_frame_cb_clicked()
|
||||
{
|
||||
bool frame = ui->m_frame_cb->isChecked();
|
||||
|
||||
if(frame != m_text_field.data()->frame())
|
||||
{
|
||||
QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field, "frame", m_text_field.data()->frame(), frame);
|
||||
undo->setText(tr("Modifier le cadre d'un champ texte"));
|
||||
undoStack().push(undo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,8 @@ class DynamicTextFieldEditor : public ElementItemEditor
|
||||
void on_m_rotation_sb_editingFinished();
|
||||
void on_m_user_text_le_editingFinished();
|
||||
void on_m_size_sb_editingFinished();
|
||||
void on_m_color_pb_clicked();
|
||||
void on_m_color_pb_clicked();
|
||||
void on_m_frame_cb_clicked();
|
||||
|
||||
private:
|
||||
Ui::DynamicTextFieldEditor *ui;
|
||||
|
||||
@@ -143,6 +143,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="m_frame_cb">
|
||||
<property name="text">
|
||||
<string>cadre</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
Reference in New Issue
Block a user