From 50eb2b5513f7ef2cde15f4f4b097695c245c4bc2 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Fri, 28 Jun 2024 20:23:33 -0400 Subject: [PATCH] [TD]show autofill value in dialog --- src/Mod/TechDraw/App/DrawSVGTemplate.cpp | 6 +++--- src/Mod/TechDraw/Gui/DlgTemplateField.cpp | 6 ++++++ src/Mod/TechDraw/Gui/DlgTemplateField.h | 1 + src/Mod/TechDraw/Gui/DlgTemplateField.ui | 15 ++++++++++++++- src/Mod/TechDraw/Gui/QGISVGTemplate.cpp | 2 ++ src/Mod/TechDraw/Gui/TemplateTextField.cpp | 8 ++++++++ src/Mod/TechDraw/Gui/TemplateTextField.h | 2 ++ 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawSVGTemplate.cpp b/src/Mod/TechDraw/App/DrawSVGTemplate.cpp index 7caf3d3df7..c3becc8181 100644 --- a/src/Mod/TechDraw/App/DrawSVGTemplate.cpp +++ b/src/Mod/TechDraw/App/DrawSVGTemplate.cpp @@ -86,7 +86,7 @@ void DrawSVGTemplate::onChanged(const App::Property* prop) replaceFileIncluded(Template.getValue()); EditableTexts.setValues(getEditableTextsFromTemplate()); QDomDocument templateDocument; - if (getTemplateDocument(Template.getValue(), templateDocument)) { + if (getTemplateDocument(PageResult.getValue(), templateDocument)) { extractTemplateAttributes(templateDocument); } } @@ -251,7 +251,7 @@ std::map DrawSVGTemplate::getEditableTextsFromTemplate std::map editables; QDomDocument templateDocument; - if (!getTemplateDocument(Template.getValue(), templateDocument)) { + if (!getTemplateDocument(PageResult.getValue(), templateDocument)) { return editables; } @@ -294,7 +294,7 @@ QString DrawSVGTemplate::getAutofillByEditableName(QString nameToMatch) QString nameCapture{nameToMatch}; QDomDocument templateDocument; - if (!getTemplateDocument(Template.getValue(), templateDocument)) { + if (!getTemplateDocument(PageResult.getValue(), templateDocument)) { return {}; } diff --git a/src/Mod/TechDraw/Gui/DlgTemplateField.cpp b/src/Mod/TechDraw/Gui/DlgTemplateField.cpp index b0f804148d..df7b4b93b4 100644 --- a/src/Mod/TechDraw/Gui/DlgTemplateField.cpp +++ b/src/Mod/TechDraw/Gui/DlgTemplateField.cpp @@ -62,6 +62,12 @@ void DlgTemplateField::setFieldContent(std::string content) ui->leInput->setText(qs); } +void DlgTemplateField::setAutofillContent(std::string content) +{ + QString qs = QString::fromUtf8(content.data(), content.size()); + ui->leAutofill->setText(qs); +} + QString DlgTemplateField::getFieldContent() { return ui->leInput->text(); diff --git a/src/Mod/TechDraw/Gui/DlgTemplateField.h b/src/Mod/TechDraw/Gui/DlgTemplateField.h index ebd6a2f6c7..abe4248bee 100644 --- a/src/Mod/TechDraw/Gui/DlgTemplateField.h +++ b/src/Mod/TechDraw/Gui/DlgTemplateField.h @@ -44,6 +44,7 @@ public: void setFieldName(std::string name); void setFieldLength(int length); void setFieldContent(std::string content); + void setAutofillContent(std::string content); QString getFieldContent(); bool getAutofillState(); diff --git a/src/Mod/TechDraw/Gui/DlgTemplateField.ui b/src/Mod/TechDraw/Gui/DlgTemplateField.ui index c6f9492b97..0f4c5fb626 100644 --- a/src/Mod/TechDraw/Gui/DlgTemplateField.ui +++ b/src/Mod/TechDraw/Gui/DlgTemplateField.ui @@ -10,7 +10,7 @@ 0 0 340 - 127 + 132 @@ -56,6 +56,19 @@ + + + + false + + + The autofill replacement value. + + + true + + + diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp index a1eee54258..53a84fd968 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp @@ -230,6 +230,8 @@ void QGISVGTemplate::createClickHandles() textLength = std::max(charWidth, textLength); auto item(new TemplateTextField(this, svgTemplate, name.toStdString())); + auto autoValue = svgTemplate->getAutofillByEditableName(name); + item->setAutofill(autoValue); double pad = 1.0; double top = Rez::guiX(-svgTemplate->getHeight()) + y - textHeight - pad; diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.cpp b/src/Mod/TechDraw/Gui/TemplateTextField.cpp index af6e138d41..f40367b7d3 100644 --- a/src/Mod/TechDraw/Gui/TemplateTextField.cpp +++ b/src/Mod/TechDraw/Gui/TemplateTextField.cpp @@ -78,6 +78,7 @@ void TemplateTextField::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) ui.setFieldName(fieldNameStr); ui.setFieldContent(tmplte->EditableTexts[fieldNameStr]); + ui.setAutofillContent(Base::Tools::toStdString(m_autofillString)); if (ui.exec() == QDialog::Accepted) { QString qsClean = ui.getFieldContent(); @@ -100,6 +101,13 @@ void TemplateTextField::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) } } +//void setAutofill(std::string autofillString); +void TemplateTextField::setAutofill(QString autofillString) +{ + m_autofillString = autofillString; +} + + void TemplateTextField::setRectangle(QRectF rect) { m_rect->setRect(rect); diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.h b/src/Mod/TechDraw/Gui/TemplateTextField.h index 1971a7dc2b..bd75789558 100644 --- a/src/Mod/TechDraw/Gui/TemplateTextField.h +++ b/src/Mod/TechDraw/Gui/TemplateTextField.h @@ -55,6 +55,7 @@ class TechDrawGuiExport TemplateTextField : public QGraphicsItemGroup /// Returns the field name that this TemplateTextField represents std::string fieldName() const { return fieldNameStr; } + void setAutofill(QString autofillString); void setRectangle(QRectF rect); void setLine(QPointF from, QPointF to); void setLineColor(QColor color); @@ -62,6 +63,7 @@ class TechDrawGuiExport TemplateTextField : public QGraphicsItemGroup protected: TechDraw::DrawTemplate *tmplte; std::string fieldNameStr; + QString m_autofillString; /// Need this to properly handle mouse release void mousePressEvent(QGraphicsSceneMouseEvent *event) override;