From 136392830a75817eb416941b459bae627b23fdae Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 11 Nov 2023 07:03:42 +0100 Subject: [PATCH] Sketcher: DSHController - extend framework to make cursors OVP visibility dependent --- .../Gui/DrawSketchControllableHandler.h | 1 + src/Mod/Sketcher/Gui/DrawSketchController.h | 57 ++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchControllableHandler.h b/src/Mod/Sketcher/Gui/DrawSketchControllableHandler.h index 4835f6aecf..7e6193d31a 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchControllableHandler.h +++ b/src/Mod/Sketcher/Gui/DrawSketchControllableHandler.h @@ -159,6 +159,7 @@ private: void onModeChanged() override { + DrawSketchHandler::resetPositionText(); toolWidgetManager.onHandlerModeChanged(); DSDefaultHandler::onModeChanged(); diff --git a/src/Mod/Sketcher/Gui/DrawSketchController.h b/src/Mod/Sketcher/Gui/DrawSketchController.h index c0a39d2edd..c36cfe7de4 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchController.h @@ -195,12 +195,17 @@ protected: init(); } - OnViewParameterVisibility visibility() + OnViewParameterVisibility visibility() const { return onViewParameterVisibility; } - bool isVisible(Gui::EditableDatumLabel* ovp) + bool isVisibility(OnViewParameterVisibility visibility) const + { + return onViewParameterVisibility == visibility; + } + + bool isVisible(Gui::EditableDatumLabel* ovp) const { switch (onViewParameterVisibility) { @@ -229,6 +234,7 @@ protected: dynamicOverride = false; } + private: void init() { @@ -452,6 +458,35 @@ public: } } + void drawPositionAtCursor(const Base::Vector2d& position) + { + if (shouldDrawPositionAtCursor()) { + handler->drawPositionAtCursor(position); + } + } + + void drawDirectionAtCursor(const Base::Vector2d& position, const Base::Vector2d& origin) + { + if (shouldDrawDimensionsAtCursor()) { + handler->drawDirectionAtCursor(position, origin); + } + } + + void + drawWidthHeightAtCursor(const Base::Vector2d& position, const double val1, const double val2) + { + if (shouldDrawDimensionsAtCursor()) { + handler->drawWidthHeightAtCursor(position, val1, val2); + } + } + + void drawDoubleAtCursor(const Base::Vector2d& position, const double radius) + { + if (shouldDrawDimensionsAtCursor()) { + handler->drawDoubleAtCursor(position, radius); + } + } + protected: /** @name NVI for extension of controller functionality in derived classes */ //@{ @@ -687,8 +722,24 @@ protected: //@} private: - ColorManager colorManager; + /** @name helper functions */ + //@{ + bool shouldDrawPositionAtCursor() const + { + return !(ovpVisibilityManager.isVisibility( + OnViewParameterVisibilityManager::OnViewParameterVisibility::ShowAll)); + } + + bool shouldDrawDimensionsAtCursor() const + { + return (ovpVisibilityManager.isVisibility( + OnViewParameterVisibilityManager::OnViewParameterVisibility::Hidden)); + } + //@} + +private: OnViewParameterVisibilityManager ovpVisibilityManager; + ColorManager colorManager; std::unique_ptr keymanager; };