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()) {
conductor->setFreezeLabel(true);
}
};
}
m_diagram -> undoStack().push(undo_object);
element->setUpFormula();

View File

@@ -762,11 +762,13 @@ bool DynamicElementTextItem::sceneEventFilter(QGraphicsItem *watched, QEvent *ev
void DynamicElementTextItem::elementInfoChanged()
{
DiagramContext dc;
if(elementUseForInfo())
dc = elementUseForInfo()->elementInformations();
Element *element = elementUseForInfo();
if(element) {
dc = element->elementInformations();
}
QString final_text;
Element *element = elementUseForInfo();
if (m_text_from == ElementInfo)
{
@@ -776,14 +778,14 @@ void DynamicElementTextItem::elementInfoChanged()
{
setupFormulaConnection();
if (dc.value("formula").toString().isEmpty())
final_text = dc.value(m_info_name).toString();
else
final_text = autonum::AssignVariables::formulaToLabel(dc.value("formula").toString(), element->rSequenceStruct(), element->diagram(), element);
if (element) {
final_text = element->actualLabel();
}
else
}
else {
final_text = dc.value(m_info_name).toString();
}
}
else if (m_text_from == CompositeText)
{
//If the composite have the label variable, we must to make some
@@ -1040,21 +1042,19 @@ void DynamicElementTextItem::updateLabel()
(m_text_from == CompositeText && m_composite_text.contains("%{label}")))
{
DiagramContext dc;
if(elementUseForInfo())
dc = elementUseForInfo()->elementInformations();
Element *element = elementUseForInfo();
if(m_text_from == ElementInfo)
{
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));
if(element) {
dc = element->elementInformations();
}
else if (m_text_from == CompositeText)
if(m_text_from == ElementInfo && element) {
setPlainText(element->actualLabel());
}
else if (m_text_from == CompositeText) {
setPlainText(autonum::AssignVariables::replaceVariable(m_composite_text, dc));
}
}
}
/**
@@ -1172,7 +1172,7 @@ QString DynamicElementTextItem::reportReplacedCompositeText() const
{
Element *elmt = m_other_report.data();
QString label = m_report_formula;
label = autonum::AssignVariables::formulaToLabel(label, elmt->rSequenceStruct(), elmt->diagram(), elmt);
label = elmt->actualLabel();
string.replace("%{label}", label);
}
if (m_watched_conductor)

View File

@@ -1419,7 +1419,10 @@ QString Element::linkTypeToString() const
*/
void Element::setElementInformations(DiagramContext dc)
{
if (m_element_informations == dc) return;
if (m_element_informations == dc) {
return;
}
DiagramContext old_info = m_element_informations;
m_element_informations = dc;
emit elementInfoChange(old_info, m_element_informations);
@@ -1480,7 +1483,7 @@ void Element::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
* @param e QGraphicsSceneHoverEvent
*/
void Element::hoverEnterEvent(QGraphicsSceneHoverEvent *e) {
Q_UNUSED(e);
Q_UNUSED(e)
foreach (Element *elmt, linkedElements())
elmt -> setHighlighted(true);
@@ -1497,7 +1500,7 @@ void Element::hoverEnterEvent(QGraphicsSceneHoverEvent *e) {
* @param e QGraphicsSceneHoverEvent
*/
void Element::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) {
Q_UNUSED(e);
Q_UNUSED(e)
foreach (Element *elmt, linkedElements())
elmt -> setHighlighted(false);
@@ -1536,8 +1539,7 @@ void Element::setUpFormula(bool code_letter)
if(!m_freeze_label && !formula.isEmpty())
{
DiagramContext dc = m_element_informations;
QString label = autonum::AssignVariables::formulaToLabel(formula, m_autoNum_seq, diagram(), this);
m_element_informations.addValue("label", label);
m_element_informations.addValue("label", actualLabel());
emit elementInfoChange(dc, m_element_informations);
}
}
@@ -1579,6 +1581,21 @@ void Element::freezeNewAddedElement() {
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);
}
}
/**
* @brief Element::name
* @return the human name of this element

View File

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

View File

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

View File

@@ -220,16 +220,8 @@ void LinkSingleElementWidget::buildTree()
QStringList search_list;
QStringList str_list;
QString formula = elmt->elementInformations()["formula"].toString();
if(!formula.isEmpty())
{
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())
str_list << elmt->actualLabel();
if(!str_list.last().isEmpty()) {
search_list << str_list.last();
}