mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-26 17:59:59 +01:00
Merge pull request #371 from qelectrotech/master
Merge last commits on mastert to branch qt6-cmake
This commit is contained in:
2
elements
2
elements
Submodule elements updated: bfb09dd021...48eb7dcedf
@@ -26,6 +26,7 @@ Comment[nl]=Bewerken bedradingsdiagrammen.
|
|||||||
Comment[be]=Bewerken elektrisch schema.
|
Comment[be]=Bewerken elektrisch schema.
|
||||||
Comment[da]=Rediger elektriske diagrammer.
|
Comment[da]=Rediger elektriske diagrammer.
|
||||||
Comment[ja]=電気回路図の編集。
|
Comment[ja]=電気回路図の編集。
|
||||||
|
Comment[sk]=Úprava elektrických schém.
|
||||||
GenericName=Electrical diagram editor
|
GenericName=Electrical diagram editor
|
||||||
GenericName[de]=Schaltplaneditor
|
GenericName[de]=Schaltplaneditor
|
||||||
GenericName[fr]=Éditeur de schémas électriques
|
GenericName[fr]=Éditeur de schémas électriques
|
||||||
@@ -42,3 +43,4 @@ GenericName[nl]=Elektrische schema editor
|
|||||||
GenericName[be]=Elektrische schema editor
|
GenericName[be]=Elektrische schema editor
|
||||||
GenericName[da]=Elektrisk diagram redigering
|
GenericName[da]=Elektrisk diagram redigering
|
||||||
GenericName[ja]=電気回路図エディタ
|
GenericName[ja]=電気回路図エディタ
|
||||||
|
GenericName[sk]=Editor elektrických schém
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include "../diagram.h"
|
#include "../diagram.h"
|
||||||
#include "../diagramposition.h"
|
#include "../diagramposition.h"
|
||||||
#include "../qetapp.h"
|
#include "../qetapp.h"
|
||||||
|
#include "../qetgraphicsitem/conductor.h"
|
||||||
#include "../qetgraphicsitem/element.h"
|
#include "../qetgraphicsitem/element.h"
|
||||||
#include "../qetxml.h"
|
#include "../qetxml.h"
|
||||||
|
|
||||||
@@ -189,12 +190,14 @@ namespace autonum
|
|||||||
QString AssignVariables::formulaToLabel(QString formula,
|
QString AssignVariables::formulaToLabel(QString formula,
|
||||||
sequentialNumbers &seqStruct,
|
sequentialNumbers &seqStruct,
|
||||||
Diagram *diagram,
|
Diagram *diagram,
|
||||||
const Element *elmt)
|
const Element *elmt,
|
||||||
|
const Conductor *cndr)
|
||||||
{
|
{
|
||||||
AssignVariables av(std::move(formula),
|
AssignVariables av(std::move(formula),
|
||||||
seqStruct,
|
seqStruct,
|
||||||
diagram,
|
diagram,
|
||||||
elmt);
|
elmt,
|
||||||
|
cndr);
|
||||||
seqStruct = av.m_seq_struct;
|
seqStruct = av.m_seq_struct;
|
||||||
return av.m_assigned_label;
|
return av.m_assigned_label;
|
||||||
}
|
}
|
||||||
@@ -301,13 +304,14 @@ namespace autonum
|
|||||||
AssignVariables::AssignVariables(const QString& formula,
|
AssignVariables::AssignVariables(const QString& formula,
|
||||||
const sequentialNumbers& seqStruct,
|
const sequentialNumbers& seqStruct,
|
||||||
Diagram *diagram,
|
Diagram *diagram,
|
||||||
const Element *elmt):
|
const Element *elmt,
|
||||||
|
const Conductor *cndr):
|
||||||
m_diagram(diagram),
|
m_diagram(diagram),
|
||||||
m_arg_formula(formula),
|
m_arg_formula(formula),
|
||||||
m_assigned_label(formula),
|
m_assigned_label(formula),
|
||||||
m_seq_struct(seqStruct),
|
m_seq_struct(seqStruct),
|
||||||
m_element(elmt)
|
m_element(elmt),
|
||||||
|
m_conductor(cndr)
|
||||||
{
|
{
|
||||||
if (m_diagram)
|
if (m_diagram)
|
||||||
{
|
{
|
||||||
@@ -349,6 +353,14 @@ namespace autonum
|
|||||||
m_assigned_label.replace("%prefix", m_element->getPrefix());
|
m_assigned_label.replace("%prefix", m_element->getPrefix());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_conductor)
|
||||||
|
{
|
||||||
|
m_assigned_label.replace("%wf", cndr->properties().m_function);
|
||||||
|
m_assigned_label.replace("%wv", cndr->properties().m_tension_protocol);
|
||||||
|
m_assigned_label.replace("%wc", cndr->properties().m_wire_color);
|
||||||
|
m_assigned_label.replace("%ws", cndr->properties().m_wire_section);
|
||||||
|
}
|
||||||
|
|
||||||
assignTitleBlockVar();
|
assignTitleBlockVar();
|
||||||
assignProjectVar();
|
assignProjectVar();
|
||||||
assignSequence();
|
assignSequence();
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
|
class Conductor;
|
||||||
class Diagram;
|
class Diagram;
|
||||||
class Element;
|
class Element;
|
||||||
class ElementsLocation;
|
class ElementsLocation;
|
||||||
@@ -61,12 +62,12 @@ namespace autonum
|
|||||||
class AssignVariables
|
class AssignVariables
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static QString formulaToLabel (QString formula, sequentialNumbers &seqStruct, Diagram *diagram, const Element *elmt = nullptr);
|
static QString formulaToLabel (QString formula, sequentialNumbers &seqStruct, Diagram *diagram, const Element *elmt = nullptr, const Conductor *cndr = nullptr);
|
||||||
static QString replaceVariable (const QString &formula, const DiagramContext &dc);
|
static QString replaceVariable (const QString &formula, const DiagramContext &dc);
|
||||||
static QString genericXref (const Element *element);
|
static QString genericXref (const Element *element);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AssignVariables(const QString& formula, const sequentialNumbers& seqStruct , Diagram *diagram, const Element *elmt = nullptr);
|
AssignVariables(const QString& formula, const sequentialNumbers& seqStruct , Diagram *diagram, const Element *elmt = nullptr, const Conductor *cndr = nullptr);
|
||||||
void assignTitleBlockVar();
|
void assignTitleBlockVar();
|
||||||
void assignProjectVar();
|
void assignProjectVar();
|
||||||
void assignSequence();
|
void assignSequence();
|
||||||
@@ -76,6 +77,7 @@ namespace autonum
|
|||||||
QString m_assigned_label;
|
QString m_assigned_label;
|
||||||
sequentialNumbers m_seq_struct;
|
sequentialNumbers m_seq_struct;
|
||||||
const Element *m_element = nullptr;
|
const Element *m_element = nullptr;
|
||||||
|
const Conductor *m_conductor = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
void setSequentialToList(QStringList &list, NumerotationContext &nc, const QString& type);
|
void setSequentialToList(QStringList &list, NumerotationContext &nc, const QString& type);
|
||||||
|
|||||||
@@ -248,9 +248,9 @@ void DiagramEventAddElement::addElement()
|
|||||||
QUndoCommand *undo_object = new QUndoCommand(tr("Ajouter %1").arg(element->name()));
|
QUndoCommand *undo_object = new QUndoCommand(tr("Ajouter %1").arg(element->name()));
|
||||||
new AddGraphicsObjectCommand(element, m_diagram, m_element -> pos(), undo_object);
|
new AddGraphicsObjectCommand(element, m_diagram, m_element -> pos(), undo_object);
|
||||||
|
|
||||||
//When we search for free aligned terminal we
|
//When we search for free aligned terminal we temporally remove m_element to
|
||||||
//temporally remove m_element to avoid any interaction with the function Element::AlignedFreeTerminals
|
//avoid any interaction with the function Element::AlignedFreeTerminals
|
||||||
//this is useful when an element who have two (or more) terminals opposite,
|
//This is useful when an element has two (or more) terminals on opposite sides,
|
||||||
//because m_element is exactly at the same pos of the new element
|
//because m_element is exactly at the same pos of the new element
|
||||||
//added to the scene so new conductor are created between terminal of the new element
|
//added to the scene so new conductor are created between terminal of the new element
|
||||||
//and the opposite terminal of m_element.
|
//and the opposite terminal of m_element.
|
||||||
|
|||||||
@@ -541,19 +541,19 @@ void RotateElementsCommand::undo()
|
|||||||
}
|
}
|
||||||
else if (item->type() == PartLine::Type) {
|
else if (item->type() == PartLine::Type) {
|
||||||
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
||||||
line->setRotation(-90);
|
line->setRotation(line->rotation()-90);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartPolygon::Type) {
|
else if (item->type() == PartPolygon::Type) {
|
||||||
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
||||||
poly->setRotation(-90);
|
poly->setRotation(poly->rotation()-90);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartText::Type) {
|
else if (item->type() == PartText::Type) {
|
||||||
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
||||||
text->setRotation(-90);
|
text->setRotation(text->rotation()-90);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartDynamicTextField::Type) {
|
else if (item->type() == PartDynamicTextField::Type) {
|
||||||
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
||||||
dyntext->setRotation(-90);
|
dyntext->setRotation(dyntext->rotation()-90);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setRotation(item->rotation()-90);
|
item->setRotation(item->rotation()-90);
|
||||||
@@ -586,19 +586,19 @@ void RotateElementsCommand::redo()
|
|||||||
}
|
}
|
||||||
else if (item->type() == PartLine::Type) {
|
else if (item->type() == PartLine::Type) {
|
||||||
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
||||||
line->setRotation(+90);
|
line->setRotation(line->rotation()+90);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartPolygon::Type) {
|
else if (item->type() == PartPolygon::Type) {
|
||||||
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
||||||
poly->setRotation(+90);
|
poly->setRotation(poly->rotation()+90);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartText::Type) {
|
else if (item->type() == PartText::Type) {
|
||||||
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
||||||
text->setRotation(+90);
|
text->setRotation(text->rotation()+90);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartDynamicTextField::Type) {
|
else if (item->type() == PartDynamicTextField::Type) {
|
||||||
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
||||||
dyntext->setRotation(+90);
|
dyntext->setRotation(dyntext->rotation()+90);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setRotation(item->rotation()+90);
|
item->setRotation(item->rotation()+90);
|
||||||
@@ -622,22 +622,22 @@ void RotateFineElementsCommand::undo()
|
|||||||
{
|
{
|
||||||
if (item->type() == PartLine::Type) {
|
if (item->type() == PartLine::Type) {
|
||||||
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
||||||
line->setRotation(-5);
|
line->setRotation(line->rotation()-5);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartPolygon::Type) {
|
else if (item->type() == PartPolygon::Type) {
|
||||||
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
||||||
poly->setRotation(-5);
|
poly->setRotation(poly->rotation()-5);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartText::Type) {
|
else if (item->type() == PartText::Type) {
|
||||||
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
||||||
text->setRotation(-5);
|
text->setRotation(text->rotation()-5);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartDynamicTextField::Type) {
|
else if (item->type() == PartDynamicTextField::Type) {
|
||||||
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
||||||
dyntext->setRotation(-5);
|
dyntext->setRotation(dyntext->rotation()-5);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//item->setRotation(-5);
|
//item->setRotation(item->rotation()-5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -651,22 +651,22 @@ void RotateFineElementsCommand::redo()
|
|||||||
{
|
{
|
||||||
if (item->type() == PartLine::Type) {
|
if (item->type() == PartLine::Type) {
|
||||||
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
PartLine* line = qgraphicsitem_cast<PartLine*>(item);
|
||||||
line->setRotation(+5);
|
line->setRotation(line->rotation()+5);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartPolygon::Type) {
|
else if (item->type() == PartPolygon::Type) {
|
||||||
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
PartPolygon* poly = qgraphicsitem_cast<PartPolygon*>(item);
|
||||||
poly->setRotation(+5);
|
poly->setRotation(poly->rotation()+5);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartText::Type) {
|
else if (item->type() == PartText::Type) {
|
||||||
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
PartText* text = qgraphicsitem_cast<PartText*>(item);
|
||||||
text->setRotation(+5);
|
text->setRotation(text->rotation()+5);
|
||||||
}
|
}
|
||||||
else if (item->type() == PartDynamicTextField::Type) {
|
else if (item->type() == PartDynamicTextField::Type) {
|
||||||
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
PartDynamicTextField* dyntext = qgraphicsitem_cast<PartDynamicTextField*>(item);
|
||||||
dyntext->setRotation(+5);
|
dyntext->setRotation(dyntext->rotation()+5);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//item->setRotation(+5);
|
//item->setRotation(item->rotation()+5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,8 +172,10 @@ QPainterPath PartArc::shadowShape() const
|
|||||||
|
|
||||||
|
|
||||||
void PartArc::setRotation(qreal angle) {
|
void PartArc::setRotation(qreal angle) {
|
||||||
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
|
m_rot = QET::correctAngle(angle, true);
|
||||||
// idea taken from QET_ElementScaler:
|
// idea taken from QET_ElementScaler:
|
||||||
if (angle > 0) {
|
if (diffAngle > 0) {
|
||||||
m_start_angle += 270.0 * 16;
|
m_start_angle += 270.0 * 16;
|
||||||
while (m_start_angle < 0) { m_start_angle += (360*16); }
|
while (m_start_angle < 0) { m_start_angle += (360*16); }
|
||||||
while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); }
|
while (m_start_angle >= (360*16)) { m_start_angle -= (360*16); }
|
||||||
|
|||||||
@@ -67,8 +67,9 @@ QString PartDynamicTextField::xmlName() const
|
|||||||
@param angle
|
@param angle
|
||||||
*/
|
*/
|
||||||
void PartDynamicTextField::setRotation(qreal angle) {
|
void PartDynamicTextField::setRotation(qreal angle) {
|
||||||
QGraphicsObject::setRotation(QET::correctAngle(rotation()+angle, true));
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
setPos(QTransform().rotate(angle).map(pos()));
|
QGraphicsObject::setRotation(QET::correctAngle(angle, true));
|
||||||
|
setPos(QTransform().rotate(diffAngle).map(pos()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartDynamicTextField::mirror() {
|
void PartDynamicTextField::mirror() {
|
||||||
|
|||||||
@@ -238,8 +238,10 @@ bool PartEllipse::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
|
|||||||
|
|
||||||
|
|
||||||
void PartEllipse::setRotation(qreal angle) {
|
void PartEllipse::setRotation(qreal angle) {
|
||||||
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
|
m_rot = QET::correctAngle(angle, true);
|
||||||
// idea taken from QET_ElementScaler:
|
// idea taken from QET_ElementScaler:
|
||||||
if (angle > 0) {
|
if (diffAngle > 0) {
|
||||||
qreal width = m_rect.height();
|
qreal width = m_rect.height();
|
||||||
qreal height = m_rect.width();
|
qreal height = m_rect.width();
|
||||||
qreal x = (m_rect.y() + m_rect.height()) * (-1);
|
qreal x = (m_rect.y() + m_rect.height()) * (-1);
|
||||||
|
|||||||
@@ -579,9 +579,10 @@ void PartLine::setSecondEndLength(const qreal &l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PartLine::setRotation(qreal angle) {
|
void PartLine::setRotation(qreal angle) {
|
||||||
m_rot += angle;
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
m_line.setP1(QTransform().rotate(angle).map(m_line.p1()));
|
m_rot = QET::correctAngle(angle, true);
|
||||||
m_line.setP2(QTransform().rotate(angle).map(m_line.p2()));
|
m_line.setP1(QTransform().rotate(diffAngle).map(m_line.p1()));
|
||||||
|
m_line.setP2(QTransform().rotate(diffAngle).map(m_line.p2()));
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
setLine(m_line);
|
setLine(m_line);
|
||||||
adjustHandlerPos();
|
adjustHandlerPos();
|
||||||
|
|||||||
@@ -297,8 +297,9 @@ void PartPolygon::resetAllHandlerColor()
|
|||||||
|
|
||||||
|
|
||||||
void PartPolygon::setRotation(qreal angle) {
|
void PartPolygon::setRotation(qreal angle) {
|
||||||
QTransform rotation = QTransform().rotate(angle);
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
m_rot += angle;
|
m_rot = QET::correctAngle(angle, true);
|
||||||
|
QTransform rotation = QTransform().rotate(diffAngle);
|
||||||
setPolygon(rotation.map(m_polygon));
|
setPolygon(rotation.map(m_polygon));
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
adjustHandlerPos();
|
adjustHandlerPos();
|
||||||
|
|||||||
@@ -168,12 +168,14 @@ void PartRectangle::setYRadius(qreal Y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PartRectangle::setRotation(qreal angle) {
|
void PartRectangle::setRotation(qreal angle) {
|
||||||
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
|
m_rot = QET::correctAngle(angle, true);
|
||||||
// for whatever reason: with "rect" we need to use scene-positions...
|
// for whatever reason: with "rect" we need to use scene-positions...
|
||||||
auto pos = mapToScene(m_rect.x(),m_rect.y());
|
auto pos = mapToScene(m_rect.x(),m_rect.y());
|
||||||
qreal width = m_rect.height();
|
qreal width = m_rect.height();
|
||||||
qreal height = m_rect.width();
|
qreal height = m_rect.width();
|
||||||
qreal x; qreal y;
|
qreal x; qreal y;
|
||||||
if (angle > 0) {
|
if (diffAngle > 0) {
|
||||||
x = (pos.y() + m_rect.height()) * (-1);
|
x = (pos.y() + m_rect.height()) * (-1);
|
||||||
y = pos.x();
|
y = pos.x();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -42,8 +42,9 @@ PartTerminal::~PartTerminal()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Import terminal properties from an XML element
|
||||||
Importe les proprietes d'une borne depuis un element XML
|
Importe les proprietes d'une borne depuis un element XML
|
||||||
@param xml_elmt Element XML a lire
|
@param xml_elmt Element XML a lire / XML element to read
|
||||||
*/
|
*/
|
||||||
void PartTerminal::fromXml(const QDomElement &xml_elmt) {
|
void PartTerminal::fromXml(const QDomElement &xml_elmt) {
|
||||||
d -> fromXml(xml_elmt);
|
d -> fromXml(xml_elmt);
|
||||||
@@ -166,8 +167,9 @@ void PartTerminal::setRotation(qreal angle) {
|
|||||||
else if (180 <= angle_mod && angle_mod < 270) new_ori = Qet::South;
|
else if (180 <= angle_mod && angle_mod < 270) new_ori = Qet::South;
|
||||||
else new_ori = Qet::West;
|
else new_ori = Qet::West;
|
||||||
|
|
||||||
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
double tmp, y, x;
|
double tmp, y, x;
|
||||||
if (angle > 0) {
|
if (diffAngle > 0) {
|
||||||
tmp = d->m_pos.y();
|
tmp = d->m_pos.y();
|
||||||
y = d->m_pos.x();
|
y = d->m_pos.x();
|
||||||
x = (-1) * tmp;
|
x = (-1) * tmp;
|
||||||
|
|||||||
@@ -68,8 +68,9 @@ PartText::~PartText()
|
|||||||
@param angle
|
@param angle
|
||||||
*/
|
*/
|
||||||
void PartText::setRotation(qreal angle) {
|
void PartText::setRotation(qreal angle) {
|
||||||
QGraphicsObject::setRotation(QET::correctAngle(rotation()+angle, true));
|
qreal diffAngle = qRound((angle - rotation()) * 100.0) / 100.0;
|
||||||
setPos(QTransform().rotate(angle).map(pos()));
|
QGraphicsObject::setRotation(QET::correctAngle(angle, true));
|
||||||
|
setPos(QTransform().rotate(diffAngle).map(pos()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartText::mirror() {
|
void PartText::mirror() {
|
||||||
|
|||||||
@@ -1505,7 +1505,7 @@ void Conductor::refreshText()
|
|||||||
{
|
{
|
||||||
if (diagram())
|
if (diagram())
|
||||||
{
|
{
|
||||||
QString text = autonum::AssignVariables::formulaToLabel(m_properties.m_formula, m_autoNum_seq, diagram());
|
QString text = autonum::AssignVariables::formulaToLabel(m_properties.m_formula, m_autoNum_seq, diagram(), nullptr, this);
|
||||||
m_properties.text = text;
|
m_properties.text = text;
|
||||||
m_text_item->setPlainText(text);
|
m_text_item->setPlainText(text);
|
||||||
}
|
}
|
||||||
@@ -1590,7 +1590,7 @@ void Conductor::setProperties(const ConductorProperties &property)
|
|||||||
{
|
{
|
||||||
if (diagram())
|
if (diagram())
|
||||||
{
|
{
|
||||||
QString text = autonum::AssignVariables::formulaToLabel(m_properties.m_formula, m_autoNum_seq, diagram());
|
QString text = autonum::AssignVariables::formulaToLabel(m_properties.m_formula, m_autoNum_seq, diagram(), nullptr, this);
|
||||||
m_properties.text = text;
|
m_properties.text = text;
|
||||||
}
|
}
|
||||||
else if (m_properties.text.isEmpty())
|
else if (m_properties.text.isEmpty())
|
||||||
|
|||||||
@@ -545,8 +545,16 @@ void DynamicElementTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
|||||||
if(m_slave_Xref_item)
|
if(m_slave_Xref_item)
|
||||||
m_slave_Xref_item->setDefaultTextColor(Qt::black);
|
m_slave_Xref_item->setDefaultTextColor(Qt::black);
|
||||||
}
|
}
|
||||||
|
|
||||||
DiagramTextItem::mousePressEvent(event);
|
// Shift or no parent initiates movement of dynamic text, otherwise movement of parent element
|
||||||
|
if((event->modifiers() & Qt::ShiftModifier) || !m_parent_element)
|
||||||
|
{
|
||||||
|
m_move_parent = false;
|
||||||
|
DiagramTextItem::mousePressEvent(event);
|
||||||
|
} else {
|
||||||
|
m_move_parent = true;
|
||||||
|
parentElement()->mousePressEvent(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -557,26 +565,33 @@ void DynamicElementTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
|||||||
{
|
{
|
||||||
if((event->buttons() & Qt::LeftButton) && (flags() & ItemIsMovable))
|
if((event->buttons() & Qt::LeftButton) && (flags() & ItemIsMovable))
|
||||||
{
|
{
|
||||||
if(diagram() && m_first_move)
|
if(m_move_parent)
|
||||||
diagram()->elementTextsMover().beginMovement(diagram(), this);
|
|
||||||
|
|
||||||
if(m_first_move)
|
|
||||||
{
|
{
|
||||||
m_initial_position = pos();
|
parentElement()->mouseMoveEvent(event);
|
||||||
if(parentElement())
|
} else {
|
||||||
parentElement()->setHighlighted(true);
|
if(diagram() && m_first_move)
|
||||||
|
diagram()->elementTextsMover().beginMovement(diagram(), this);
|
||||||
|
|
||||||
|
if(m_first_move)
|
||||||
|
{
|
||||||
|
m_initial_position = pos();
|
||||||
|
if(parentElement())
|
||||||
|
parentElement()->setHighlighted(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointF current_parent_pos;
|
||||||
|
QPointF button_down_parent_pos;
|
||||||
|
current_parent_pos = mapToParent(mapFromScene(event->scenePos()));
|
||||||
|
button_down_parent_pos = mapToParent(mapFromScene(event->buttonDownScenePos(Qt::LeftButton)));
|
||||||
|
|
||||||
|
int diffx = qRound(current_parent_pos.x() - button_down_parent_pos.x());
|
||||||
|
int diffy = qRound(current_parent_pos.y() - button_down_parent_pos.y());
|
||||||
|
QPointF new_pos = m_initial_position + QPointF(diffx, diffy);
|
||||||
|
setPos(new_pos);
|
||||||
|
|
||||||
|
if(diagram())
|
||||||
|
diagram()->elementTextsMover().continueMovement(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
QPointF current_parent_pos;
|
|
||||||
QPointF button_down_parent_pos;
|
|
||||||
current_parent_pos = mapToParent(mapFromScene(event->scenePos()));
|
|
||||||
button_down_parent_pos = mapToParent(mapFromScene(event->buttonDownScenePos(Qt::LeftButton)));
|
|
||||||
|
|
||||||
QPointF new_pos = m_initial_position + current_parent_pos - button_down_parent_pos;
|
|
||||||
event->modifiers() == Qt::ControlModifier ? setPos(new_pos) : setPos(Diagram::snapToGrid(new_pos));
|
|
||||||
|
|
||||||
if(diagram())
|
|
||||||
diagram()->elementTextsMover().continueMovement(event);
|
|
||||||
} else {
|
} else {
|
||||||
event->ignore();
|
event->ignore();
|
||||||
}
|
}
|
||||||
@@ -591,14 +606,19 @@ void DynamicElementTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
|||||||
*/
|
*/
|
||||||
void DynamicElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
void DynamicElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||||||
{
|
{
|
||||||
if (m_parent_element)
|
if(m_move_parent)
|
||||||
m_parent_element->setHighlighted(false);
|
{
|
||||||
|
parentElement()->mouseReleaseEvent(event);
|
||||||
|
} else {
|
||||||
|
if (m_parent_element)
|
||||||
|
m_parent_element->setHighlighted(false);
|
||||||
|
|
||||||
if(m_parent_element && m_parent_element->diagram())
|
if(m_parent_element && m_parent_element->diagram())
|
||||||
m_parent_element.data()->diagram()->elementTextsMover().endMovement();
|
m_parent_element.data()->diagram()->elementTextsMover().endMovement();
|
||||||
|
|
||||||
if(!(event->modifiers() & Qt::ControlModifier))
|
if(!(event->modifiers() & Qt::ControlModifier))
|
||||||
QGraphicsTextItem::mouseReleaseEvent(event);
|
QGraphicsTextItem::mouseReleaseEvent(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ class DynamicElementTextItem : public DiagramTextItem
|
|||||||
QPointF m_initial_position;
|
QPointF m_initial_position;
|
||||||
bool m_keep_visual_rotation = true;
|
bool m_keep_visual_rotation = true;
|
||||||
qreal m_visual_rotation_ref = 0;
|
qreal m_visual_rotation_ref = 0;
|
||||||
|
bool m_move_parent = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DYNAMICELEMENTTEXTITEM_H
|
#endif // DYNAMICELEMENTTEXTITEM_H
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class ElementTextItemGroup;
|
|||||||
class Element : public QetGraphicsItem
|
class Element : public QetGraphicsItem
|
||||||
{
|
{
|
||||||
friend class DiagramEventAddElement;
|
friend class DiagramEventAddElement;
|
||||||
|
friend class DynamicElementTextItem;
|
||||||
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -695,11 +695,15 @@ bool Terminal::valideXml(QDomElement &terminal)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Terminal::fromXml
|
@brief Terminal::fromXml
|
||||||
|
Enables you to find out whether an XML element represents this terminal.
|
||||||
|
Warning, the XML element is not checked
|
||||||
Permet de savoir si un element XML represente cette borne. Attention,
|
Permet de savoir si un element XML represente cette borne. Attention,
|
||||||
l'element XML n'est pas verifie
|
l'element XML n'est pas verifie
|
||||||
@param terminal Le QDomElement a analyser
|
@param terminal Le QDomElement a analyser / QDomElement to check
|
||||||
@return true si la borne "se reconnait"
|
@return true si la borne "se reconnait"
|
||||||
(memes coordonnes, meme orientation), false sinon
|
(memes coordonnes, meme orientation), false sinon
|
||||||
|
true, if the terminal ‘recognises’ itself (same coordinates,
|
||||||
|
same orientation), false otherwise
|
||||||
*/
|
*/
|
||||||
bool Terminal::fromXml(QDomElement &terminal)
|
bool Terminal::fromXml(QDomElement &terminal)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user