mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-20 16:20:52 +01:00
Dynamic element text item : add new feature -> alignment
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5353 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -171,6 +171,17 @@ QColor DiagramTextItem::color() const {
|
|||||||
return defaultTextColor();
|
return defaultTextColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramTextItem::setAlignment(const Qt::Alignment &alignment)
|
||||||
|
{
|
||||||
|
m_alignment = alignment;
|
||||||
|
emit alignmentChanged(alignment);
|
||||||
|
}
|
||||||
|
|
||||||
|
Qt::Alignment DiagramTextItem::alignment() const
|
||||||
|
{
|
||||||
|
return m_alignment;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief DiagramTextItem::paint
|
* @brief DiagramTextItem::paint
|
||||||
* Draw this text field. This method draw the text by calling QGraphicsTextItem::paint.
|
* Draw this text field. This method draw the text by calling QGraphicsTextItem::paint.
|
||||||
@@ -328,6 +339,46 @@ void DiagramTextItem::applyRotation(const qreal &angle) {
|
|||||||
setRotation(QET::correctAngle(rotation()+angle));
|
setRotation(QET::correctAngle(rotation()+angle));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief DiagramTextItem::prepareAlignment
|
||||||
|
* Call this function before changing the bounding rect of this text.
|
||||||
|
*/
|
||||||
|
void DiagramTextItem::prepareAlignment()
|
||||||
|
{
|
||||||
|
m_alignment_rect = mapToParent(boundingRect()).boundingRect();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief DiagramTextItem::finishAlignment
|
||||||
|
* Call this function after changing the bouding rect of this text
|
||||||
|
* to set the position of this text according the alignment property.
|
||||||
|
*/
|
||||||
|
void DiagramTextItem::finishAlignment()
|
||||||
|
{
|
||||||
|
if(m_block_alignment)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QPointF pos = this->pos();
|
||||||
|
|
||||||
|
if(m_alignment &Qt::AlignRight)
|
||||||
|
pos.setX(m_alignment_rect.right() - boundingRect().width());
|
||||||
|
else if(m_alignment &Qt::AlignHCenter)
|
||||||
|
{
|
||||||
|
qreal x = m_alignment_rect.x() + (m_alignment_rect.width()/2);
|
||||||
|
pos.setX(x - boundingRect().width()/2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_alignment &Qt::AlignBottom)
|
||||||
|
pos.setY(m_alignment_rect.bottom() - boundingRect().height());
|
||||||
|
else if(m_alignment &Qt::AlignVCenter)
|
||||||
|
{
|
||||||
|
qreal y = m_alignment_rect.y() + (m_alignment_rect.height()/2);
|
||||||
|
pos.setY(y - boundingRect().height()/2);
|
||||||
|
}
|
||||||
|
|
||||||
|
setPos(pos);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Edit the text with HtmlEditor
|
* @brief Edit the text with HtmlEditor
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -35,10 +35,14 @@ class DiagramTextItem : public QGraphicsTextItem
|
|||||||
|
|
||||||
Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
|
Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
|
||||||
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
|
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
|
||||||
|
Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged)
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void fontSizeChanged(int size);
|
void fontSizeChanged(int size);
|
||||||
void colorChanged(QColor color);
|
void colorChanged(QColor color);
|
||||||
|
void alignmentChanged(Qt::Alignment alignment);
|
||||||
|
void diagramTextChanged(DiagramTextItem *, const QString &, const QString &);
|
||||||
|
void textEdited(const QString &old_str, const QString &new_str);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DiagramTextItem(QGraphicsItem * = nullptr);
|
DiagramTextItem(QGraphicsItem * = nullptr);
|
||||||
@@ -69,6 +73,10 @@ class DiagramTextItem : public QGraphicsTextItem
|
|||||||
|
|
||||||
void setNoEditable(bool e = true) {m_no_editable = e;}
|
void setNoEditable(bool e = true) {m_no_editable = e;}
|
||||||
|
|
||||||
|
void setAlignment(const Qt::Alignment &alignment);
|
||||||
|
Qt::Alignment alignment() const;
|
||||||
|
bool m_block_alignment = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override;
|
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override;
|
||||||
void focusInEvent(QFocusEvent *) override;
|
void focusInEvent(QFocusEvent *) override;
|
||||||
@@ -84,10 +92,9 @@ class DiagramTextItem : public QGraphicsTextItem
|
|||||||
void hoverMoveEvent(QGraphicsSceneHoverEvent *) override;
|
void hoverMoveEvent(QGraphicsSceneHoverEvent *) override;
|
||||||
|
|
||||||
virtual void applyRotation(const qreal &);
|
virtual void applyRotation(const qreal &);
|
||||||
|
void prepareAlignment();
|
||||||
|
void finishAlignment();
|
||||||
|
|
||||||
signals:
|
|
||||||
void diagramTextChanged(DiagramTextItem *, const QString &, const QString &);
|
|
||||||
void textEdited(const QString &old_str, const QString &new_str);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_mouse_hover = false,
|
bool m_mouse_hover = false,
|
||||||
@@ -98,5 +105,9 @@ class DiagramTextItem : public QGraphicsTextItem
|
|||||||
m_previous_text;
|
m_previous_text;
|
||||||
|
|
||||||
QPointF m_mouse_to_origin_movement;
|
QPointF m_mouse_to_origin_movement;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QRectF m_alignment_rect;
|
||||||
|
Qt::Alignment m_alignment = (Qt::AlignTop | Qt::AlignLeft);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -97,6 +97,22 @@ QDomElement DynamicElementTextItem::toXml(QDomDocument &dom_doc) const
|
|||||||
QMetaEnum me = textFromMetaEnum();
|
QMetaEnum me = textFromMetaEnum();
|
||||||
root_element.setAttribute("text_from", me.valueToKey(m_text_from));
|
root_element.setAttribute("text_from", me.valueToKey(m_text_from));
|
||||||
|
|
||||||
|
me = QMetaEnum::fromType<Qt::Alignment>();
|
||||||
|
if(this->alignment() &Qt::AlignRight)
|
||||||
|
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignRight));
|
||||||
|
else if(this->alignment() &Qt::AlignLeft)
|
||||||
|
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignLeft));
|
||||||
|
else if(this->alignment() &Qt::AlignHCenter)
|
||||||
|
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignHCenter));
|
||||||
|
|
||||||
|
if(this->alignment() &Qt::AlignBottom)
|
||||||
|
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignBottom));
|
||||||
|
else if(this->alignment() & Qt::AlignTop)
|
||||||
|
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignTop));
|
||||||
|
else if(this->alignment() &Qt::AlignVCenter)
|
||||||
|
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignVCenter));
|
||||||
|
|
||||||
|
|
||||||
QDomElement dom_text = dom_doc.createElement("text");
|
QDomElement dom_text = dom_doc.createElement("text");
|
||||||
dom_text.appendChild(dom_doc.createTextNode(toPlainText()));
|
dom_text.appendChild(dom_doc.createTextNode(toPlainText()));
|
||||||
root_element.appendChild(dom_text);
|
root_element.appendChild(dom_text);
|
||||||
@@ -140,8 +156,6 @@ void DynamicElementTextItem::fromXml(const QDomElement &dom_elmt)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QGraphicsTextItem::setPos(dom_elmt.attribute("x", QString::number(0)).toDouble(),
|
|
||||||
dom_elmt.attribute("y", QString::number(0)).toDouble());
|
|
||||||
QGraphicsTextItem::setRotation(dom_elmt.attribute("rotation", QString::number(0)).toDouble());
|
QGraphicsTextItem::setRotation(dom_elmt.attribute("rotation", QString::number(0)).toDouble());
|
||||||
setFont(QETApp::diagramTextsFont(dom_elmt.attribute("font_size", QString::number(9)).toInt()));
|
setFont(QETApp::diagramTextsFont(dom_elmt.attribute("font_size", QString::number(9)).toInt()));
|
||||||
m_uuid = QUuid(dom_elmt.attribute("uuid", QUuid::createUuid().toString()));
|
m_uuid = QUuid(dom_elmt.attribute("uuid", QUuid::createUuid().toString()));
|
||||||
@@ -152,6 +166,12 @@ void DynamicElementTextItem::fromXml(const QDomElement &dom_elmt)
|
|||||||
QMetaEnum me = textFromMetaEnum();
|
QMetaEnum me = textFromMetaEnum();
|
||||||
setTextFrom(DynamicElementTextItem::TextFrom(me.keyToValue(dom_elmt.attribute("text_from").toStdString().data())));
|
setTextFrom(DynamicElementTextItem::TextFrom(me.keyToValue(dom_elmt.attribute("text_from").toStdString().data())));
|
||||||
|
|
||||||
|
me = QMetaEnum::fromType<Qt::Alignment>();
|
||||||
|
if(dom_elmt.hasAttribute("Halignment"))
|
||||||
|
setAlignment(Qt::Alignment(me.keyToValue(dom_elmt.attribute("Halignment").toStdString().data())));
|
||||||
|
if(dom_elmt.hasAttribute(("Valignment")))
|
||||||
|
setAlignment(Qt::Alignment(me.keyToValue(dom_elmt.attribute("Valignment").toStdString().data())) | this->alignment());
|
||||||
|
|
||||||
//Text
|
//Text
|
||||||
QDomElement dom_text = dom_elmt.firstChildElement("text");
|
QDomElement dom_text = dom_elmt.firstChildElement("text");
|
||||||
if (!dom_text.isNull())
|
if (!dom_text.isNull())
|
||||||
@@ -174,6 +194,9 @@ void DynamicElementTextItem::fromXml(const QDomElement &dom_elmt)
|
|||||||
|
|
||||||
//Force the update of the displayed text
|
//Force the update of the displayed text
|
||||||
setTextFrom(m_text_from);
|
setTextFrom(m_text_from);
|
||||||
|
|
||||||
|
QGraphicsTextItem::setPos(dom_elmt.attribute("x", QString::number(0)).toDouble(),
|
||||||
|
dom_elmt.attribute("y", QString::number(0)).toDouble());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1291,6 +1314,8 @@ void DynamicElementTextItem::updateXref()
|
|||||||
|
|
||||||
void DynamicElementTextItem::setPlainText(const QString &text)
|
void DynamicElementTextItem::setPlainText(const QString &text)
|
||||||
{
|
{
|
||||||
|
prepareAlignment();
|
||||||
|
|
||||||
DiagramTextItem::setPlainText(text);
|
DiagramTextItem::setPlainText(text);
|
||||||
|
|
||||||
//User define a text width
|
//User define a text width
|
||||||
@@ -1306,6 +1331,8 @@ void DynamicElementTextItem::setPlainText(const QString &text)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
finishAlignment();
|
||||||
|
|
||||||
if(m_Xref_item)
|
if(m_Xref_item)
|
||||||
m_Xref_item->autoPos();
|
m_Xref_item->autoPos();
|
||||||
else if(m_slave_Xref_item)
|
else if(m_slave_Xref_item)
|
||||||
@@ -1323,4 +1350,3 @@ void DynamicElementTextItem::setTextWidth(qreal width)
|
|||||||
m_text_width = width;
|
m_text_width = width;
|
||||||
emit textWidthChanged(width);
|
emit textWidthChanged(width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class DynamicElementTextItem : public DiagramTextItem
|
|||||||
QString reportReplacedCompositeText() const;
|
QString reportReplacedCompositeText() const;
|
||||||
void zoomToLinkedElement();
|
void zoomToLinkedElement();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer <Element> m_parent_element,
|
QPointer <Element> m_parent_element,
|
||||||
m_master_element,
|
m_master_element,
|
||||||
|
|||||||
@@ -551,7 +551,14 @@ bool Element::fromXml(QDomElement &e, QHash<int, Terminal *> &table_id_adr, bool
|
|||||||
!m_element_informations.value("label").toString().isEmpty())
|
!m_element_informations.value("label").toString().isEmpty())
|
||||||
dc.addValue("label", m_element_informations.value("label"));
|
dc.addValue("label", m_element_informations.value("label"));
|
||||||
|
|
||||||
|
//We must to block the update of the alignment when load the information
|
||||||
|
//otherwise the pos of the text will not be the same as it was at save time.
|
||||||
|
for(DynamicElementTextItem *deti : m_dynamic_text_list)
|
||||||
|
deti->m_block_alignment = true;
|
||||||
setElementInformations(dc);
|
setElementInformations(dc);
|
||||||
|
for(DynamicElementTextItem *deti : m_dynamic_text_list)
|
||||||
|
deti->m_block_alignment = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
During the devel of the version 0.7, the "old text" was replaced by the dynamic element text item.
|
During the devel of the version 0.7, the "old text" was replaced by the dynamic element text item.
|
||||||
|
|||||||
94
sources/ui/alignmenttextdialog.cpp
Normal file
94
sources/ui/alignmenttextdialog.cpp
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2006-2017 The QElectroTech Team
|
||||||
|
This file is part of QElectroTech.
|
||||||
|
|
||||||
|
QElectroTech is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
QElectroTech is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include "alignmenttextdialog.h"
|
||||||
|
#include "ui_alignmenttextdialog.h"
|
||||||
|
#include "dynamicelementtextitem.h"
|
||||||
|
|
||||||
|
AlignmentTextDialog::AlignmentTextDialog(DynamicElementTextItem *text, QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::AlignmentTextDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
Qt::Alignment align = text->alignment();
|
||||||
|
if(align == (Qt::AlignTop|Qt::AlignLeft))
|
||||||
|
ui->top_left->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignTop|Qt::AlignHCenter))
|
||||||
|
ui->top->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignTop|Qt::AlignRight))
|
||||||
|
ui->top_right->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignVCenter|Qt::AlignLeft))
|
||||||
|
ui->left->setChecked(true);
|
||||||
|
else if(align == Qt::AlignCenter)
|
||||||
|
ui->center->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignVCenter|Qt::AlignRight))
|
||||||
|
ui->right->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignBottom|Qt::AlignLeft))
|
||||||
|
ui->bottom_left->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignBottom|Qt::AlignHCenter))
|
||||||
|
ui->bottom->setChecked(true);
|
||||||
|
else if(align == (Qt::AlignBottom|Qt::AlignRight))
|
||||||
|
ui->bottom_right->setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
AlignmentTextDialog::~AlignmentTextDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief AlignmentTextDialog::alignment
|
||||||
|
* @return the selected alignment
|
||||||
|
*/
|
||||||
|
Qt::Alignment AlignmentTextDialog::alignment() const
|
||||||
|
{
|
||||||
|
if(ui->top_left->isChecked())
|
||||||
|
return (Qt::AlignTop|Qt::AlignLeft);
|
||||||
|
else if(ui->top->isChecked())
|
||||||
|
return (Qt::AlignTop|Qt::AlignHCenter);
|
||||||
|
else if(ui->top_right->isChecked())
|
||||||
|
return (Qt::AlignTop|Qt::AlignRight);
|
||||||
|
else if(ui->left->isChecked())
|
||||||
|
return (Qt::AlignVCenter|Qt::AlignLeft);
|
||||||
|
else if (ui->center->isChecked())
|
||||||
|
return Qt::AlignCenter;
|
||||||
|
else if(ui->right->isChecked())
|
||||||
|
return (Qt::AlignVCenter|Qt::AlignRight);
|
||||||
|
else if(ui->bottom_left->isChecked())
|
||||||
|
return (Qt::AlignBottom|Qt::AlignLeft);
|
||||||
|
else if(ui->bottom->isChecked())
|
||||||
|
return (Qt::AlignBottom|Qt::AlignHCenter);
|
||||||
|
else if(ui->bottom_right->isChecked())
|
||||||
|
return (Qt::AlignBottom|Qt::AlignRight);
|
||||||
|
else
|
||||||
|
return (Qt::AlignTop|Qt::AlignLeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AlignmentTextDialog::event(QEvent *event)
|
||||||
|
{
|
||||||
|
//Little hack to set focus to a radio button
|
||||||
|
//if we not do that, when the user click on the title bar (for move the dialog) or try to resize the dialog,
|
||||||
|
//the dialog lose focus and close.
|
||||||
|
if(event->type() == QEvent::Show && m_first_show)
|
||||||
|
{
|
||||||
|
QTimer::singleShot(50, [this](){ui->top_left->setFocus();});
|
||||||
|
m_first_show = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDialog::event(event);
|
||||||
|
}
|
||||||
47
sources/ui/alignmenttextdialog.h
Normal file
47
sources/ui/alignmenttextdialog.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2006-2017 The QElectroTech Team
|
||||||
|
This file is part of QElectroTech.
|
||||||
|
|
||||||
|
QElectroTech is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
QElectroTech is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef ALIGNMENTTEXTDIALOG_H
|
||||||
|
#define ALIGNMENTTEXTDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
class DynamicElementTextItem;
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class AlignmentTextDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AlignmentTextDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AlignmentTextDialog(DynamicElementTextItem *text, QWidget *parent = nullptr);
|
||||||
|
~AlignmentTextDialog();
|
||||||
|
|
||||||
|
Qt::Alignment alignment() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool event(QEvent *event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_first_show = true;
|
||||||
|
Ui::AlignmentTextDialog *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ALIGNMENTTEXTDIALOG_H
|
||||||
185
sources/ui/alignmenttextdialog.ui
Normal file
185
sources/ui/alignmenttextdialog.ui
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>AlignmentTextDialog</class>
|
||||||
|
<widget class="QDialog" name="AlignmentTextDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>160</width>
|
||||||
|
<height>158</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>200</horstretch>
|
||||||
|
<verstretch>150</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>160</width>
|
||||||
|
<height>158</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Alignement du texte</string>
|
||||||
|
</property>
|
||||||
|
<property name="modal">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="3">
|
||||||
|
<widget class="QRadioButton" name="right">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="4">
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QRadioButton" name="top">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QRadioButton" name="bottom">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<widget class="QRadioButton" name="top_right">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QRadioButton" name="left">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="3">
|
||||||
|
<widget class="QRadioButton" name="bottom_right">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QRadioButton" name="bottom_left">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QRadioButton" name="top_left">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QRadioButton" name="center">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>AlignmentTextDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>AlignmentTextDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "qeticons.h"
|
#include "qeticons.h"
|
||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
#include "addelementtextcommand.h"
|
#include "addelementtextcommand.h"
|
||||||
|
#include "alignmenttextdialog.h"
|
||||||
|
|
||||||
int src_txt_row = 0;
|
int src_txt_row = 0;
|
||||||
int usr_txt_row = 1;
|
int usr_txt_row = 1;
|
||||||
@@ -45,6 +46,7 @@ int width_txt_row = 7;
|
|||||||
int x_txt_row = 8;
|
int x_txt_row = 8;
|
||||||
int y_txt_row = 9;
|
int y_txt_row = 9;
|
||||||
int rot_txt_row = 10;
|
int rot_txt_row = 10;
|
||||||
|
int align_txt_row = 11;
|
||||||
|
|
||||||
int align_grp_row = 0;
|
int align_grp_row = 0;
|
||||||
int rot_grp_row = 1;
|
int rot_grp_row = 1;
|
||||||
@@ -276,6 +278,19 @@ QList<QStandardItem *> DynamicElementTextModel::itemsForText(DynamicElementTextI
|
|||||||
|
|
||||||
qsi_list.clear();;
|
qsi_list.clear();;
|
||||||
qsi_list << rot << rot_a;
|
qsi_list << rot << rot_a;
|
||||||
|
qsi->appendRow(qsi_list);
|
||||||
|
|
||||||
|
//Alignment
|
||||||
|
QStandardItem *alignment = new QStandardItem(tr("Alignement"));
|
||||||
|
alignment->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
|
|
||||||
|
QStandardItem *alignmenta = new QStandardItem(tr("Éditer"));
|
||||||
|
alignmenta->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||||
|
alignmenta->setData(DynamicElementTextModel::txtAlignment, Qt::UserRole+1);
|
||||||
|
alignmenta->setData(QVariant::fromValue(deti->alignment()), Qt::UserRole+2);
|
||||||
|
|
||||||
|
qsi_list.clear();
|
||||||
|
qsi_list << alignment << alignmenta;
|
||||||
qsi->appendRow(qsi_list);
|
qsi->appendRow(qsi_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -451,6 +466,13 @@ QUndoCommand *DynamicElementTextModel::undoForEditedText(DynamicElementTextItem
|
|||||||
new QPropertyUndoCommand(deti, "compositeText", QVariant(deti->compositeText()), QVariant(composite_text), undo);
|
new QPropertyUndoCommand(deti, "compositeText", QVariant(deti->compositeText()), QVariant(composite_text), undo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Qt::Alignment alignment = text_qsi->child(align_txt_row, 1)->data(Qt::UserRole+2).value<Qt::Alignment>();
|
||||||
|
if (alignment != deti->alignment())
|
||||||
|
{
|
||||||
|
QPropertyUndoCommand *quc = new QPropertyUndoCommand(deti, "alignment", QVariant(deti->alignment()), QVariant(alignment), undo);
|
||||||
|
quc->setText(tr("Modifier l'alignement d'un texte d'élément"));
|
||||||
|
}
|
||||||
|
|
||||||
int fs = text_qsi->child(size_txt_row,1)->data(Qt::EditRole).toInt();
|
int fs = text_qsi->child(size_txt_row,1)->data(Qt::EditRole).toInt();
|
||||||
if (fs != deti->fontSize())
|
if (fs != deti->fontSize())
|
||||||
{
|
{
|
||||||
@@ -1368,6 +1390,22 @@ QWidget *DynamicTextItemDelegate::createEditor(QWidget *parent, const QStyleOpti
|
|||||||
cted->setObjectName("composite_text");
|
cted->setObjectName("composite_text");
|
||||||
return cted;
|
return cted;
|
||||||
}
|
}
|
||||||
|
case DynamicElementTextModel::txtAlignment:
|
||||||
|
{
|
||||||
|
const DynamicElementTextModel *detm = static_cast<const DynamicElementTextModel *>(index.model());
|
||||||
|
QStandardItem *qsi = detm->itemFromIndex(index);
|
||||||
|
|
||||||
|
if(!qsi)
|
||||||
|
break;
|
||||||
|
|
||||||
|
DynamicElementTextItem *deti = detm->textFromIndex(index);
|
||||||
|
if(!deti)
|
||||||
|
break;
|
||||||
|
|
||||||
|
AlignmentTextDialog *atd = new AlignmentTextDialog(deti, parent);
|
||||||
|
atd->setObjectName("alignment_text");
|
||||||
|
return atd;
|
||||||
|
}
|
||||||
case DynamicElementTextModel::size:
|
case DynamicElementTextModel::size:
|
||||||
{
|
{
|
||||||
QSpinBox *sb = new QSpinBox(parent);
|
QSpinBox *sb = new QSpinBox(parent);
|
||||||
@@ -1502,6 +1540,19 @@ void DynamicTextItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (editor->objectName() == "alignment_text")
|
||||||
|
{
|
||||||
|
if(QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
|
||||||
|
{
|
||||||
|
if(QStandardItem *qsi = qsim->itemFromIndex(index))
|
||||||
|
{
|
||||||
|
AlignmentTextDialog *atd = static_cast<AlignmentTextDialog *>(editor);
|
||||||
|
Qt::Alignment align = atd->alignment();
|
||||||
|
qsi->setData(QVariant::fromValue(align), Qt::UserRole+2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (editor->objectName() == "group_alignment")
|
else if (editor->objectName() == "group_alignment")
|
||||||
{
|
{
|
||||||
if(QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
|
if(QStandardItemModel *qsim = dynamic_cast<QStandardItemModel *>(model))
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class DynamicElementTextModel : public QStandardItemModel
|
|||||||
userText,
|
userText,
|
||||||
infoText,
|
infoText,
|
||||||
compositeText,
|
compositeText,
|
||||||
|
txtAlignment,
|
||||||
size,
|
size,
|
||||||
color,
|
color,
|
||||||
pos,
|
pos,
|
||||||
|
|||||||
Reference in New Issue
Block a user