New variables for conductor text formulas

This commit is contained in:
Magnus Hellströmer
2024-09-08 16:15:59 +02:00
parent 8c3343795a
commit 68a2ddde18
3 changed files with 23 additions and 9 deletions

View File

@@ -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();

View File

@@ -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);

View File

@@ -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())