diff --git a/sources/editor/graphicspart/partdynamictextfield.cpp b/sources/editor/graphicspart/partdynamictextfield.cpp index 6eddf8d58..1aba5b242 100644 --- a/sources/editor/graphicspart/partdynamictextfield.cpp +++ b/sources/editor/graphicspart/partdynamictextfield.cpp @@ -277,6 +277,8 @@ QString PartDynamicTextField::infoName() const{ void PartDynamicTextField::setCompositeText(const QString &text) { m_composite_text = text; + if(elementScene()) + setPlainText(autonum::AssignVariables::replaceVariable(m_composite_text, elementScene()->elementInformation())); emit compositeTextChanged(m_composite_text); } @@ -483,9 +485,11 @@ void PartDynamicTextField::paint(QPainter *painter, const QStyleOptionGraphicsIt */ void PartDynamicTextField::elementInfoChanged() { + if(!elementScene()) + return; + if(m_text_from == DynamicElementTextItem::ElementInfo) - { - DiagramContext dc = elementScene()->elementInformation(); - setPlainText(dc.value(m_info_name).toString()); - } + setPlainText(elementScene()->elementInformation().value(m_info_name).toString()); + else if (m_text_from == DynamicElementTextItem::CompositeText && elementScene()) + setPlainText(autonum::AssignVariables::replaceVariable(m_composite_text, elementScene()->elementInformation())); } diff --git a/sources/editor/ui/dynamictextfieldeditor.cpp b/sources/editor/ui/dynamictextfieldeditor.cpp index 8564540c6..c0a29972f 100644 --- a/sources/editor/ui/dynamictextfieldeditor.cpp +++ b/sources/editor/ui/dynamictextfieldeditor.cpp @@ -22,6 +22,7 @@ #include "QPropertyUndoCommand/qpropertyundocommand.h" #include "qetelementeditor.h" #include "qetapp.h" +#include "compositetexteditdialog.h" #include #include @@ -277,3 +278,17 @@ void DynamicTextFieldEditor::on_m_text_from_cb_activated(int index) undoStack().push(undo); } } + +void DynamicTextFieldEditor::on_m_composite_text_pb_clicked() +{ + CompositeTextEditDialog ctd(m_text_field.data()->compositeText(), this); + if(ctd.exec()) + { + QString ct = ctd.plainText(); + if(ct != m_text_field.data()->compositeText()) + { + QPropertyUndoCommand *undo = new QPropertyUndoCommand(m_text_field.data(), "compositeText", m_text_field.data()->compositeText(), ctd.plainText()); + undoStack().push(undo); + } + } +} diff --git a/sources/editor/ui/dynamictextfieldeditor.h b/sources/editor/ui/dynamictextfieldeditor.h index 44e67a979..768b5e2b9 100644 --- a/sources/editor/ui/dynamictextfieldeditor.h +++ b/sources/editor/ui/dynamictextfieldeditor.h @@ -57,6 +57,8 @@ class DynamicTextFieldEditor : public ElementItemEditor void on_m_elmt_info_cb_activated(const QString &arg1); void on_m_text_from_cb_activated(int index); + void on_m_composite_text_pb_clicked(); + private: Ui::DynamicTextFieldEditor *ui; QPointer m_text_field; diff --git a/sources/ui/compositetexteditdialog.cpp b/sources/ui/compositetexteditdialog.cpp index bc3fc5962..613915a4d 100644 --- a/sources/ui/compositetexteditdialog.cpp +++ b/sources/ui/compositetexteditdialog.cpp @@ -19,6 +19,19 @@ CompositeTextEditDialog::CompositeTextEditDialog(DynamicElementTextItem *text, Q setUpComboBox(); } +CompositeTextEditDialog::CompositeTextEditDialog(QString text, QWidget *parent) : + QDialog(parent), + ui(new Ui::CompositeTextEditDialog) +{ + ui->setupUi(this); + m_default_text = text; + ui->m_plain_text_edit->setPlainText(m_default_text); +#if QT_VERSION >= 0x050300 + ui->m_plain_text_edit->setPlaceholderText(tr("Entrée votre texte composé ici, en vous aidant des variables disponible")); +#endif + setUpComboBox(); +} + CompositeTextEditDialog::~CompositeTextEditDialog() { delete ui; } @@ -38,34 +51,42 @@ QString CompositeTextEditDialog::plainText() const { void CompositeTextEditDialog::setUpComboBox() { QStringList qstrl; - if(m_text->parentElement()->linkType() & Element::AllReport) //Special treatment for text owned by a folio report + + if(m_text) { - qstrl << "label"; - - if(!m_text->m_watched_conductor.isNull()) + if(m_text->parentElement()->linkType() & Element::AllReport) //Special treatment for text owned by a folio report { - Conductor *cond = m_text->m_watched_conductor.data(); - if (!cond->properties().m_function.isEmpty()) - qstrl << "function"; - if(!cond->properties().m_tension_protocol.isEmpty()) - qstrl << "tension-protocol"; + qstrl << "label"; + + if(!m_text->m_watched_conductor.isNull()) + { + Conductor *cond = m_text->m_watched_conductor.data(); + if (!cond->properties().m_function.isEmpty()) + qstrl << "function"; + if(!cond->properties().m_tension_protocol.isEmpty()) + qstrl << "tension-protocol"; + } + } + else + { + Element *elmt = m_text->elementUseForInfo(); + if(!elmt) + return; + + QStringList info_list = QETApp::elementInfoKeys(); + info_list.removeAll("formula"); //No need to have formula + DiagramContext dc = elmt->elementInformations(); + + for(QString info : info_list) + { + if(dc.contains(info)) + qstrl << info; + } } } else { - Element *elmt = m_text->elementUseForInfo(); - if(!elmt) - return; - - QStringList info_list = QETApp::elementInfoKeys(); - info_list.removeAll("formula"); //No need to have formula - DiagramContext dc = elmt->elementInformations(); - - for(QString info : info_list) - { - if(dc.contains(info)) - qstrl << info; - } + qstrl = QETApp::elementInfoKeys(); } //We use a QMap because the keys of the map are sorted, then no matter the curent local, diff --git a/sources/ui/compositetexteditdialog.h b/sources/ui/compositetexteditdialog.h index 7329cb759..537f3cab6 100644 --- a/sources/ui/compositetexteditdialog.h +++ b/sources/ui/compositetexteditdialog.h @@ -22,6 +22,7 @@ class CompositeTextEditDialog : public QDialog public: explicit CompositeTextEditDialog(DynamicElementTextItem *text, QWidget *parent = nullptr); + explicit CompositeTextEditDialog(QString text, QWidget *parent = nullptr); ~CompositeTextEditDialog() override; QString plainText() const;