From 3a86b1719495abb825c4280f154d809ce4fed1b1 Mon Sep 17 00:00:00 2001 From: Uwe Date: Sun, 26 Jun 2022 22:38:49 +0200 Subject: [PATCH] [TD] fix linker error with MSVC patch by @wwmayer: https://forum.freecadweb.org/viewtopic.php?p=605472#p605472 many thanks! --- src/Mod/TechDraw/Gui/QGVPage.cpp | 84 +++++++++++++++++--------------- src/Mod/TechDraw/Gui/QGVPage.h | 13 ++--- 2 files changed, 50 insertions(+), 47 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index 317ef1374a..63610025f2 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -137,6 +137,49 @@ using namespace Gui; using namespace TechDraw; using namespace TechDrawGui; +class QGVPage::Private : public ParameterGrp::ObserverType { +public: + /// handle to the viewer parameter group + ParameterGrp::handle hGrp; + QGVPage* page; + Private(QGVPage* page) : page(page) { + // attach parameter Observer + hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); + hGrp->Attach(this); + } + void init() { + page->m_atCursor = hGrp->GetBool("ZoomAtCursor", 1l); + page->m_invertZoom = hGrp->GetBool("InvertZoom", 0l); + page->m_zoomIncrement = hGrp->GetFloat("ZoomStep",0.02); + + auto hTDPref = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/General"); + page->m_reversePan = hTDPref->GetInt("KbPan",1); + page->m_reverseScroll = hTDPref->GetInt("KbScroll",1); + } + /// Observer message from the ParameterGrp + void OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::MessageType Reason) override { + const ParameterGrp& rGrp = static_cast(rCaller); + if (strcmp(Reason,"NavigationStyle") == 0) { + std::string model = rGrp.GetASCII("NavigationStyle",CADNavigationStyle::getClassTypeId().getName()); + page->setNavigationStyle(model); + } else if (strcmp(Reason,"InvertZoom") == 0) { + page->m_invertZoom = rGrp.GetBool("InvertZoom", true); + } else if (strcmp(Reason,"ZoomStep") == 0) { + page->m_zoomIncrement = rGrp.GetFloat("ZoomStep", 0.0f); + } else if (strcmp(Reason,"ZoomAtCursor") == 0) { + page->m_atCursor = rGrp.GetBool("ZoomAtCursor", true); + if (page->m_atCursor) { + page->setResizeAnchor(QGVPage::AnchorUnderMouse); + page->setTransformationAnchor(QGVPage::AnchorUnderMouse); + } else { + page->setResizeAnchor(QGVPage::AnchorViewCenter); + page->setTransformationAnchor(QGVPage::AnchorViewCenter); + } + } + } +}; + QGVPage::QGVPage(ViewProviderPage *vp, QGSPage* s, QWidget *parent) : QGraphicsView(parent), m_renderer(Native), @@ -146,7 +189,8 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGSPage* s, QWidget *parent) balloonPlacing(false), panningActive(false), m_showGrid(false), - m_navStyle(nullptr) + m_navStyle(nullptr), + d(new Private(this)) { assert(vp); m_vpPage = vp; @@ -165,17 +209,7 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGSPage* s, QWidget *parent) //somewhere???? QTBUG-18021???? setCacheMode(QGraphicsView::CacheBackground); - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("View"); - m_atCursor = hGrp->GetBool("ZoomAtCursor", 1l); - m_invertZoom = hGrp->GetBool("InvertZoom", 0l); - m_zoomIncrement = hGrp->GetFloat("ZoomStep",0.02); - hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/General"); - m_reversePan = hGrp->GetInt("KbPan",1); - m_reverseScroll = hGrp->GetInt("KbScroll",1); - - + d->init(); if (m_atCursor) { setResizeAnchor(AnchorUnderMouse); setTransformationAnchor(AnchorUnderMouse); @@ -197,10 +231,6 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGSPage* s, QWidget *parent) resetCachedContent(); - // attach parameter Observer - hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); - hGrp->Attach(this); - initNavigationStyle(); } @@ -261,28 +291,6 @@ void QGVPage::setNavigationStyle(std::string navParm) m_navStyle->setViewer(this); } -void QGVPage::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::MessageType Reason) -{ - const ParameterGrp& rGrp = static_cast(rCaller); - if (strcmp(Reason,"NavigationStyle") == 0) { - std::string model = rGrp.GetASCII("NavigationStyle",CADNavigationStyle::getClassTypeId().getName()); - setNavigationStyle(model); - } else if (strcmp(Reason,"InvertZoom") == 0) { - m_invertZoom = rGrp.GetBool("InvertZoom", true); - } else if (strcmp(Reason,"ZoomStep") == 0) { - m_zoomIncrement = rGrp.GetFloat("ZoomStep", 0.0f); - } else if (strcmp(Reason,"ZoomAtCursor") == 0) { - m_atCursor = rGrp.GetBool("ZoomAtCursor", true); - if (m_atCursor) { - setResizeAnchor(AnchorUnderMouse); - setTransformationAnchor(AnchorUnderMouse); - } else { - setResizeAnchor(AnchorViewCenter); - setTransformationAnchor(AnchorViewCenter); - } - } -} - void QGVPage::startBalloonPlacing(void) { balloonPlacing = true; diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index c295cfb56f..37411e67c2 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -23,6 +23,7 @@ #ifndef TECHDRAWGUI_QGVIEW_H #define TECHDRAWGUI_QGVIEW_H +#include #include #include @@ -30,7 +31,6 @@ #include #include -#include class QTemporaryFile; @@ -70,7 +70,7 @@ class QGIRichAnno; class QGITile; class QGVNavStyle; -class TechDrawGuiExport QGVPage : public QGraphicsView, public ParameterGrp::ObserverType +class TechDrawGuiExport QGVPage : public QGraphicsView { Q_OBJECT @@ -80,10 +80,6 @@ public: QGVPage(ViewProviderPage *vp, QGSPage* s, QWidget *parent = nullptr); virtual ~QGVPage(); - /// Observer message from the ParameterGrp - void OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::MessageType Reason) override; - - void setRenderer(RendererType type = Native); void drawBackground(QPainter *p, const QRectF &rect) override; @@ -175,9 +171,8 @@ private: QGVNavStyle* m_navStyle; - /// handle to the viewer parameter group - ParameterGrp::handle hGrp; - + class Private; + std::unique_ptr d; }; } // namespace