Element editor : When open a .elmt file in the element editor, the texts field are converted to dynamic text field, except for text field with tagg : label, function and tension/protocol.

In other words every text without tagg are converted.


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5050 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2017-09-27 15:26:47 +00:00
parent 1933022b43
commit 8761d4768b
4 changed files with 51 additions and 15 deletions

View File

@@ -23,12 +23,26 @@
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QFont> #include <QFont>
#include <QColor> #include <QColor>
#include <QMatrix>
/** /**
* @brief PartDynamicTextField::PartDynamicTextField * @brief PartDynamicTextField::PartDynamicTextField
* Return if a dynamic text field can import information from the xml definition of a text field
* @param editor * @param editor
* @param parent * @param parent
*/ */
bool PartDynamicTextField::canImportFromTextField(const QDomElement &dom_element)
{
if(dom_element.tagName() != "input")
return false;
QString tagg = dom_element.attribute("tagg", "none");
if(tagg == "none")
return true;
else
return false;
}
PartDynamicTextField::PartDynamicTextField(QETElementEditor *editor, QGraphicsItem *parent) : PartDynamicTextField::PartDynamicTextField(QETElementEditor *editor, QGraphicsItem *parent) :
QGraphicsTextItem(parent), QGraphicsTextItem(parent),
CustomElementPart(editor), CustomElementPart(editor),
@@ -184,6 +198,35 @@ void PartDynamicTextField::fromXml(const QDomElement &dom_elmt)
setColor(QColor(dom_color.text())); setColor(QColor(dom_color.text()));
} }
/**
* @brief PartDynamicTextField::fromTextFieldXml
* Setup this text from the xml definition of a text field (The xml tagg of a text field is "input");
* @param dom_element
*/
void PartDynamicTextField::fromTextFieldXml(const QDomElement &dom_element)
{
if(canImportFromTextField(dom_element))
{
setFont(QETApp::diagramTextsFont(dom_element.attribute("size", QString::number(9)).toInt()));
setTextFrom(DynamicElementTextItem::UserText);
setText(dom_element.attribute("text", "_"));
QGraphicsTextItem::setRotation(dom_element.attribute("rotation", "0").toDouble());
//the origin transformation point of PartDynamicTextField is the top left corner, no matter the font size
//The origin transformation point of PartTextField is the middle of left edge, and so by definition, change with the size of the font
//We need to use a QMatrix to find the pos of this text from the saved pos of text item
QMatrix matrix;
//First make the rotation
matrix.rotate(dom_element.attribute("rotation", "0").toDouble());
QPointF pos = matrix.map(QPointF(0, -boundingRect().height()/2));
matrix.reset();
//Second translate to the pos
matrix.translate(dom_element.attribute("x", QString::number(0)).toDouble(),
dom_element.attribute("y", QString::number(0)).toDouble());
QGraphicsTextItem::setPos(matrix.map(pos));
}
}
/** /**
* @brief PartDynamicTextField::textFrom * @brief PartDynamicTextField::textFrom
* @return what the final text is created from. * @return what the final text is created from.
@@ -358,12 +401,10 @@ void PartDynamicTextField::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
*/ */
QVariant PartDynamicTextField::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) QVariant PartDynamicTextField::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{ {
if (change == QGraphicsItem::ItemPositionHasChanged || change == QGraphicsItem::ItemSceneHasChanged) { if (change == QGraphicsItem::ItemPositionHasChanged || change == QGraphicsItem::ItemSceneHasChanged)
updateCurrentPartEditor(); updateCurrentPartEditor();
} else if (change == QGraphicsItem::ItemSelectedHasChanged) { else if ((change == QGraphicsItem::ItemSelectedHasChanged) && (value.toBool() == true))
if (value.toBool() == true) { updateCurrentPartEditor();
updateCurrentPartEditor();
}
}
return(QGraphicsTextItem::itemChange(change, value)); return(QGraphicsTextItem::itemChange(change, value));
} }

View File

@@ -41,6 +41,9 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged) Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
public:
static bool canImportFromTextField(const QDomElement &dom_element);
public: public:
///PROPERTY ///PROPERTY
void setProperty(const char *name, const QVariant &value) override {QGraphicsTextItem::setProperty(name, value);} void setProperty(const char *name, const QVariant &value) override {QGraphicsTextItem::setProperty(name, value);}
@@ -70,6 +73,7 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart
const QDomElement toXml(QDomDocument &dom_doc) const override; const QDomElement toXml(QDomDocument &dom_doc) const override;
void fromXml(const QDomElement &dom_elmt) override; void fromXml(const QDomElement &dom_elmt) override;
void fromTextFieldXml(const QDomElement &dom_element);
DynamicElementTextItem::TextFrom textFrom() const; DynamicElementTextItem::TextFrom textFrom() const;
void setTextFrom (DynamicElementTextItem::TextFrom text_from); void setTextFrom (DynamicElementTextItem::TextFrom text_from);

View File

@@ -102,14 +102,6 @@ const QDomElement PartTextField::toXml(QDomDocument &xml_document) const {
return(xml_element); return(xml_element);
} }
/**
@return le decalage entre l'origine du QGraphicsItem et l'origine du champ de
texte.
*/
QPointF PartTextField::margin() const {
return(QPointF(0.0, boundingRect().bottom() / 2.0));
}
void PartTextField::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void PartTextField::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable)) if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))

View File

@@ -108,7 +108,6 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart
QRectF boundingRect() const override; QRectF boundingRect() const override;
private: private:
QPointF margin() const;
QString previous_text; QString previous_text;
qreal real_font_size_; qreal real_font_size_;
QPointF saved_point_; QPointF saved_point_;