diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index b828905be..12a28f15c 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -48,9 +48,6 @@ # include # include # include -# include -# include -# include # include # include # include @@ -1039,50 +1036,9 @@ void MDIViewPage::saveSVG() if (fn.isEmpty()) { return; } - - TechDraw::DrawPage *page = pageGui->getPageObject(); - const QString docName = QString::fromUtf8(page->getDocument()->getName()); - const QString pageName = QString::fromUtf8(page->getNameInDocument()); - QString svgDescription = tr("Drawing page: ") + - pageName + - tr(" exported from FreeCAD document: ") + - docName; - - //int width = page->getPageWidth(); - //int height = page->getPageHeight(); - //Base::Console().Message("TRACE - saveSVG - page width: %d height: %d\n",width,height); //A4 297x210 - QSvgGenerator svgGen; - svgGen.setFileName(fn); - svgGen.setSize(QSize((int) page->getPageWidth(), (int)page->getPageHeight())); - svgGen.setViewBox(QRect(0, 0, page->getPageWidth(), page->getPageHeight())); - //TODO: Exported Svg file is not quite right. (blockConnection(true)); // avoid to be notified by itself - Gui::Selection().clearSelection(); - m_view->toggleEdit(false); //fiddle cache, cosmetic lines, vertices, etc - m_view->scene()->update(); - - Gui::Selection().clearSelection(); - QPainter p; - - p.begin(&svgGen); - m_view->scene()->render(&p); - p.end(); - - m_view->toggleEdit(true); - m_view->scene()->update(); + m_view->saveSvg(fn); } void MDIViewPage::setFrameState(bool state) diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index e45d94896..566c132f9 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -29,13 +29,11 @@ # include # include # include -# include # include # include # include # include -# include -# include +# include # include # include # include @@ -491,6 +489,51 @@ void QGVPage::toggleEdit(bool enable) viewport()->repaint(); } +void QGVPage::saveSvg(QString filename) +{ + // TODO: We only have pageGui because constructor gets passed a view provider... + TechDraw::DrawPage *page( pageGui->getPageObject() ); + + const QString docName( QString::fromUtf8(page->getDocument()->getName()) ); + const QString pageName( QString::fromUtf8(page->getNameInDocument()) ); + QString svgDescription = tr("Drawing page: ") + + pageName + + tr(" exported from FreeCAD document: ") + + docName; + + //Base::Console().Message("TRACE - saveSVG - page width: %d height: %d\n",width,height); //A4 297x210 + QSvgGenerator svgGen; + svgGen.setFileName(filename); + svgGen.setSize(QSize((int) page->getPageWidth(), (int)page->getPageHeight())); + svgGen.setViewBox(QRect(0, 0, page->getPageWidth(), page->getPageHeight())); + //TODO: Exported Svg file is not quite right. update(); + + Gui::Selection().clearSelection(); + QPainter p; + + p.begin(&svgGen); + scene()->render(&p); + p.end(); + + toggleEdit(true); + scene()->update(); +} + void QGVPage::paintEvent(QPaintEvent *event) { diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index 02429f7e5..16a31a705 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -83,6 +83,8 @@ public: void toggleEdit(bool enable); + /// Renders the page to SVG with filename. + void saveSvg(QString filename); public Q_SLOTS: void setHighQualityAntialiasing(bool highQualityAntialiasing);