CSV export : correctly export label

This commit is contained in:
joshua
2019-11-07 21:21:07 +01:00
parent 32a4d9c3fe
commit fc73d53d73
6 changed files with 54 additions and 41 deletions

View File

@@ -237,7 +237,7 @@ void DiagramEventAddElement::addElement()
if (m_diagram->freezeNewConductors() || m_diagram->project()->isFreezeNewConductors()) { if (m_diagram->freezeNewConductors() || m_diagram->project()->isFreezeNewConductors()) {
conductor->setFreezeLabel(true); conductor->setFreezeLabel(true);
} }
}; }
m_diagram -> undoStack().push(undo_object); m_diagram -> undoStack().push(undo_object);
element->setUpFormula(); element->setUpFormula();

View File

@@ -762,11 +762,13 @@ bool DynamicElementTextItem::sceneEventFilter(QGraphicsItem *watched, QEvent *ev
void DynamicElementTextItem::elementInfoChanged() void DynamicElementTextItem::elementInfoChanged()
{ {
DiagramContext dc; DiagramContext dc;
if(elementUseForInfo()) Element *element = elementUseForInfo();
dc = elementUseForInfo()->elementInformations(); if(element) {
dc = element->elementInformations();
}
QString final_text; QString final_text;
Element *element = elementUseForInfo();
if (m_text_from == ElementInfo) if (m_text_from == ElementInfo)
{ {
@@ -775,14 +777,14 @@ void DynamicElementTextItem::elementInfoChanged()
if(m_info_name == "label") if(m_info_name == "label")
{ {
setupFormulaConnection(); setupFormulaConnection();
if (dc.value("formula").toString().isEmpty()) if (element) {
final_text = dc.value(m_info_name).toString(); final_text = element->actualLabel();
else }
final_text = autonum::AssignVariables::formulaToLabel(dc.value("formula").toString(), element->rSequenceStruct(), element->diagram(), element);
} }
else else {
final_text = dc.value(m_info_name).toString(); final_text = dc.value(m_info_name).toString();
}
} }
else if (m_text_from == CompositeText) else if (m_text_from == CompositeText)
{ {
@@ -1040,20 +1042,18 @@ void DynamicElementTextItem::updateLabel()
(m_text_from == CompositeText && m_composite_text.contains("%{label}"))) (m_text_from == CompositeText && m_composite_text.contains("%{label}")))
{ {
DiagramContext dc; DiagramContext dc;
if(elementUseForInfo()) Element *element = elementUseForInfo();
dc = elementUseForInfo()->elementInformations(); if(element) {
dc = element->elementInformations();
}
Element *element = elementUseForInfo();
if(m_text_from == ElementInfo && element) {
if(m_text_from == ElementInfo) setPlainText(element->actualLabel());
{
if(dc.value("formula").toString().isEmpty())
setPlainText(dc.value("label").toString());
else
setPlainText(autonum::AssignVariables::formulaToLabel(dc.value("formula").toString(), element->rSequenceStruct(), element->diagram(), element));
} }
else if (m_text_from == CompositeText) else if (m_text_from == CompositeText) {
setPlainText(autonum::AssignVariables::replaceVariable(m_composite_text, dc)); setPlainText(autonum::AssignVariables::replaceVariable(m_composite_text, dc));
}
} }
} }
@@ -1172,7 +1172,7 @@ QString DynamicElementTextItem::reportReplacedCompositeText() const
{ {
Element *elmt = m_other_report.data(); Element *elmt = m_other_report.data();
QString label = m_report_formula; QString label = m_report_formula;
label = autonum::AssignVariables::formulaToLabel(label, elmt->rSequenceStruct(), elmt->diagram(), elmt); label = elmt->actualLabel();
string.replace("%{label}", label); string.replace("%{label}", label);
} }
if (m_watched_conductor) if (m_watched_conductor)

View File

@@ -1419,7 +1419,10 @@ QString Element::linkTypeToString() const
*/ */
void Element::setElementInformations(DiagramContext dc) void Element::setElementInformations(DiagramContext dc)
{ {
if (m_element_informations == dc) return; if (m_element_informations == dc) {
return;
}
DiagramContext old_info = m_element_informations; DiagramContext old_info = m_element_informations;
m_element_informations = dc; m_element_informations = dc;
emit elementInfoChange(old_info, m_element_informations); emit elementInfoChange(old_info, m_element_informations);
@@ -1480,7 +1483,7 @@ void Element::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
* @param e QGraphicsSceneHoverEvent * @param e QGraphicsSceneHoverEvent
*/ */
void Element::hoverEnterEvent(QGraphicsSceneHoverEvent *e) { void Element::hoverEnterEvent(QGraphicsSceneHoverEvent *e) {
Q_UNUSED(e); Q_UNUSED(e)
foreach (Element *elmt, linkedElements()) foreach (Element *elmt, linkedElements())
elmt -> setHighlighted(true); elmt -> setHighlighted(true);
@@ -1497,7 +1500,7 @@ void Element::hoverEnterEvent(QGraphicsSceneHoverEvent *e) {
* @param e QGraphicsSceneHoverEvent * @param e QGraphicsSceneHoverEvent
*/ */
void Element::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) { void Element::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) {
Q_UNUSED(e); Q_UNUSED(e)
foreach (Element *elmt, linkedElements()) foreach (Element *elmt, linkedElements())
elmt -> setHighlighted(false); elmt -> setHighlighted(false);
@@ -1536,8 +1539,7 @@ void Element::setUpFormula(bool code_letter)
if(!m_freeze_label && !formula.isEmpty()) if(!m_freeze_label && !formula.isEmpty())
{ {
DiagramContext dc = m_element_informations; DiagramContext dc = m_element_informations;
QString label = autonum::AssignVariables::formulaToLabel(formula, m_autoNum_seq, diagram(), this); m_element_informations.addValue("label", actualLabel());
m_element_informations.addValue("label", label);
emit elementInfoChange(dc, m_element_informations); emit elementInfoChange(dc, m_element_informations);
} }
} }
@@ -1576,7 +1578,22 @@ void Element::freezeNewAddedElement() {
if (this->diagram()->freezeNewElements() || this->diagram()->project()->isFreezeNewElements()) { if (this->diagram()->freezeNewElements() || this->diagram()->project()->isFreezeNewElements()) {
freezeLabel(true); freezeLabel(true);
} }
else return; else return;
}
/**
* @brief Element::actualLabel
* Always return the current label to be displayed.
* This function is usefull when label is based on formula, because label can change at any time.
* @return
*/
QString Element::actualLabel()
{
if (m_element_informations.value("formula").toString().isEmpty()) {
return m_element_informations.value("label").toString();
} else {
return autonum::AssignVariables::formulaToLabel(m_element_informations.value("formula").toString(), m_autoNum_seq, diagram(), this);
}
} }
/** /**

View File

@@ -100,6 +100,7 @@ class Element : public QetGraphicsItem
void freezeLabel(bool freeze); void freezeLabel(bool freeze);
bool isFreezeLabel() const {return m_freeze_label;} bool isFreezeLabel() const {return m_freeze_label;}
void freezeNewAddedElement(); void freezeNewAddedElement();
QString actualLabel();
QString name() const override; QString name() const override;
ElementsLocation location() const; ElementsLocation location() const;

View File

@@ -426,6 +426,9 @@ QHash<QString, QString> BOMExportDialog::elementInfoToString(Element *elmt) cons
else if (key == "designation_qty") { else if (key == "designation_qty") {
hash.insert(key, key); hash.insert(key, key);
} }
else if (key == "label") {
hash.insert(key, elmt->actualLabel());
}
else { else {
hash.insert(key, elmt->elementInformations()[keys_hash.value(key)].toString()); hash.insert(key, elmt->elementInformations()[keys_hash.value(key)].toString());
} }

View File

@@ -219,19 +219,11 @@ void LinkSingleElementWidget::buildTree()
{ {
QStringList search_list; QStringList search_list;
QStringList str_list; QStringList str_list;
QString formula = elmt->elementInformations()["formula"].toString(); str_list << elmt->actualLabel();
if(!formula.isEmpty()) if(!str_list.last().isEmpty()) {
{ search_list << str_list.last();
str_list << autonum::AssignVariables::formulaToLabel(formula, elmt->rSequenceStruct(), elmt->diagram(), elmt); }
search_list << str_list.last();
}
else
{
str_list << elmt->elementInformations()["label"].toString();
if(!str_list.last().isEmpty())
search_list << str_list.last();
}
str_list << elmt->elementInformations()["comment"].toString(); str_list << elmt->elementInformations()["comment"].toString();
if (!str_list.last().isEmpty()) if (!str_list.last().isEmpty())