diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 1ad37c70e..923926081 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -67,11 +67,6 @@ DrawView::DrawView(void) ADD_PROPERTY_TYPE(Y ,(0),group,App::Prop_None,"Y position of the view on the page in modelling units (mm)"); ADD_PROPERTY_TYPE(Rotation ,(0),group,App::Prop_None,"Rotation of the view on the page in degrees counterclockwise"); - // The 'Visible' property is handled by the view provider exclusively. It has the 'Output' flag set to - // avoid to call the execute() method. The view provider touches the page object, instead. - App::PropertyType propType = static_cast(App::Prop_Hidden|App::Prop_Output); - ADD_PROPERTY_TYPE(Visible, (true),group,propType,"Control whether view is visible in page object"); - ScaleType.setEnums(ScaleTypeEnums); ADD_PROPERTY_TYPE(ScaleType,((long)0),group, App::Prop_None, "Scale Type"); ADD_PROPERTY_TYPE(Scale ,(1.0),group,App::Prop_None,"Scale factor of the view"); diff --git a/src/Mod/TechDraw/App/DrawView.h b/src/Mod/TechDraw/App/DrawView.h index 0a125b75d..8a9e03096 100644 --- a/src/Mod/TechDraw/App/DrawView.h +++ b/src/Mod/TechDraw/App/DrawView.h @@ -50,7 +50,6 @@ public: App::PropertyEnumeration ScaleType; App::PropertyFloat Rotation; - App::PropertyBool Visible; /** @name methods overide Feature */ //@{ diff --git a/src/Mod/TechDraw/App/DrawViewClip.cpp b/src/Mod/TechDraw/App/DrawViewClip.cpp index 1cbb582a8..eaf711d54 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.cpp +++ b/src/Mod/TechDraw/App/DrawViewClip.cpp @@ -63,18 +63,7 @@ DrawViewClip::DrawViewClip(void) ADD_PROPERTY_TYPE(ShowLabels ,(0) ,group,App::Prop_None,"Specifies if View labels appear within the clip area"); ADD_PROPERTY_TYPE(Views ,(0) ,group,App::Prop_None,"The Views in this Clip group"); - // The 'Visible' property is handled by the view provider exclusively. It has the 'Output' flag set to - // avoid to call the execute() method. The view provider touches the page object, instead. - App::PropertyType propType = static_cast(App::Prop_Hidden|App::Prop_Output); - ADD_PROPERTY_TYPE(Visible, (true),group,propType,"Control whether Clip is visible in page object"); - // hide N/A properties - //int bitReadOnly = 2; - //int bitHidden = 3; - //ScaleType.StatusBits.set(bitReadOnly, true); - //ScaleType.StatusBits.set(bitHidden, true); - //Scale.StatusBits.set(bitReadOnly, true); - //Scale.StatusBits.set(bitHidden,true); ScaleType.setStatus(App::Property::ReadOnly,true); ScaleType.setStatus(App::Property::Hidden,true); Scale.setStatus(App::Property::ReadOnly,true); diff --git a/src/Mod/TechDraw/App/DrawViewClip.h b/src/Mod/TechDraw/App/DrawViewClip.h index ebc077e2a..436e5ce5e 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.h +++ b/src/Mod/TechDraw/App/DrawViewClip.h @@ -49,7 +49,6 @@ public: App::PropertyFloat Height; App::PropertyBool ShowFrame; App::PropertyBool ShowLabels; - App::PropertyBool Visible; App::PropertyLinkList Views; void addView(DrawView *view); diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index 5c22a232f..5c1433d09 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -626,8 +626,15 @@ void CmdTechDrawClipPlus::activated(int iMsg) std::string ClipName = clip->getNameInDocument(); std::string ViewName = view->getNameInDocument(); + double newX = clip->Width.getValue() / 2.0; + double newY = clip->Height.getValue() / 2.0; + openCommand("ClipPlus"); + doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = False",ViewName.c_str()); doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",ClipName.c_str(),ViewName.c_str()); + doCommand(Doc,"App.activeDocument().%s.X = %.3f",ViewName.c_str(),newX); + doCommand(Doc,"App.activeDocument().%s.Y = %.3f",ViewName.c_str(),newY); + doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = True",ViewName.c_str()); updateActive(); commitCommand(); } @@ -694,7 +701,9 @@ void CmdTechDrawClipMinus::activated(int iMsg) std::string ViewName = view->getNameInDocument(); openCommand("ClipMinus"); + doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = False",ViewName.c_str()); doCommand(Doc,"App.activeDocument().%s.removeView(App.activeDocument().%s)",ClipName.c_str(),ViewName.c_str()); + doCommand(Doc,"App.activeDocument().%s.ViewObject.Visibility = True",ViewName.c_str()); updateActive(); commitCommand(); } diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index 327b8fc7f..feae4042b 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -102,6 +102,8 @@ QGIView::QGIView(const QPoint &pos, QGraphicsScene *scene) m_border = new QGCustomBorder(); addToGroup(m_border); + + isVisible(true); } @@ -298,6 +300,15 @@ void QGIView::toggleBorder(bool state) borderVisible = state; drawBorder(); } +void QGIView::draw() +{ + if (isVisible()) { + show(); + } else { + hide(); + } +} + void QGIView::drawBorder() { if (!borderVisible) { diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index b62a85a74..1fab25365 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -25,6 +25,8 @@ #include #include +#include +#include #include #include "../App/DrawView.h" @@ -56,6 +58,9 @@ public: virtual void toggleBorder(bool state = true); virtual void drawBorder(void); + virtual void isVisible(bool state) { m_visibility = state; }; + virtual bool isVisible(void) {return m_visibility;}; + virtual void draw(void); /// Methods to ensure that Y-Coordinates are orientated correctly. void setPosition(qreal x, qreal y); @@ -78,6 +83,7 @@ Q_SIGNALS: void dirty(); protected: + virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); // Mouse handling virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event ); @@ -93,6 +99,7 @@ protected: QHash alignHash; bool locked; bool borderVisible; + bool m_visibility; bool m_innerView; //View is inside another View QPen m_pen; diff --git a/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp b/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp index c7c3a4cfc..2db9adfc8 100644 --- a/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewAnnotation.cpp @@ -111,6 +111,10 @@ void QGIViewAnnotation::updateView(bool update) void QGIViewAnnotation::draw() { + if (!isVisible()) { + return; + } + drawAnnotation(); if (borderVisible) { drawBorder(); diff --git a/src/Mod/TechDraw/Gui/QGIViewAnnotation.h b/src/Mod/TechDraw/Gui/QGIViewAnnotation.h index 599b59f8a..a78ed0d6f 100644 --- a/src/Mod/TechDraw/Gui/QGIViewAnnotation.h +++ b/src/Mod/TechDraw/Gui/QGIViewAnnotation.h @@ -52,7 +52,7 @@ public: void updateView(bool update = false); void setViewAnnoFeature(TechDraw::DrawViewAnnotation *obj); - virtual void draw(); + virtual void draw() override; virtual QRectF boundingRect() const; Q_SIGNALS: diff --git a/src/Mod/TechDraw/Gui/QGIViewClip.cpp b/src/Mod/TechDraw/Gui/QGIViewClip.cpp index 8ecd96fa3..b325456f1 100644 --- a/src/Mod/TechDraw/Gui/QGIViewClip.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewClip.cpp @@ -100,6 +100,10 @@ void QGIViewClip::updateView(bool update) void QGIViewClip::draw() { + if (!isVisible()) { + return; + } + drawClip(); if (borderVisible) { drawBorder(); @@ -132,18 +136,20 @@ void QGIViewClip::drawClip() for(std::vector::iterator it = childNames.begin(); it != childNames.end(); it++) { QGIView* qgiv = getQGIVByName((*it)); if (qgiv) { - //TODO: why is qgiv never already in a group? + //TODO: why is qgiv never already in a group? if (qgiv->group() != m_cliparea) { - double x = qgiv->getViewObject()->X.getValue(); - double y = qgiv->getViewObject()->Y.getValue(); + qgiv->hide(); m_cliparea->addToGroup(qgiv); qgiv->isInnerView(true); + double x = qgiv->getViewObject()->X.getValue(); + double y = qgiv->getViewObject()->Y.getValue(); qgiv->setPosition(x,y); if (viewClip->ShowLabels.getValue()) { qgiv->toggleBorder(true); } else { qgiv->toggleBorder(false); } + qgiv->show(); } } else { Base::Console().Warning("Logic error? - drawClip() - qgiv for %s not found\n",(*it).c_str()); //gview for feature !exist @@ -189,4 +195,3 @@ QRectF QGIViewClip::boundingRect() const } #include "moc_QGIViewClip.cpp" - diff --git a/src/Mod/TechDraw/Gui/QGIViewClip.h b/src/Mod/TechDraw/Gui/QGIViewClip.h index c22c190ac..01bfac76e 100644 --- a/src/Mod/TechDraw/Gui/QGIViewClip.h +++ b/src/Mod/TechDraw/Gui/QGIViewClip.h @@ -51,7 +51,7 @@ public: virtual void updateView(bool update = false); - virtual void draw(); + virtual void draw() override; virtual QRectF boundingRect() const; Q_SIGNALS: diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index 3e4e97285..11cf255ef 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -324,6 +324,10 @@ void QGIViewDimension::datumLabelDragFinished() void QGIViewDimension::draw() { + if (!isVisible()) { //should this be controlled by parent ViewPart? + return; + } + TechDraw::DrawViewDimension *dim = dynamic_cast(getViewObject()); if((!dim) || //nothing to draw, don't try (!dim->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) || diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 32eea5001..dca4642c5 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -272,6 +272,7 @@ void QGIViewPart::updateView(bool update) void QGIViewPart::draw() { drawViewPart(); drawBorder(); + QGIView::draw(); } void QGIViewPart::drawViewPart() diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.h b/src/Mod/TechDraw/Gui/QGIViewPart.h index 57a67cc22..420868c2e 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.h +++ b/src/Mod/TechDraw/Gui/QGIViewPart.h @@ -62,7 +62,7 @@ public: virtual void updateView(bool update = false); void tidy(); - virtual void draw(); + virtual void draw() override; virtual QRectF boundingRect() const; Q_SIGNALS: diff --git a/src/Mod/TechDraw/Gui/QGIViewSection.cpp b/src/Mod/TechDraw/Gui/QGIViewSection.cpp index f49d45b8c..9b717b990 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSection.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSection.cpp @@ -58,6 +58,10 @@ QGIViewSection::~QGIViewSection() void QGIViewSection::draw() { + if (!isVisible()) { + return; + } + QGIViewPart::draw(); drawSectionFace(); } diff --git a/src/Mod/TechDraw/Gui/QGIViewSection.h b/src/Mod/TechDraw/Gui/QGIViewSection.h index a7881149d..f7785d0c4 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSection.h +++ b/src/Mod/TechDraw/Gui/QGIViewSection.h @@ -45,7 +45,7 @@ public: explicit QGIViewSection(const QPoint &position, QGraphicsScene *scene); ~QGIViewSection(); - virtual void draw(); + virtual void draw() override; void updateView(bool update = false); enum {Type = QGraphicsItem::UserType + 108}; int type() const { return Type;} diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp index 8e0f39776..7e7836ae8 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp @@ -100,6 +100,10 @@ void QGIViewSymbol::updateView(bool update) void QGIViewSymbol::draw() { + if (!isVisible()) { + return; + } + drawSvg(); if (borderVisible) { drawBorder(); diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.h b/src/Mod/TechDraw/Gui/QGIViewSymbol.h index 1b94996e1..34b057486 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.h +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.h @@ -55,7 +55,7 @@ public: void updateView(bool update = false); void setViewSymbolFeature(TechDraw::DrawViewSymbol *obj); - virtual void draw(); + virtual void draw() override; virtual QRectF boundingRect() const; Q_SIGNALS: diff --git a/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h b/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h index 7527159ff..72d558650 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h +++ b/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h @@ -27,6 +27,8 @@ #include +#include "ViewProviderDrawingView.h" + namespace TechDraw{ class DrawViewAnnotation; } @@ -34,7 +36,7 @@ namespace TechDraw{ namespace TechDrawGui { -class TechDrawGuiExport ViewProviderAnnotation : public Gui::ViewProviderDocumentObject +class TechDrawGuiExport ViewProviderAnnotation : public ViewProviderDrawingView { PROPERTY_HEADER(TechDrawGui::ViewProviderAnnotation); diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index 6c7a641f7..2f6547c7d 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -35,13 +35,21 @@ #include #include #include + +#include +#include #include +#include +#include +#include #include #include #include +#include "ViewProviderPage.h" #include "ViewProviderDrawingView.h" - +#include "QGVPage.h" +#include "MDIViewPage.h" using namespace TechDrawGui; @@ -51,9 +59,9 @@ ViewProviderDrawingView::ViewProviderDrawingView() { sPixmap = "TechDraw_Tree_View"; - // Do not show in property editor - //DisplayMode.StatusBits.set(3, true); + // Do not show in property editor why? wf DisplayMode.setStatus(App::Property::ReadOnly,true); + m_docReady = true; } ViewProviderDrawingView::~ViewProviderDrawingView() @@ -62,7 +70,6 @@ ViewProviderDrawingView::~ViewProviderDrawingView() void ViewProviderDrawingView::attach(App::DocumentObject *pcFeat) { - // call parent attach method ViewProviderDocumentObject::attach(pcFeat); } @@ -77,38 +84,74 @@ std::vector ViewProviderDrawingView::getDisplayModes(void) const return StrList; } +void ViewProviderDrawingView::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 ViewProviderDrawingView::show(void) { - ViewProviderDocumentObject::show(); - - App::DocumentObject* obj = getObject(); + TechDraw::DrawView* obj = getViewObject(); if (!obj || obj->isRestoring()) return; + if (obj->getTypeId().isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - // The 'Visible' property is marked as 'Output'. To update the drawing on recompute - // the parent page object is touched. - static_cast(obj)->Visible.setValue(true); - std::vector inp = obj->getInList(); - for (std::vector::iterator it = inp.begin(); it != inp.end(); ++it) - (*it)->touch(); + QGIView* qView = getQView(); + if (qView) { + qView->isVisible(true); + qView->draw(); + qView->show(); + } } + ViewProviderDocumentObject::show(); } void ViewProviderDrawingView::hide(void) { - ViewProviderDocumentObject::hide(); - - App::DocumentObject* obj = getObject(); + TechDraw::DrawView* obj = getViewObject(); if (!obj || obj->isRestoring()) return; + if (obj->getTypeId().isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - // The 'Visible' property is marked as 'Output'. To update the drawing on recompute - // the parent page object is touched. - static_cast(obj)->Visible.setValue(false); - std::vector inp = obj->getInList(); - for (std::vector::iterator it = inp.begin(); it != inp.end(); ++it) - (*it)->touch(); + QGIView* qView = getQView(); + if (qView) { + qView->isVisible(false); + qView->draw(); + qView->hide(); + } } + ViewProviderDocumentObject::hide(); +} + +QGIView* ViewProviderDrawingView::getQView(void) +{ + QGIView *qView = nullptr; + if (m_docReady){ + Gui::Document* guiDoc = Gui::Application::Instance->getDocument(getViewObject()->getDocument()); + Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage()); + ViewProviderPage* dvp = dynamic_cast(vp); + if (dvp) { + if (dvp->getMDIViewPage()) { + if (dvp->getMDIViewPage()->getQGVPage()) { + qView = dynamic_cast(dvp->getMDIViewPage()->getQGVPage()->findView(getViewObject())); + } + } + } + } + return qView; } bool ViewProviderDrawingView::isShow(void) const @@ -118,17 +161,24 @@ bool ViewProviderDrawingView::isShow(void) const void ViewProviderDrawingView::startRestoring() { - // do nothing + m_docReady = false; + Gui::ViewProviderDocumentObject::startRestoring(); } void ViewProviderDrawingView::finishRestoring() { - // do nothing + m_docReady = true; + if (Visibility.getValue()) { + show(); + } else { + hide(); + } + Gui::ViewProviderDocumentObject::finishRestoring(); } -void ViewProviderDrawingView::updateData(const App::Property*) -{ -} +//void ViewProviderDrawingView::updateData(const App::Property*) +//{ +//} TechDraw::DrawView* ViewProviderDrawingView::getViewObject() const { diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h index fe8e0aeb7..e4d1baae6 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h @@ -27,6 +27,7 @@ #include #include +#include "QGIView.h" namespace TechDraw{ class DrawView; @@ -34,7 +35,6 @@ namespace TechDraw{ namespace TechDrawGui { - class TechDrawGuiExport ViewProviderDrawingView : public Gui::ViewProviderDocumentObject { PROPERTY_HEADER(TechDrawGui::ViewProviderDrawingView); @@ -51,19 +51,25 @@ public: virtual bool useNewSelectionModel(void) const {return false;} /// returns a list of all possible modes virtual std::vector getDisplayModes(void) const; - virtual void updateData(const App::Property*); + //virtual void updateData(const App::Property*); /// Hide the object in the view virtual void hide(void); /// Show the object in the view virtual void show(void); virtual bool isShow(void) const; + virtual void onChanged(const App::Property *prop); + QGIView* getQView(void); + /** @name Restoring view provider from document load */ //@{ virtual void startRestoring(); virtual void finishRestoring(); //@} TechDraw::DrawView* getViewObject() const; + +private: + bool m_docReady; //sb MDI + QGraphicsScene ready }; } // namespace TechDrawGui diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index 52d42896f..3f665ecdf 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -73,7 +73,7 @@ PROPERTY_SOURCE(TechDrawGui::ViewProviderPage, Gui::ViewProviderDocumentObject) ViewProviderPage::ViewProviderPage() : view(0), - restoreState(false) + m_docReady(true) { sPixmap = "TechDraw_Tree_Page"; @@ -325,13 +325,13 @@ void ViewProviderPage::onChanged(const App::Property *prop) void ViewProviderPage::startRestoring() { - restoreState = true; + m_docReady = false; Gui::ViewProviderDocumentObject::startRestoring(); } void ViewProviderPage::finishRestoring() { - restoreState = false; + m_docReady = true; static_cast(showMDIViewPage()); Gui::ViewProviderDocumentObject::finishRestoring(); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.h b/src/Mod/TechDraw/Gui/ViewProviderPage.h index a757ce850..18945c74c 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.h +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.h @@ -82,7 +82,7 @@ public: virtual void updateData(const App::Property* prop); virtual void startRestoring(); virtual void finishRestoring(); - bool isRestoring(void) {return restoreState;} + bool isRestoring(void) {return !m_docReady;} TechDraw::DrawPage* getPageObject() const; void unsetEdit(int ModNum); @@ -94,11 +94,10 @@ protected: private: QPointer view; - bool restoreState; + bool m_docReady; }; } // namespace TechDrawGui #endif // DRAWINGGUI_VIEWPROVIDERPAGE_H - diff --git a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h index c2e930c11..a9042f6d5 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h +++ b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h @@ -28,6 +28,8 @@ #include +#include "ViewProviderDrawingView.h" + namespace TechDraw{ class DrawProjGroup; } @@ -35,7 +37,7 @@ namespace TechDraw{ namespace TechDrawGui { -class TechDrawGuiExport ViewProviderProjGroup : public Gui::ViewProviderDocumentObject +class TechDrawGuiExport ViewProviderProjGroup : public ViewProviderDrawingView { PROPERTY_HEADER(TechDrawGui::ViewProviderProjGroup); diff --git a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h index 4c8bd69a8..3481c6d93 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h +++ b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.h @@ -26,6 +26,8 @@ #include +#include "ViewProviderSymbol.h" + namespace TechDraw{ class DrawViewSpreadsheet; } @@ -33,7 +35,7 @@ namespace TechDraw{ namespace TechDrawGui { -class TechDrawGuiExport ViewProviderSpreadsheet : public Gui::ViewProviderDocumentObject +class TechDrawGuiExport ViewProviderSpreadsheet : public ViewProviderSymbol { PROPERTY_HEADER(TechDrawGui::ViewProviderSpreadsheet); diff --git a/src/Mod/TechDraw/Gui/ViewProviderSymbol.h b/src/Mod/TechDraw/Gui/ViewProviderSymbol.h index 49e1e9881..5a38ae998 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderSymbol.h +++ b/src/Mod/TechDraw/Gui/ViewProviderSymbol.h @@ -27,6 +27,8 @@ #include +#include "ViewProviderDrawingView.h" + namespace TechDraw{ class DrawViewSymbol; } @@ -34,7 +36,7 @@ namespace TechDraw{ namespace TechDrawGui { -class TechDrawGuiExport ViewProviderSymbol : public Gui::ViewProviderDocumentObject +class TechDrawGuiExport ViewProviderSymbol : public ViewProviderDrawingView { PROPERTY_HEADER(TechDrawGui::ViewProviderSymbol); diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp index 2642bffe5..5d7c1faae 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp @@ -91,36 +91,31 @@ std::vector ViewProviderViewClip::claimChildren(void) cons void ViewProviderViewClip::show(void) { - ViewProviderDrawingView::show(); - + //TODO: not sure that clip members need to be touched when hiding clip group App::DocumentObject* obj = getObject(); if (!obj || obj->isRestoring()) return; if (obj->getTypeId().isDerivedFrom(TechDraw::DrawViewClip::getClassTypeId())) { - // The 'Visible' property is marked as 'Output'. To update the drawing on recompute - // the parent page object is touched. - static_cast(obj)->Visible.setValue(true); std::vector inp = obj->getInList(); for (std::vector::iterator it = inp.begin(); it != inp.end(); ++it) (*it)->touch(); } + ViewProviderDrawingView::show(); + } void ViewProviderViewClip::hide(void) { - ViewProviderDrawingView::hide(); - + //TODO: not sure that clip members need to be touched when hiding clip group App::DocumentObject* obj = getObject(); if (!obj || obj->isRestoring()) return; if (obj->getTypeId().isDerivedFrom(TechDraw::DrawViewClip::getClassTypeId())) { - // The 'Visible' property is marked as 'Output'. To update the drawing on recompute - // the parent page object is touched. - static_cast(obj)->Visible.setValue(false); std::vector inp = obj->getInList(); for (std::vector::iterator it = inp.begin(); it != inp.end(); ++it) (*it)->touch(); } + ViewProviderDrawingView::hide(); } bool ViewProviderViewClip::isShow(void) const @@ -128,20 +123,6 @@ bool ViewProviderViewClip::isShow(void) const return Visibility.getValue(); } -void ViewProviderViewClip::startRestoring() -{ - // do nothing -} - -void ViewProviderViewClip::finishRestoring() -{ - // do nothing -} - -void ViewProviderViewClip::updateData(const App::Property*) -{ -} - TechDraw::DrawViewClip* ViewProviderViewClip::getObject() const { return dynamic_cast(pcObject); diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h index d9006e092..2ec85773c 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h @@ -50,7 +50,6 @@ public: virtual bool useNewSelectionModel(void) const {return false;} /// returns a list of all possible modes virtual std::vector getDisplayModes(void) const; - virtual void updateData(const App::Property*); TechDraw::DrawViewClip* getObject() const; /// Hide the object in the view @@ -60,11 +59,6 @@ public: virtual bool isShow(void) const; std::vector claimChildren(void) const; - /** @name Restoring view provider from document load */ - //@{ - virtual void startRestoring(); - virtual void finishRestoring(); - //@} }; } // namespace TechDrawGui diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index c004c7bc6..18e03b553 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -112,11 +112,6 @@ std::vector ViewProviderViewPart::claimChildren(void) cons } } - -void ViewProviderViewPart::updateData(const App::Property*) -{ -} - TechDraw::DrawViewPart* ViewProviderViewPart::getViewPart() const { return dynamic_cast(pcObject); diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h index 8e9b16f3b..3b39c9da3 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h @@ -47,7 +47,6 @@ public: virtual bool useNewSelectionModel(void) const {return false;} /// returns a list of all possible modes virtual std::vector getDisplayModes(void) const; - virtual void updateData(const App::Property*); public: virtual std::vector claimChildren(void) const;