Compare commits

...

4 Commits

Author SHA1 Message Date
Laurent Trinques 667d25899f Merge pull request #364 from elevatormind/conductor_texts
New variables for conductor text formulas
2025-02-21 17:13:18 +01:00
Laurent Trinques c9b9165911 Merge pull request #365 from elevatormind/selective_move
Added option to only move dynamic texts
2025-02-21 17:12:54 +01:00
Magnus Hellströmer 78ee65a21b Added option to only move dynamic texts 2025-02-19 21:33:29 +01:00
Magnus Hellströmer 68a2ddde18 New variables for conductor text formulas 2025-02-19 20:26:53 +01:00
6 changed files with 70 additions and 36 deletions
+17 -5
View File
@@ -20,6 +20,7 @@
#include "../diagram.h"
#include "../diagramposition.h"
#include "../qetapp.h"
#include "../qetgraphicsitem/conductor.h"
#include "../qetgraphicsitem/element.h"
#include "../qetxml.h"
@@ -189,12 +190,14 @@ namespace autonum
QString AssignVariables::formulaToLabel(QString formula,
sequentialNumbers &seqStruct,
Diagram *diagram,
const Element *elmt)
const Element *elmt,
const Conductor *cndr)
{
AssignVariables av(std::move(formula),
seqStruct,
diagram,
elmt);
elmt,
cndr);
seqStruct = av.m_seq_struct;
return av.m_assigned_label;
}
@@ -301,13 +304,14 @@ namespace autonum
AssignVariables::AssignVariables(const QString& formula,
const sequentialNumbers& seqStruct,
Diagram *diagram,
const Element *elmt):
const Element *elmt,
const Conductor *cndr):
m_diagram(diagram),
m_arg_formula(formula),
m_assigned_label(formula),
m_seq_struct(seqStruct),
m_element(elmt)
m_element(elmt),
m_conductor(cndr)
{
if (m_diagram)
{
@@ -349,6 +353,14 @@ namespace autonum
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();
assignProjectVar();
assignSequence();
+4 -2
View File
@@ -24,6 +24,7 @@
#include <QString>
#include <QStringList>
class Conductor;
class Diagram;
class Element;
class ElementsLocation;
@@ -61,12 +62,12 @@ namespace autonum
class AssignVariables
{
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 genericXref (const Element *element);
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 assignProjectVar();
void assignSequence();
@@ -76,6 +77,7 @@ namespace autonum
QString m_assigned_label;
sequentialNumbers m_seq_struct;
const Element *m_element = nullptr;
const Conductor *m_conductor = nullptr;
};
void setSequentialToList(QStringList &list, NumerotationContext &nc, const QString& type);
+2 -2
View File
@@ -1505,7 +1505,7 @@ void Conductor::refreshText()
{
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_text_item->setPlainText(text);
}
@@ -1590,7 +1590,7 @@ void Conductor::setProperties(const ConductorProperties &property)
{
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;
}
else if (m_properties.text.isEmpty())
@@ -545,8 +545,16 @@ void DynamicElementTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
if(m_slave_Xref_item)
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,31 @@ void DynamicElementTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if((event->buttons() & Qt::LeftButton) && (flags() & ItemIsMovable))
{
if(diagram() && m_first_move)
diagram()->elementTextsMover().beginMovement(diagram(), this);
if(m_first_move)
if(m_move_parent)
{
m_initial_position = pos();
if(parentElement())
parentElement()->setHighlighted(true);
parentElement()->mouseMoveEvent(event);
} else {
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)));
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);
}
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 {
event->ignore();
}
@@ -591,14 +604,19 @@ void DynamicElementTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/
void DynamicElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (m_parent_element)
m_parent_element->setHighlighted(false);
if(m_move_parent)
{
parentElement()->mouseReleaseEvent(event);
} else {
if (m_parent_element)
m_parent_element->setHighlighted(false);
if(m_parent_element && m_parent_element->diagram())
m_parent_element.data()->diagram()->elementTextsMover().endMovement();
if(!(event->modifiers() & Qt::ControlModifier))
QGraphicsTextItem::mouseReleaseEvent(event);
if(m_parent_element && m_parent_element->diagram())
m_parent_element.data()->diagram()->elementTextsMover().endMovement();
if(!(event->modifiers() & Qt::ControlModifier))
QGraphicsTextItem::mouseReleaseEvent(event);
}
}
/**
@@ -170,6 +170,7 @@ class DynamicElementTextItem : public DiagramTextItem
QPointF m_initial_position;
bool m_keep_visual_rotation = true;
qreal m_visual_rotation_ref = 0;
bool m_move_parent = true;
};
#endif // DYNAMICELEMENTTEXTITEM_H
+1
View File
@@ -42,6 +42,7 @@ class ElementTextItemGroup;
class Element : public QetGraphicsItem
{
friend class DiagramEventAddElement;
friend class DynamicElementTextItem;
Q_OBJECT
public: