From 4d7f00860e888aa16f099bfb3cc735d2605d183d Mon Sep 17 00:00:00 2001 From: WandererFan Date: Sat, 10 Sep 2016 12:41:25 -0400 Subject: [PATCH] reduce use of "execute" on cosmetic changes. --- src/Mod/TechDraw/App/DrawPage.cpp | 3 +- src/Mod/TechDraw/App/DrawView.cpp | 1 - src/Mod/TechDraw/App/DrawViewClip.cpp | 3 +- src/Mod/TechDraw/App/DrawViewPart.cpp | 40 ++------- src/Mod/TechDraw/App/DrawViewSection.cpp | 4 - src/Mod/TechDraw/Gui/MDIViewPage.cpp | 17 ++-- src/Mod/TechDraw/Gui/MDIViewPage.h | 2 +- src/Mod/TechDraw/Gui/QGIViewAnnotation.h | 2 +- src/Mod/TechDraw/Gui/QGIViewDimension.h | 2 +- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 1 - src/Mod/TechDraw/Gui/QGIViewSection.h | 2 +- src/Mod/TechDraw/Gui/QGIViewSymbol.h | 2 +- src/Mod/TechDraw/Gui/QGVPage.cpp | 22 ++--- src/Mod/TechDraw/Gui/QGVPage.h | 2 +- .../TechDraw/Gui/ViewProviderAnnotation.cpp | 25 ++++-- src/Mod/TechDraw/Gui/ViewProviderAnnotation.h | 2 +- .../TechDraw/Gui/ViewProviderDimension.cpp | 2 +- .../TechDraw/Gui/ViewProviderDrawingView.cpp | 15 +++- .../TechDraw/Gui/ViewProviderDrawingView.h | 3 +- src/Mod/TechDraw/Gui/ViewProviderPage.cpp | 86 +++++++++---------- src/Mod/TechDraw/Gui/ViewProviderPage.h | 4 +- .../TechDraw/Gui/ViewProviderSpreadsheet.cpp | 15 ++-- src/Mod/TechDraw/Gui/ViewProviderSymbol.cpp | 10 +-- src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp | 16 ++++ src/Mod/TechDraw/Gui/ViewProviderViewClip.h | 1 + src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp | 33 ++++++- src/Mod/TechDraw/Gui/ViewProviderViewPart.h | 3 + .../TechDraw/Gui/ViewProviderViewSection.cpp | 14 ++- 28 files changed, 188 insertions(+), 144 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawPage.cpp b/src/Mod/TechDraw/App/DrawPage.cpp index 4a3b555804cd..2ea5bb8225bc 100644 --- a/src/Mod/TechDraw/App/DrawPage.cpp +++ b/src/Mod/TechDraw/App/DrawPage.cpp @@ -107,7 +107,6 @@ void DrawPage::onChanged(const App::Property* prop) } else if (prop == &Views) { if (!isRestoring()) { //TODO: reload if Views prop changes (ie adds/deletes) - //touch(); } } else if(prop == &Scale) { // touch all views in the Page as they may be dependent on this scale @@ -136,6 +135,8 @@ void DrawPage::onChanged(const App::Property* prop) App::DocumentObjectExecReturn *DrawPage::execute(void) { + //Page is just a property storage area? no real logic involved? + //all this does is trigger onChanged in this and ViewProviderPage Template.touch(); Views.touch(); return App::DocumentObject::StdReturn; diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 9636d63c9250..0d148c0c2d0b 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -129,7 +129,6 @@ short DrawView::mustExecute() const if (!isRestoring()) { result = (X.isTouched() || Y.isTouched() || - Rotation.isTouched() || Scale.isTouched() || ScaleType.isTouched() ); } diff --git a/src/Mod/TechDraw/App/DrawViewClip.cpp b/src/Mod/TechDraw/App/DrawViewClip.cpp index 4bc3c5e7c7a8..5478be043dae 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.cpp +++ b/src/Mod/TechDraw/App/DrawViewClip.cpp @@ -76,8 +76,7 @@ void DrawViewClip::onChanged(const App::Property* prop) { if (prop == &Height || prop == &Width || - prop == &ShowFrame || - prop == &ShowLabels) { + prop == &Views) { if (!isRestoring()) { DrawViewClip::execute(); } diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index a4abb8620961..8073184cacfc 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -225,22 +225,10 @@ short DrawViewPart::mustExecute() const Source.isTouched() || Scale.isTouched() || ScaleType.isTouched() || - Tolerance.isTouched()); - -// don't have to execute DVP, but should update Gui -// ShowHiddenLines.isTouched() || -// ShowSmoothLines.isTouched() || -// ShowSeamLines.isTouched() || -// LineWidth.isTouched() || -// HiddenWidth.isTouched() || -// ShowCenters.isTouched() || -// CenterScale.isTouched() || -// ShowSectionLine.isTouched() || -// HorizSectionLine.isTouched() || -// ArrowUpSection.isTouched() || -// SymbolSection.isTouched() || -// HorizCenterLine.isTouched() || -// VertCenterLine.isTouched()); + Tolerance.isTouched() || + ShowHiddenLines.isTouched() || + ShowSmoothLines.isTouched() || + ShowSeamLines.isTouched() ); } if (result) { @@ -259,28 +247,16 @@ void DrawViewPart::onChanged(const App::Property* prop) prop == &XAxisDirection || prop == &Source || prop == &Scale || - prop == &ScaleType) { -//don't need to execute, but need to update Gui -// prop == &ShowHiddenLines || -// prop == &ShowSmoothLines || -// prop == &ShowSeamLines || -// prop == &LineWidth || -// prop == &HiddenWidth || -// prop == &ShowCenters || -// prop == &CenterScale || -// prop == &ShowSectionLine || -// prop == &HorizSectionLine || -// prop == &ArrowUpSection || -// prop == &SymbolSection || -// prop == &HorizCenterLine || -// prop == &VertCenterLine) { + prop == &ScaleType || + prop == &ShowHiddenLines || + prop == &ShowSmoothLines || + prop == &ShowSeamLines) try { App::DocumentObjectExecReturn *ret = recompute(); delete ret; } catch (...) { } - } } DrawView::onChanged(prop); diff --git a/src/Mod/TechDraw/App/DrawViewSection.cpp b/src/Mod/TechDraw/App/DrawViewSection.cpp index fb253b926172..4302721ae406 100644 --- a/src/Mod/TechDraw/App/DrawViewSection.cpp +++ b/src/Mod/TechDraw/App/DrawViewSection.cpp @@ -115,10 +115,6 @@ short DrawViewSection::mustExecute() const BaseView.isTouched() || SectionNormal.isTouched() || SectionOrigin.isTouched() ); - -//don't need to execute, but need to update Gui -// ShowCutSurface.isTouched() || -// CutSurfaceColor.isTouched() ); } if (result) { return result; diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index d08317890c68..7c7022320e7d 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -96,7 +96,7 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* : Gui::MDIView(doc, parent), m_orientation(QPrinter::Landscape), m_paperSize(QPrinter::A4), - pageGui(pageVp), + m_vpPage(pageVp), m_frameState(true) { @@ -149,7 +149,7 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* // A fresh page is added and we iterate through its collected children and add these to Canvas View -MLP // if docobj is a featureviewcollection (ex orthogroup), add its child views. if there are ever children that have children, // we'll have to make this recursive. -WF - const std::vector &grp = pageGui->getPageObject()->Views.getValues(); + const std::vector &grp = m_vpPage->getDrawPage()->Views.getValues(); std::vector childViews; for (std::vector::const_iterator it = grp.begin();it != grp.end(); ++it) { attachView(*it); @@ -165,7 +165,7 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* //therefore we need to make sure parentage of the graphics representation is set properly. bit of a kludge. setDimensionGroups(); - App::DocumentObject *obj = pageGui->getPageObject()->Template.getValue(); + App::DocumentObject *obj = m_vpPage->getDrawPage()->Template.getValue(); auto pageTemplate( dynamic_cast(obj) ); if( pageTemplate ) { attachTemplate(pageTemplate); @@ -312,14 +312,14 @@ bool MDIViewPage::attachView(App::DocumentObject *obj) void MDIViewPage::updateTemplate(bool forceUpdate) { - App::DocumentObject *templObj = pageGui->getPageObject()->Template.getValue(); + App::DocumentObject *templObj = m_vpPage->getDrawPage()->Template.getValue(); // TODO: what if template has been deleted? templObj will be NULL. segfault? if (!templObj) { - Base::Console().Log("INFO - MDIViewPage::updateTemplate - Page: %s has NO template!!\n",pageGui->getPageObject()->getNameInDocument()); + Base::Console().Log("INFO - MDIViewPage::updateTemplate - Page: %s has NO template!!\n",m_vpPage->getDrawPage()->getNameInDocument()); return; } - if(pageGui->getPageObject()->Template.isTouched() || templObj->isTouched()) { + if(m_vpPage->getDrawPage()->Template.isTouched() || templObj->isTouched()) { // Template is touched so update if(forceUpdate || @@ -338,10 +338,9 @@ void MDIViewPage::updateTemplate(bool forceUpdate) void MDIViewPage::updateDrawing(bool forceUpdate) { - // We cannot guarantee if the number of graphical representations (QGIVxxxx) have changed so check the number - // Why? + // We cannot guarantee if the number of graphical representations (QGIVxxxx) have changed so check the number (MLP) const std::vector &graphicsList = m_view->getViews(); - const std::vector &pageChildren = pageGui->getPageObject()->Views.getValues(); + const std::vector &pageChildren = m_vpPage->getDrawPage()->Views.getValues(); // Count total # DocumentObjects in Page unsigned int docObjCount = 0; diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.h b/src/Mod/TechDraw/Gui/MDIViewPage.h index 774dd611d0bf..fda96b93630d 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.h +++ b/src/Mod/TechDraw/Gui/MDIViewPage.h @@ -116,7 +116,7 @@ public Q_SLOTS: QString m_currentPath; QPrinter::Orientation m_orientation; QPrinter::PaperSize m_paperSize; - ViewProviderPage *pageGui; + ViewProviderPage *m_vpPage; bool m_frameState; diff --git a/src/Mod/TechDraw/Gui/QGIViewAnnotation.h b/src/Mod/TechDraw/Gui/QGIViewAnnotation.h index 12ed6c3f8d2c..6a8ffba9951a 100644 --- a/src/Mod/TechDraw/Gui/QGIViewAnnotation.h +++ b/src/Mod/TechDraw/Gui/QGIViewAnnotation.h @@ -46,7 +46,7 @@ class TechDrawGuiExport QGIViewAnnotation : public QGIView enum {Type = QGraphicsItem::UserType + 120}; int type() const override { return Type;} - void updateView(bool update = false) override; + virtual void updateView(bool update = false) override; void setViewAnnoFeature(TechDraw::DrawViewAnnotation *obj); virtual void draw() override; diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.h b/src/Mod/TechDraw/Gui/QGIViewDimension.h index fea22785cb5d..efc761560bf2 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.h +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.h @@ -95,7 +95,7 @@ class TechDrawGuiExport QGIViewDimension : public QObject, public QGIView int type() const { return Type;} virtual void drawBorder(); - virtual void updateView(bool update = false); + virtual void updateView(bool update = false) override; virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ); public Q_SLOTS: diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 54aa8268a04e..d1f6db341336 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -243,7 +243,6 @@ void QGIViewPart::updateView(bool update) if( viewPart == nullptr ) { return; } - //Base::Console().Message("TRACE - QGIVP::updateView(%d) - %s\n",update,getViewObject()->getNameInDocument()); QGIView::updateView(update); diff --git a/src/Mod/TechDraw/Gui/QGIViewSection.h b/src/Mod/TechDraw/Gui/QGIViewSection.h index 2368f7900ec5..d77dfdb9c96a 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSection.h +++ b/src/Mod/TechDraw/Gui/QGIViewSection.h @@ -36,7 +36,7 @@ class TechDrawGuiExport QGIViewSection : public QGIViewPart ~QGIViewSection() = default; virtual void draw() override; - void updateView(bool update = false) override; + virtual void updateView(bool update = false) override; enum {Type = QGraphicsItem::UserType + 108}; int type() const override { return Type;} void drawSectionLine(bool b) override; diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.h b/src/Mod/TechDraw/Gui/QGIViewSymbol.h index 5eb54cbe676c..9369dd370b32 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.h +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.h @@ -50,7 +50,7 @@ class TechDrawGuiExport QGIViewSymbol : public QGIView enum {Type = QGraphicsItem::UserType + 121}; int type() const override { return Type;} - void updateView(bool update = false) override; + virtual void updateView(bool update = false) override; void setViewSymbolFeature(TechDraw::DrawViewSymbol *obj); virtual void draw() override; diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index ee92dd00b909..c40c67a0c5ed 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -85,11 +85,11 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent) , pageTemplate(0) , m_renderer(Native) , drawBkg(true) - , pageGui(0) + , m_vpPage(0) { assert(vp); - pageGui = vp; - const char* name = vp->getPageObject()->getNameInDocument(); + m_vpPage = vp; + const char* name = vp->getDrawPage()->getNameInDocument(); setObjectName(QString::fromLocal8Bit(name)); setScene(s); @@ -117,7 +117,7 @@ void QGVPage::drawBackground(QPainter *p, const QRectF &) if(!drawBkg) return; - if (!pageGui->getPageObject()) { + if (!m_vpPage->getDrawPage()) { //Base::Console().Log("TROUBLE - QGVP::drawBackground - no Page Object!\n"); return; } @@ -129,7 +129,7 @@ void QGVPage::drawBackground(QPainter *p, const QRectF &) p->setBrush(*bkgBrush); p->drawRect(viewport()->rect()); - if(!pageGui) { + if(!m_vpPage) { return; } @@ -138,9 +138,9 @@ void QGVPage::drawBackground(QPainter *p, const QRectF &) float pageWidth = 420, pageHeight = 297; - if ( pageGui->getPageObject()->hasValidTemplate() ) { - pageWidth = pageGui->getPageObject()->getPageWidth(); - pageHeight = pageGui->getPageObject()->getPageHeight(); + if ( m_vpPage->getDrawPage()->hasValidTemplate() ) { + pageWidth = m_vpPage->getDrawPage()->getPageWidth(); + pageHeight = m_vpPage->getDrawPage()->getPageHeight(); } // Draw the white page @@ -473,8 +473,8 @@ void QGVPage::toggleHatch(bool enable) void QGVPage::saveSvg(QString filename) { - // TODO: We only have pageGui because constructor gets passed a view provider... - TechDraw::DrawPage *page( pageGui->getPageObject() ); + // TODO: We only have m_vpPage because constructor gets passed a view provider... + TechDraw::DrawPage *page( m_vpPage->getDrawPage() ); const QString docName( QString::fromUtf8(page->getDocument()->getName()) ); const QString pageName( QString::fromUtf8(page->getNameInDocument()) ); @@ -569,7 +569,7 @@ void QGVPage::mouseReleaseEvent(QMouseEvent *event) TechDraw::DrawPage* QGVPage::getDrawPage() { - return pageGui->getPageObject(); + return m_vpPage->getDrawPage(); } diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index a6e743b96bd3..15c9f006b89c 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -112,7 +112,7 @@ public Q_SLOTS: bool drawBkg; QBrush* bkgBrush; QImage m_image; - ViewProviderPage *pageGui; + ViewProviderPage *m_vpPage; }; } // namespace MDIViewPageGui diff --git a/src/Mod/TechDraw/Gui/ViewProviderAnnotation.cpp b/src/Mod/TechDraw/Gui/ViewProviderAnnotation.cpp index caadc59fcdee..c4bdc023b899 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderAnnotation.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderAnnotation.cpp @@ -42,7 +42,7 @@ using namespace TechDrawGui; -PROPERTY_SOURCE(TechDrawGui::ViewProviderAnnotation, Gui::ViewProviderDocumentObject) +PROPERTY_SOURCE(TechDrawGui::ViewProviderAnnotation, TechDrawGui::ViewProviderDrawingView) //************************************************************************** // Construction/Destruction @@ -59,25 +59,40 @@ ViewProviderAnnotation::~ViewProviderAnnotation() void ViewProviderAnnotation::attach(App::DocumentObject *pcFeat) { // call parent attach method - ViewProviderDocumentObject::attach(pcFeat); + ViewProviderDrawingView::attach(pcFeat); } void ViewProviderAnnotation::setDisplayMode(const char* ModeName) { - ViewProviderDocumentObject::setDisplayMode(ModeName); + ViewProviderDrawingView::setDisplayMode(ModeName); } std::vector ViewProviderAnnotation::getDisplayModes(void) const { // get the modes of the father - std::vector StrList = ViewProviderDocumentObject::getDisplayModes(); + std::vector StrList = ViewProviderDrawingView::getDisplayModes(); return StrList; } void ViewProviderAnnotation::updateData(const App::Property* prop) { - Gui::ViewProviderDocumentObject::updateData(prop); + Base::Console().Log("ViewProviderViewSection::updateData - Update View: %s\n",prop->getName()); + if (prop == &(getViewObject()->Text) || + prop == &(getViewObject()->Font) || + prop == &(getViewObject()->TextColor) || + prop == &(getViewObject()->TextSize) || + prop == &(getViewObject()->LineSpace) || + prop == &(getViewObject()->TextStyle) || + prop == &(getViewObject()->MaxWidth) ) { + // redraw QGIVP + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } + } + + ViewProviderDrawingView::updateData(prop); } TechDraw::DrawViewAnnotation* ViewProviderAnnotation::getViewObject() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h b/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h index 88b9c8b70c81..12912fa27bbb 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h +++ b/src/Mod/TechDraw/Gui/ViewProviderAnnotation.h @@ -28,7 +28,7 @@ #include #include "ViewProviderDrawingView.h" - +#include #include namespace TechDrawGui { diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index 539d0309e395..53773329c75b 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -90,7 +90,7 @@ void ViewProviderDimension::updateData(const App::Property* p) sPixmap = "TechDraw_Dimension_Angle"; } } - Gui::ViewProviderDocumentObject::updateData(p); + ViewProviderDrawingView::updateData(p); } TechDraw::DrawViewDimension* ViewProviderDimension::getViewObject() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index f124edf52c91..4a712f78457a 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -177,9 +177,18 @@ void ViewProviderDrawingView::finishRestoring() Gui::ViewProviderDocumentObject::finishRestoring(); } -//void ViewProviderDrawingView::updateData(const App::Property*) -//{ -//} +void ViewProviderDrawingView::updateData(const App::Property* prop) +{ + if (prop == &(getViewObject()->Rotation) ) { + // redraw QGIVP + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } + } + + Gui::ViewProviderDocumentObject::updateData(prop); +} TechDraw::DrawView* ViewProviderDrawingView::getViewObject() const { diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h index 1b88253ad740..5e9057ccbc3a 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.h @@ -50,7 +50,6 @@ class TechDrawGuiExport ViewProviderDrawingView : public Gui::ViewProviderDocume 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*); /// Hide the object in the view virtual void hide(void); /// Show the object in the view @@ -58,6 +57,8 @@ class TechDrawGuiExport ViewProviderDrawingView : public Gui::ViewProviderDocume virtual bool isShow(void) const; virtual void onChanged(const App::Property *prop); + virtual void updateData(const App::Property*); + QGIView* getQView(void); /** @name Restoring view provider from document load */ diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index 54478b202e16..df657a46a333 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -71,7 +71,7 @@ PROPERTY_SOURCE(TechDrawGui::ViewProviderPage, Gui::ViewProviderDocumentObject) // Construction/Destruction ViewProviderPage::ViewProviderPage() - : view(0), + : m_mdiView(0), m_docReady(true) { sPixmap = "TechDraw_Tree_Page"; @@ -116,23 +116,23 @@ void ViewProviderPage::show(void) void ViewProviderPage::hide(void) { - // hiding the drawing page should not affect its children but closes the MDI view + // hiding the drawing page should not affect its children but closes the MDI m_mdiView // therefore do not call the method of its direct base class ViewProviderDocumentObject::hide(); - if (view) { - view->parentWidget()->deleteLater(); + if (m_mdiView) { + m_mdiView->parentWidget()->deleteLater(); } } void ViewProviderPage::updateData(const App::Property* prop) { - if (prop == &(getPageObject()->Views)) { - if(view) { - view->updateDrawing(); + if (prop == &(getDrawPage()->Views)) { + if(m_mdiView) { + m_mdiView->updateDrawing(); } - } else if (prop == &(getPageObject()->Template)) { - if(view) { - view->updateTemplate(); + } else if (prop == &(getDrawPage()->Template)) { + if(m_mdiView) { + m_mdiView->updateTemplate(); } } @@ -141,10 +141,10 @@ void ViewProviderPage::updateData(const App::Property* prop) bool ViewProviderPage::onDelete(const std::vector &items) { - if (!view.isNull()) { - Gui::getMainWindow()->removeWindow(view); + if (!m_mdiView.isNull()) { + Gui::getMainWindow()->removeWindow(m_mdiView); Gui::getMainWindow()->activatePreviousWindow(); - view->deleteLater(); // Delete the drawing view; + m_mdiView->deleteLater(); // Delete the drawing m_mdiView; } else { // MDIViewPage is not displayed yet so don't try to delete it! Base::Console().Log("INFO - ViewProviderPage::onDelete - Page object deleted when viewer not displayed\n"); @@ -165,7 +165,7 @@ bool ViewProviderPage::setEdit(int ModNum) { if (ModNum == ViewProvider::Default) { showMDIViewPage(); // show the drawing - Gui::getMainWindow()->setActiveWindow(view); + Gui::getMainWindow()->setActiveWindow(m_mdiView); return false; } else { Gui::ViewProviderDocumentObject::setEdit(ModNum); @@ -176,7 +176,7 @@ bool ViewProviderPage::setEdit(int ModNum) bool ViewProviderPage::doubleClicked(void) { showMDIViewPage(); - Gui::getMainWindow()->setActiveWindow(view); + Gui::getMainWindow()->setActiveWindow(m_mdiView); return true; } @@ -186,19 +186,19 @@ bool ViewProviderPage::showMDIViewPage() return true; } - if (view.isNull()){ + if (m_mdiView.isNull()){ Gui::Document* doc = Gui::Application::Instance->getDocument (pcObject->getDocument()); - view = new MDIViewPage(this, doc, Gui::getMainWindow()); - view->setWindowTitle(QObject::tr("Drawing viewer") + QString::fromLatin1("[*]")); - view->setWindowIcon(Gui::BitmapFactory().pixmap("TechDraw_Tree_Page")); - view->updateDrawing(true); - // view->updateTemplate(true); //TODO: I don't think this is necessary? Ends up triggering a reload of SVG template, but the MDIViewPage constructor does too. - Gui::getMainWindow()->addWindow(view); - view->viewAll(); + m_mdiView = new MDIViewPage(this, doc, Gui::getMainWindow()); + m_mdiView->setWindowTitle(QObject::tr("Drawing viewer") + QString::fromLatin1("[*]")); + m_mdiView->setWindowIcon(Gui::BitmapFactory().pixmap("TechDraw_Tree_Page")); + m_mdiView->updateDrawing(true); + // m_mdiView->updateTemplate(true); //TODO: I don't think this is necessary? Ends up triggering a reload of SVG template, but the MDIViewPage constructor does too. + Gui::getMainWindow()->addWindow(m_mdiView); + m_mdiView->viewAll(); } else { - view->updateDrawing(true); - view->updateTemplate(true); + m_mdiView->updateDrawing(true); + m_mdiView->updateTemplate(true); } return true; } @@ -209,7 +209,7 @@ std::vector ViewProviderPage::claimChildren(void) const // Attach the template if it exists App::DocumentObject *templateFeat = 0; - templateFeat = getPageObject()->Template.getValue(); + templateFeat = getDrawPage()->Template.getValue(); if(templateFeat) { temp.push_back(templateFeat); @@ -221,7 +221,7 @@ std::vector ViewProviderPage::claimChildren(void) const // any FeatuerView in a DrawViewClip // DrawHatch - const std::vector &views = getPageObject()->Views.getValues(); + const std::vector &views = getDrawPage()->Views.getValues(); try { for(std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { @@ -252,24 +252,24 @@ void ViewProviderPage::unsetEdit(int ModNum) MDIViewPage* ViewProviderPage::getMDIViewPage() { - if (view.isNull()) { - Base::Console().Log("INFO - ViewProviderPage::getMDIViewPage has no view!\n"); + if (m_mdiView.isNull()) { + Base::Console().Log("INFO - ViewProviderPage::getMDIViewPage has no m_mdiView!\n"); return 0; } else { - return view; + return m_mdiView; } } void ViewProviderPage::onSelectionChanged(const Gui::SelectionChanges& msg) { - if(!view.isNull()) { + if(!m_mdiView.isNull()) { if(msg.Type == Gui::SelectionChanges::SetSelection) { - view->clearSelection(); + m_mdiView->clearSelection(); std::vector objs = Gui::Selection().getSelection(msg.pDocName); for (std::vector::iterator it = objs.begin(); it != objs.end(); ++it) { Gui::SelectionSingleton::SelObj selObj = *it; - if(selObj.pObject == getPageObject()) + if(selObj.pObject == getDrawPage()) continue; std::string str = msg.pSubName; @@ -281,7 +281,7 @@ void ViewProviderPage::onSelectionChanged(const Gui::SelectionChanges& msg) // TODO implement me wf: don't think this is ever executed } } else { - view->selectFeature(selObj.pObject, true); + m_mdiView->selectFeature(selObj.pObject, true); } } } else { @@ -297,7 +297,7 @@ void ViewProviderPage::onSelectionChanged(const Gui::SelectionChanges& msg) TechDraw::DrawUtil::getGeomTypeFromName(str) == "Vertex") { // TODO implement me } else { - view->selectFeature(obj, selectState); + m_mdiView->selectFeature(obj, selectState); } } } @@ -307,13 +307,13 @@ void ViewProviderPage::onSelectionChanged(const Gui::SelectionChanges& msg) void ViewProviderPage::onChanged(const App::Property *prop) { - if (prop == &(getPageObject()->Views)) { - if(view) { - view->updateDrawing(); + if (prop == &(getDrawPage()->Views)) { + if(m_mdiView) { + m_mdiView->updateDrawing(); } - } else if (prop == &(getPageObject()->Template)) { - if(view) { - view->updateTemplate(); + } else if (prop == &(getDrawPage()->Template)) { + if(m_mdiView) { + m_mdiView->updateTemplate(); } } @@ -334,11 +334,11 @@ void ViewProviderPage::finishRestoring() } -TechDraw::DrawPage* ViewProviderPage::getPageObject() const +TechDraw::DrawPage* ViewProviderPage::getDrawPage() const { //during redo, pcObject can become invalid, but non-zero?? if (!pcObject) { - Base::Console().Message("TROUBLE - VPP::getPageObject - no Page Object!\n"); + Base::Console().Message("TROUBLE - VPPage::getDrawPage - no Page Object!\n"); return nullptr; } return dynamic_cast(pcObject); diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.h b/src/Mod/TechDraw/Gui/ViewProviderPage.h index 32466be5849e..d740c9e21e29 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.h +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.h @@ -78,7 +78,7 @@ class TechDrawGuiExport ViewProviderPage : public Gui::ViewProviderDocumentObjec virtual void finishRestoring(); bool isRestoring(void) {return !m_docReady;} - TechDraw::DrawPage* getPageObject() const; + TechDraw::DrawPage* getDrawPage() const; void unsetEdit(int ModNum); MDIViewPage* getMDIViewPage(); @@ -87,7 +87,7 @@ class TechDrawGuiExport ViewProviderPage : public Gui::ViewProviderDocumentObjec bool showMDIViewPage(); private: - QPointer view; + QPointer m_mdiView; bool m_docReady; }; diff --git a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp index 856ad2ec0bc7..f14d20c86031 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderSpreadsheet.cpp @@ -28,20 +28,15 @@ /// Here the FreeCAD includes sorted by Base,App,Gui...... #include -//#include -//#include -//#include #include #include #include -//#include -//#include #include "ViewProviderSpreadsheet.h" using namespace TechDrawGui; -PROPERTY_SOURCE(TechDrawGui::ViewProviderSpreadsheet, Gui::ViewProviderDocumentObject) +PROPERTY_SOURCE(TechDrawGui::ViewProviderSpreadsheet, TechDrawGui::ViewProviderSymbol) //************************************************************************** // Construction/Destruction @@ -58,25 +53,25 @@ ViewProviderSpreadsheet::~ViewProviderSpreadsheet() void ViewProviderSpreadsheet::attach(App::DocumentObject *pcFeat) { // call parent attach method - ViewProviderDocumentObject::attach(pcFeat); + ViewProviderSymbol::attach(pcFeat); } void ViewProviderSpreadsheet::setDisplayMode(const char* ModeName) { - ViewProviderDocumentObject::setDisplayMode(ModeName); + ViewProviderSymbol::setDisplayMode(ModeName); } std::vector ViewProviderSpreadsheet::getDisplayModes(void) const { // get the modes of the father - std::vector StrList = ViewProviderDocumentObject::getDisplayModes(); + std::vector StrList = ViewProviderSymbol::getDisplayModes(); return StrList; } void ViewProviderSpreadsheet::updateData(const App::Property* prop) { - Gui::ViewProviderDocumentObject::updateData(prop); + ViewProviderSymbol::updateData(prop); } TechDraw::DrawViewSpreadsheet* ViewProviderSpreadsheet::getViewObject() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderSymbol.cpp b/src/Mod/TechDraw/Gui/ViewProviderSymbol.cpp index 705b92d65159..b46a30512b55 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderSymbol.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderSymbol.cpp @@ -42,7 +42,7 @@ using namespace TechDrawGui; -PROPERTY_SOURCE(TechDrawGui::ViewProviderSymbol, Gui::ViewProviderDocumentObject) +PROPERTY_SOURCE(TechDrawGui::ViewProviderSymbol, TechDrawGui::ViewProviderDrawingView) //************************************************************************** // Construction/Destruction @@ -59,25 +59,25 @@ ViewProviderSymbol::~ViewProviderSymbol() void ViewProviderSymbol::attach(App::DocumentObject *pcFeat) { // call parent attach method - ViewProviderDocumentObject::attach(pcFeat); + ViewProviderDrawingView::attach(pcFeat); } void ViewProviderSymbol::setDisplayMode(const char* ModeName) { - ViewProviderDocumentObject::setDisplayMode(ModeName); + ViewProviderDrawingView::setDisplayMode(ModeName); } std::vector ViewProviderSymbol::getDisplayModes(void) const { // get the modes of the father - std::vector StrList = ViewProviderDocumentObject::getDisplayModes(); + std::vector StrList = ViewProviderDrawingView::getDisplayModes(); return StrList; } void ViewProviderSymbol::updateData(const App::Property* prop) { - Gui::ViewProviderDocumentObject::updateData(prop); + ViewProviderDrawingView::updateData(prop); } TechDraw::DrawViewSymbol* ViewProviderSymbol::getViewObject() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp index 3efca80f3f90..77af00e71bf8 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.cpp @@ -57,6 +57,22 @@ ViewProviderViewClip::~ViewProviderViewClip() { } +void ViewProviderViewClip::updateData(const App::Property* prop) +{ + Base::Console().Log("ViewProviderViewClip::updateData - Update View: %s\n",prop->getName()); + if (prop == &(getViewObject()->Height) || + prop == &(getViewObject()->Width) || + prop == &(getViewObject()->ShowFrame) || + prop == &(getViewObject()->ShowLabels) ) { + // redraw QGIVP + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } + } + ViewProviderDrawingView::updateData(prop); +} + void ViewProviderViewClip::attach(App::DocumentObject *pcFeat) { // call parent attach method diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h index a30e0f52dd92..5789b0cc29bf 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewClip.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewClip.h @@ -50,6 +50,7 @@ class TechDrawGuiExport ViewProviderViewClip : public ViewProviderDrawingView virtual TechDraw::DrawViewClip* getViewObject() const; TechDraw::DrawViewClip* getObject() const; + virtual void updateData(const App::Property* prop); /// Hide the object in the view virtual void hide(void); diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index 43bf9c36bc71..cced922ad18f 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -32,12 +32,9 @@ #include #include //#include -//#include #include #include #include -//#include -//#include #include #include @@ -59,8 +56,38 @@ ViewProviderViewPart::ViewProviderViewPart() ViewProviderViewPart::~ViewProviderViewPart() { + +} + +void ViewProviderViewPart::updateData(const App::Property* prop) +{ + if (prop == &(getViewObject()->LineWidth) || + prop == &(getViewObject()->HiddenWidth) || + prop == &(getViewObject()->ShowCenters) || + prop == &(getViewObject()->CenterScale) || + prop == &(getViewObject()->ShowSectionLine) || + prop == &(getViewObject()->HorizSectionLine) || + prop == &(getViewObject()->ArrowUpSection) || + prop == &(getViewObject()->SymbolSection) || + prop == &(getViewObject()->HorizCenterLine) || + prop == &(getViewObject()->VertCenterLine) ) { + // redraw QGIVP + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } + } + + + ViewProviderDrawingView::updateData(prop); } +void ViewProviderViewPart::onChanged(const App::Property* prop) +{ + ViewProviderDrawingView::onChanged(prop); +} + + void ViewProviderViewPart::attach(App::DocumentObject *pcFeat) { // call parent attach method diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h index 4636c4ec79bb..cfbd5b7765bd 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.h +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.h @@ -47,6 +47,9 @@ class TechDrawGuiExport ViewProviderViewPart : public ViewProviderDrawingView virtual std::vector getDisplayModes(void) const; public: + virtual void onChanged(const App::Property *prop); + virtual void updateData(const App::Property*); + virtual std::vector claimChildren(void) const; virtual TechDraw::DrawViewPart* getViewObject() const; diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewSection.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewSection.cpp index eecfc4536adf..4b14e2ea0df7 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewSection.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewSection.cpp @@ -76,9 +76,17 @@ std::vector ViewProviderViewSection::getDisplayModes(void) const void ViewProviderViewSection::updateData(const App::Property* prop) { - //Base::Console().Log("ViewProviderViewSection::updateData - Update View: %s\n",prop->getName()); - // - Gui::ViewProviderDocumentObject::updateData(prop); + Base::Console().Log("ViewProviderViewSection::updateData - Update View: %s\n",prop->getName()); + if (prop == &(getViewObject()->ShowCutSurface) || + prop == &(getViewObject()->CutSurfaceColor) ) { + // redraw QGIVP + QGIView* qgiv = getQView(); + if (qgiv) { + qgiv->updateView(true); + } + } + + ViewProviderViewPart::updateData(prop); } std::vector ViewProviderViewSection::claimChildren(void) const