From 9538aafc9a8d2ce46e66f5e04c7962efd4d9a4dc Mon Sep 17 00:00:00 2001 From: Paddle Date: Fri, 13 Oct 2023 14:49:14 +0200 Subject: [PATCH] Sketcher: DrawSketchHandler - add getViewer function to drawsketchHandler to simplify code. --- src/Mod/Sketcher/Gui/DrawSketchHandler.cpp | 36 ++++++++++++---------- src/Mod/Sketcher/Gui/DrawSketchHandler.h | 8 +++++ 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index 1a6f6faa9891..b1b4ccf3efa5 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -423,10 +423,8 @@ void DrawSketchHandler::setSvgCursor(const QString& cursorName, void DrawSketchHandler::setCursor(const QPixmap& p, int x, int y, bool autoScale) { - Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); - if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { - Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); - + Gui::View3DInventorViewer* viewer = getViewer(); + if (viewer) { QCursor cursor; QPixmap p1(p); // TODO remove autoScale after all cursors are SVG-based @@ -529,18 +527,16 @@ void DrawSketchHandler::applyCursor() void DrawSketchHandler::applyCursor(QCursor& newCursor) { - Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); - if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { - Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); + Gui::View3DInventorViewer* viewer = getViewer(); + if (viewer) { viewer->getWidget()->setCursor(newCursor); } } void DrawSketchHandler::unsetCursor() { - Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); - if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { - Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); + Gui::View3DInventorViewer* viewer = getViewer(); + if (viewer) { viewer->getWidget()->setCursor(oldCursor); } } @@ -548,9 +544,8 @@ void DrawSketchHandler::unsetCursor() qreal DrawSketchHandler::devicePixelRatio() { qreal pixelRatio = 1; - Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); - if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { - Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); + Gui::View3DInventorViewer* viewer = getViewer(); + if (viewer) { pixelRatio = viewer->devicePixelRatio(); } return pixelRatio; @@ -586,10 +581,8 @@ DrawSketchHandler::suggestedConstraintsPixmaps(std::vector& sugg } if (!iconType.isEmpty()) { qreal pixelRatio = 1; - Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); - if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { - Gui::View3DInventorViewer* viewer = - static_cast(view)->getViewer(); + Gui::View3DInventorViewer* viewer = getViewer(); + if (viewer) { pixelRatio = viewer->devicePixelRatio(); } int iconWidth = 16 * pixelRatio; @@ -1171,3 +1164,12 @@ void DrawSketchHandler::signalToolChanged() const { ViewProviderSketchDrawSketchHandlerAttorney::signalToolChanged(*sketchgui, this->getToolName()); } + +Gui::View3DInventorViewer* DrawSketchHandler::getViewer() +{ + Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); + if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { + return static_cast(view)->getViewer(); + } + return nullptr; +} diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.h b/src/Mod/Sketcher/Gui/DrawSketchHandler.h index a601a5eb6383..f2c6f45a3010 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.h @@ -41,6 +41,11 @@ class Sketch; class SketchObject; } // namespace Sketcher +namespace Gui +{ +class View3DInventorViewer; +} + namespace SketcherGui { @@ -246,6 +251,8 @@ class SketcherGuiExport DrawSketchHandler void signalToolChanged() const; + Gui::View3DInventorViewer* getViewer(); + private: void setSvgCursor(const QString& svgName, int x, @@ -260,6 +267,7 @@ class SketcherGuiExport DrawSketchHandler void setCrosshairCursor(const QString& svgName); void setCrosshairCursor(const char* svgName); + protected: /** * Returns constraints icons scaled to width.