From 735fed082ff24de0c9050ab421b760b69060e8dc Mon Sep 17 00:00:00 2001 From: Florian Foinant-Willig Date: Wed, 21 Feb 2024 14:09:26 +0100 Subject: [PATCH] Add Suppress action to contextmenu --- src/Gui/ViewProviderSuppressibleExtension.cpp | 24 +++++++++++++++++++ src/Gui/ViewProviderSuppressibleExtension.h | 1 + 2 files changed, 25 insertions(+) diff --git a/src/Gui/ViewProviderSuppressibleExtension.cpp b/src/Gui/ViewProviderSuppressibleExtension.cpp index c0386762e7..21845de562 100644 --- a/src/Gui/ViewProviderSuppressibleExtension.cpp +++ b/src/Gui/ViewProviderSuppressibleExtension.cpp @@ -20,6 +20,8 @@ * * ***************************************************************************/ +#include "ActionFunction.h" +#include "Control.h" #include "Document.h" #include "PreCompiled.h" @@ -31,6 +33,7 @@ #include "ViewProviderSuppressibleExtension.h" #include "BitmapFactory.h" #include "ViewProviderDocumentObject.h" +#include "qmenu.h" namespace Gui { @@ -97,6 +100,27 @@ QIcon ViewProviderSuppressibleExtension::extensionMergeColorfullOverlayIcons (co return Gui::ViewProviderExtension::extensionMergeColorfullOverlayIcons(mergedicon); } + +void ViewProviderSuppressibleExtension::extensionSetupContextMenu(QMenu* menu, QObject*, const char*) +{ + auto vp = getExtendedViewProvider(); + auto obj = vp->getObject()->getExtensionByType(); + //show (Un)Suppress action if the Suppressed property is visible + if (obj && ! obj->Suppressed.testStatus(App::Property::Hidden)) { + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act; + if (obj->Suppressed.getValue()) + act = menu->addAction(QObject::tr("UnSuppress")); + else + act = menu->addAction(QObject::tr("Suppress")); + + func->trigger(act, [obj](){ + obj->Suppressed.setValue(! obj->Suppressed.getValue()); + }); + } +} + + EXTENSION_PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderSuppressibleExtensionPython, Gui::ViewProviderSuppressibleExtension) // explicit template instantiation diff --git a/src/Gui/ViewProviderSuppressibleExtension.h b/src/Gui/ViewProviderSuppressibleExtension.h index a473b6b125..011f475289 100644 --- a/src/Gui/ViewProviderSuppressibleExtension.h +++ b/src/Gui/ViewProviderSuppressibleExtension.h @@ -41,6 +41,7 @@ public: void setSuppressedIcon(bool onoff); QIcon extensionMergeColorfullOverlayIcons (const QIcon & orig) const override; + void extensionSetupContextMenu(QMenu* menu, QObject*, const char*) override; private: bool isSetSuppressedIcon{false};