Gui::Add mergeoverlay function to ViewProviderExtension

This commit is contained in:
Abdullah Tahiri
2019-06-18 19:58:45 +02:00
committed by wmayer
parent db5ef314bf
commit 4150488139
3 changed files with 22 additions and 32 deletions

View File

@@ -271,7 +271,15 @@ QIcon ViewProvider::getIcon(void) const
QIcon ViewProvider::mergeOverlayIcons (const QIcon & orig) const
{
return orig;
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
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<SoNode*, Vertex>& 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())) {

View File

@@ -32,7 +32,6 @@
#include <boost/signals2.hpp>
#include <App/TransactionalObject.h>
#include <Gui/BitmapFactory.h>
#include <Base/Vector3D.h>
class SbVec2s;
@@ -371,10 +370,6 @@ protected:
*/
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;

View File

@@ -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 @@ public:
Gui::ViewProviderDocumentObject* getExtendedViewProvider();
const Gui::ViewProviderDocumentObject* getExtendedViewProvider() const;
virtual std::vector<App::DocumentObject*> extensionClaimChildren3D(void) const {
virtual std::vector<App::DocumentObject*> extensionClaimChildren3D(void) const {
return std::vector<App::DocumentObject*>(); }
virtual bool extensionOnDelete(const std::vector<std::string> &){ return true;}
virtual std::vector<App::DocumentObject*> extensionClaimChildren(void) const {
virtual std::vector<App::DocumentObject*> extensionClaimChildren(void) const {
return std::vector<App::DocumentObject*>(); }
virtual bool extensionCanDragObjects() const { return false; }
@@ -69,7 +69,7 @@ public:
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 @@ public:
//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() {