From 3eb9037ada0e8f6da0174907aa9f109b8236928b Mon Sep 17 00:00:00 2001 From: WandererFan Date: Wed, 10 Aug 2016 15:54:41 -0400 Subject: [PATCH] Handle non-latin1 chars in template --- src/Mod/TechDraw/Gui/DlgTemplateField.cpp | 4 ++-- src/Mod/TechDraw/Gui/DlgTemplateField.h | 3 ++- src/Mod/TechDraw/Gui/QGISVGTemplate.cpp | 14 -------------- src/Mod/TechDraw/Gui/QGISVGTemplate.h | 4 +--- src/Mod/TechDraw/Gui/TemplateTextField.cpp | 13 +++++++------ 5 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/Mod/TechDraw/Gui/DlgTemplateField.cpp b/src/Mod/TechDraw/Gui/DlgTemplateField.cpp index 4a5669a20..949fc8937 100644 --- a/src/Mod/TechDraw/Gui/DlgTemplateField.cpp +++ b/src/Mod/TechDraw/Gui/DlgTemplateField.cpp @@ -60,10 +60,10 @@ void DlgTemplateField::setFieldContent(std::string content) leInput->setText(qs); } -std::string DlgTemplateField::getFieldContent() +QString DlgTemplateField::getFieldContent() { QString result = leInput->text(); - return result.toStdString(); + return result; } void DlgTemplateField::accept() diff --git a/src/Mod/TechDraw/Gui/DlgTemplateField.h b/src/Mod/TechDraw/Gui/DlgTemplateField.h index 2e5e7fc10..3066c73d9 100644 --- a/src/Mod/TechDraw/Gui/DlgTemplateField.h +++ b/src/Mod/TechDraw/Gui/DlgTemplateField.h @@ -25,6 +25,7 @@ #define DRAWINGGUI_DLGTEMPLATEFIELD_H #include +#include #include @@ -40,7 +41,7 @@ public: void setFieldName(std::string name); void setFieldContent(std::string content); - std::string getFieldContent(); + QString getFieldContent(); public Q_SLOTS: void accept(); diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp index ffa58d74e..0217272c9 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp @@ -65,7 +65,6 @@ QGISVGTemplate::QGISVGTemplate(QGraphicsScene *scene, QWidget* srWidget) QGISVGTemplate::~QGISVGTemplate() { - clearContents(); delete m_svgRender; } @@ -76,15 +75,6 @@ QVariant QGISVGTemplate::itemChange(GraphicsItemChange change, } -void QGISVGTemplate::clearContents() -{ - for (std::vector::iterator it = textFields.begin(); - it != textFields.end(); ++it) { - delete *it; - } - textFields.clear(); -} - void QGISVGTemplate::openFile(const QFile &file) { @@ -92,8 +82,6 @@ void QGISVGTemplate::openFile(const QFile &file) void QGISVGTemplate::load(const QString &fileName) { - clearContents(); - if (fileName.isEmpty()){ return; } @@ -105,13 +93,11 @@ void QGISVGTemplate::load(const QString &fileName) m_svgRender->load(file.fileName()); QSize size = m_svgRender->defaultSize(); - //Base::Console().Log("size of svg document <%i,%i>", size.width(), size.height()); m_svgItem->setSharedRenderer(m_svgRender); TechDraw::DrawSVGTemplate *tmplte = getSVGTemplate(); - //std::string temp = tmplte->Template.getValue(); std::string temp = tmplte->PageResult.getValue(); //fixes non-drawing of restored template if (temp.empty()) return; diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.h b/src/Mod/TechDraw/Gui/QGISVGTemplate.h index d8b9c1399..23a05764c 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.h +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.h @@ -49,8 +49,6 @@ public: enum {Type = QGraphicsItem::UserType + 153}; int type() const { return Type; } - /// Currently just frees up textFields - void clearContents(); void draw(); virtual void updateView(bool update = false); @@ -66,6 +64,6 @@ protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); }; // class QGISVGTemplate -} // namespace MDIViewPageGui +} #endif // DRAWINGGUI_QGRAPHICSITEMSVGTEMPLATE_H diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.cpp b/src/Mod/TechDraw/Gui/TemplateTextField.cpp index 559896a38..e39460c72 100644 --- a/src/Mod/TechDraw/Gui/TemplateTextField.cpp +++ b/src/Mod/TechDraw/Gui/TemplateTextField.cpp @@ -25,9 +25,10 @@ #ifndef _PreComp_ #include #include +#include #endif // #ifndef _PreCmp_ -#include + #include @@ -58,13 +59,13 @@ TemplateTextField::~TemplateTextField() void TemplateTextField::execDialog() { int uiCode = ui->exec(); - std::string newContent = ""; + QString newContent; if(uiCode == QDialog::Accepted) { if (tmplte) { - std::string newContent = ui->getFieldContent(); - QString qsClean = Qt::escape(QString::fromStdString(newContent)); //Qt5 note: this becomes qsNewContent.toHtmlEscaped(); - newContent = qsClean.toUtf8().constData(); - tmplte->EditableTexts.setValue(fieldNameStr, newContent); + newContent = ui->getFieldContent(); + QString qsClean = Qt::escape(newContent); //Qt5 note: this becomes qsNewContent.toHtmlEscaped(); + std::string utf8Content = qsClean.toUtf8().constData(); + tmplte->EditableTexts.setValue(fieldNameStr, utf8Content); } } ui = nullptr; //ui memory will be release by ui's parent Widget