diff --git a/sources/TerminalStrip/ui/terminalstripeditor.cpp b/sources/TerminalStrip/ui/terminalstripeditor.cpp index 11e6e4756..ef80ff185 100644 --- a/sources/TerminalStrip/ui/terminalstripeditor.cpp +++ b/sources/TerminalStrip/ui/terminalstripeditor.cpp @@ -442,6 +442,7 @@ void TerminalStripEditor::on_m_dialog_button_box_clicked(QAbstractButton *button current_data.setTerminalType(modified_data.type_); current_data.setTerminalFunction(modified_data.function_); current_data.setTerminalLED(modified_data.led_); + current_data.m_informations.addValue(QStringLiteral("label"), modified_data.label_); m_project->undoStack()->push(new ChangeElementDataCommand(element, current_data)); } diff --git a/sources/TerminalStrip/ui/terminalstripmodel.cpp b/sources/TerminalStrip/ui/terminalstripmodel.cpp index 939325ab8..55d928925 100644 --- a/sources/TerminalStrip/ui/terminalstripmodel.cpp +++ b/sources/TerminalStrip/ui/terminalstripmodel.cpp @@ -154,6 +154,13 @@ bool TerminalStripModel::setData(const QModelIndex &index, const QVariant &value modified_ = true; modified_cell = FUNCTION_CELL; } + else if (column_ == LABEL_CELL && + role == Qt::EditRole) + { + rtd.label_ = value.toString(); + modified_ = true; + modified_cell = LABEL_CELL; + } //Set the modification to the terminal data if (modified_) @@ -384,5 +391,8 @@ void TerminalStripModelDelegate::setModelData(QWidget *editor, QAbstractItemMode model->setData(index, qcb->currentData(), Qt::EditRole); } } + else { + QStyledItemDelegate::setModelData(editor, model, index); + } } } diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index 2b7bef380..f036aeb4f 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -1327,6 +1327,26 @@ ElementData Element::elementData() const return m_data; } +/** + * @brief Element::setElementData + * Set new data for this element. + * If m_information of \p data is changed, emit elementInfoChange + * @param data + */ +void Element::setElementData(ElementData data) +{ + auto old_info = m_data.m_informations; + m_data = data; + + if (old_info != m_data.m_informations) { + m_data.m_informations.addValue(QStringLiteral("label"), actualLabel()); //Update the label if there is a formula + if (diagram()) { + diagram()->project()->dataBase()->elementInfoChanged(this); + } + emit elementInfoChange(old_info, m_data.m_informations); + } +} + /** @brief comparPos Compare position of the two elements. Compare 3 points: diff --git a/sources/qetgraphicsitem/element.h b/sources/qetgraphicsitem/element.h index ddf19f16d..a732569ef 100644 --- a/sources/qetgraphicsitem/element.h +++ b/sources/qetgraphicsitem/element.h @@ -42,7 +42,6 @@ class ElementTextItemGroup; class Element : public QetGraphicsItem { friend class DiagramEventAddElement; - friend class ChangeElementDataCommand; Q_OBJECT public: @@ -106,6 +105,7 @@ class Element : public QetGraphicsItem virtual void setElementInformations(DiagramContext dc); ElementData elementData() const; + void setElementData (ElementData data); /** * @brief kindInformations diff --git a/sources/undocommand/changeelementdatacommand.cpp b/sources/undocommand/changeelementdatacommand.cpp index 03648de1d..ca70809f5 100644 --- a/sources/undocommand/changeelementdatacommand.cpp +++ b/sources/undocommand/changeelementdatacommand.cpp @@ -28,12 +28,12 @@ ChangeElementDataCommand::ChangeElementDataCommand(Element *element, ElementData void ChangeElementDataCommand::undo() { if (m_element) { - m_element.data()->m_data = m_old_data; + m_element.data()->setElementData(m_old_data); } } void ChangeElementDataCommand::redo() { if (m_element) { - m_element.data()->m_data = m_new_data; + m_element.data()->setElementData(m_new_data); } }