diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp index 7ee5b0f3c152..01aa277c0636 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp @@ -126,7 +126,6 @@ void QGISVGTemplate::draw() TechDraw::DrawSVGTemplate *tmplte = getSVGTemplate(); if(!tmplte) throw Base::Exception("Template Feature not set for QGISVGTemplate"); - load(QString::fromUtf8(tmplte->PageResult.getValue())); } diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index 1c867c487ba4..f49f16bdc410 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -471,8 +471,6 @@ QGIView * QGVPage::findParent(QGIView *view) const void QGVPage::setPageTemplate(TechDraw::DrawTemplate *obj) { - // Remove currently set background template - // Assign a base template class and create object dependent on removeTemplate(); if(obj->isDerivedFrom(TechDraw::DrawParametricTemplate::getClassTypeId())) { diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index 62e00560dd57..8ad70ec48259 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -92,7 +92,7 @@ void ViewProviderDrawingView::onChanged(const App::Property *prop) } if (prop == &Visibility) { - if(Visibility.getValue()) { + if(Visibility.getValue()) { show(); } else { hide(); diff --git a/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp b/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp index c3bfd5f1044e..8cea6d424318 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp @@ -37,10 +37,15 @@ #include #include #include +#include +#include #include #include #include +#include "QGITemplate.h" +#include "QGVPage.h" +#include "MDIViewPage.h" #include "ViewProviderTemplate.h" using namespace TechDrawGui; @@ -53,6 +58,7 @@ PROPERTY_SOURCE(TechDrawGui::ViewProviderTemplate, Gui::ViewProviderDocumentObje ViewProviderTemplate::ViewProviderTemplate() { sPixmap = "TechDraw_Tree_PageTemplate"; + DisplayMode.setStatus(App::Property::ReadOnly,true); } ViewProviderTemplate::~ViewProviderTemplate() @@ -80,10 +86,69 @@ std::vector ViewProviderTemplate::getDisplayModes(void) const void ViewProviderTemplate::updateData(const App::Property* prop) { - //Base::Console().Log("ViewProviderTemplate::updateData(%s)/n",prop->getName()); + //Base::Console().Log("ViewProviderTemplate::updateData(%s)/n",prop->getName()); Gui::ViewProviderDocumentObject::updateData(prop); } +void ViewProviderTemplate::onChanged(const App::Property *prop) +{ + App::DocumentObject* obj = getObject(); + if (!obj || obj->isRestoring()) { + Gui::ViewProviderDocumentObject::onChanged(prop); + return; + } + + if (prop == &Visibility) { + if(Visibility.getValue()) { + show(); + } else { + hide(); + } + } + Gui::ViewProviderDocumentObject::onChanged(prop); +} + +void ViewProviderTemplate::show(void) +{ + QGITemplate* qTemplate = getQTemplate(); + if (qTemplate != nullptr) { + qTemplate->show(); + } + + ViewProviderDocumentObject::show(); +} + +void ViewProviderTemplate::hide(void) +{ + QGITemplate* qTemplate = getQTemplate(); + if (qTemplate != nullptr) { + qTemplate->hide(); + } + + ViewProviderDocumentObject::hide(); +} + +bool ViewProviderTemplate::isShow(void) const +{ + return Visibility.getValue(); +} + +QGITemplate* ViewProviderTemplate::getQTemplate(void) +{ + QGITemplate *result = nullptr; + TechDraw::DrawTemplate* dt = getTemplate(); + if (dt) { + Gui::MDIView* gmdi = getActiveView(); + if (gmdi != nullptr) { + MDIViewPage* mdi = dynamic_cast(gmdi); + if (mdi != nullptr) { + result = mdi->getQGVPage()->getTemplate(); + } + } + } + return result; +} + TechDraw::DrawTemplate* ViewProviderTemplate::getTemplate() const { return dynamic_cast(pcObject); diff --git a/src/Mod/TechDraw/Gui/ViewProviderTemplate.h b/src/Mod/TechDraw/Gui/ViewProviderTemplate.h index dbb7dbf87c6d..b051a94729c7 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderTemplate.h +++ b/src/Mod/TechDraw/Gui/ViewProviderTemplate.h @@ -1,7 +1,7 @@ /*************************************************************************** * Copyright (c) 2014 Luke Parry * * * - * This file is part of the FreeCAD CAx development system. * + * This file is part of the FreeCAD CAx development system. * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library General Public * @@ -10,7 +10,7 @@ * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Library General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * @@ -31,6 +31,7 @@ namespace TechDraw{ } namespace TechDrawGui { +class QGITemplate; class TechDrawGuiExport ViewProviderTemplate : public Gui::ViewProviderDocumentObject { @@ -48,8 +49,11 @@ class TechDrawGuiExport ViewProviderTemplate : public Gui::ViewProviderDocumentO /// returns a list of all possible modes virtual std::vector getDisplayModes(void) const; virtual void updateData(const App::Property*); - -public: + virtual void onChanged(const App::Property *prop); + virtual void hide(void); + virtual void show(void); + virtual bool isShow(void) const; + QGITemplate* getQTemplate(void); TechDraw::DrawTemplate* getTemplate() const; };