From 41504881398696d101fb497a49a4cfde4ddaae74 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 18 Jun 2019 19:58:45 +0200 Subject: [PATCH] Gui::Add mergeoverlay function to ViewProviderExtension --- src/Gui/ViewProvider.cpp | 25 +++++++++---------------- src/Gui/ViewProvider.h | 5 ----- src/Gui/ViewProviderExtension.h | 24 +++++++++++++----------- 3 files changed, 22 insertions(+), 32 deletions(-) diff --git a/src/Gui/ViewProvider.cpp b/src/Gui/ViewProvider.cpp index 4c60a10ce5d5..b9478f947225 100644 --- a/src/Gui/ViewProvider.cpp +++ b/src/Gui/ViewProvider.cpp @@ -271,7 +271,15 @@ QIcon ViewProvider::getIcon(void) const QIcon ViewProvider::mergeOverlayIcons (const QIcon & orig) const { - return orig; + auto vector = getExtensionsDerivedFromType(); + + QIcon overlayedIcon = orig; + + for (Gui::ViewProviderExtension* ext : vector) { + overlayedIcon = ext->extensionMergeOverlayIcons(overlayedIcon); + } + + return overlayedIcon; } void ViewProvider::setTransformation(const Base::Matrix4D &rcMatrix) @@ -500,21 +508,6 @@ void addNodes(Graph& graph, std::map& vertexNodeMap, SoNode* no } } -QIcon ViewProvider::mergePixmap (const QIcon &base, const QPixmap &px, Gui::BitmapFactoryInst::Position position) const -{ - QIcon overlayedIcon; - - int w = QApplication::style()->pixelMetric(QStyle::PM_ListViewIconSize); - - overlayedIcon.addPixmap(Gui::BitmapFactory().merge(base.pixmap(w, w, QIcon::Normal, QIcon::Off), - px,position), QIcon::Normal, QIcon::Off); - - overlayedIcon.addPixmap(Gui::BitmapFactory().merge(base.pixmap(w, w, QIcon::Normal, QIcon::On ), - px,position), QIcon::Normal, QIcon::Off); - - return overlayedIcon; -} - bool ViewProvider::checkRecursion(SoNode* node) { if (node->getTypeId().isDerivedFrom(SoGroup::getClassTypeId())) { diff --git a/src/Gui/ViewProvider.h b/src/Gui/ViewProvider.h index e6b00966b13f..9d175230b1cd 100644 --- a/src/Gui/ViewProvider.h +++ b/src/Gui/ViewProvider.h @@ -32,7 +32,6 @@ #include #include -#include #include class SbVec2s; @@ -371,10 +370,6 @@ class GuiExport ViewProvider : public App::TransactionalObject */ virtual QIcon mergeOverlayIcons (const QIcon & orig) const; - /// Helper method to merge a pixmap into one corner of a QIcon - QIcon mergePixmap (const QIcon &base, const QPixmap &px, Gui::BitmapFactoryInst::Position position) const; - - protected: /// The root Separator of the ViewProvider SoSeparator *pcRoot; diff --git a/src/Gui/ViewProviderExtension.h b/src/Gui/ViewProviderExtension.h index aba6b3846ef6..003f133c7080 100644 --- a/src/Gui/ViewProviderExtension.h +++ b/src/Gui/ViewProviderExtension.h @@ -29,10 +29,10 @@ #include "ViewProviderDocumentObject.h" namespace Gui { - + /** * @brief Extension with special viewprovider calls - * + * */ class GuiExport ViewProviderExtension : public App::Extension { @@ -48,13 +48,13 @@ class GuiExport ViewProviderExtension : public App::Extension Gui::ViewProviderDocumentObject* getExtendedViewProvider(); const Gui::ViewProviderDocumentObject* getExtendedViewProvider() const; - - virtual std::vector extensionClaimChildren3D(void) const { + + virtual std::vector extensionClaimChildren3D(void) const { return std::vector(); } - + virtual bool extensionOnDelete(const std::vector &){ return true;} - - virtual std::vector extensionClaimChildren(void) const { + + virtual std::vector extensionClaimChildren(void) const { return std::vector(); } virtual bool extensionCanDragObjects() const { return false; } @@ -69,7 +69,7 @@ class GuiExport ViewProviderExtension : public App::Extension virtual void extensionHide(void) { } /// Shows the view provider virtual void extensionShow(void) { } - + virtual SoSeparator* extensionGetFrontRoot(void) const {return nullptr;} virtual SoGroup* extensionGetChildRoot(void) const {return nullptr;} virtual SoSeparator* extensionGetBackRoot(void) const {return nullptr;} @@ -79,7 +79,9 @@ class GuiExport ViewProviderExtension : public App::Extension //update data of extended opject virtual void extensionUpdateData(const App::Property*); - + + virtual QIcon extensionMergeOverlayIcons(const QIcon & orig) const {return orig;} + private: //Gui::ViewProviderDocumentObject* m_viewBase = nullptr; }; @@ -95,11 +97,11 @@ class ViewProviderExtensionPythonT : public ExtensionT public: typedef ExtensionT Inherited; - + ViewProviderExtensionPythonT() { ExtensionT::m_isPythonExtension = true; ExtensionT::initExtensionType(ViewProviderExtensionPythonT::getExtensionClassTypeId()); - + EXTENSION_ADD_PROPERTY(ExtensionProxy,(Py::Object())); } virtual ~ViewProviderExtensionPythonT() {