Skip to content

Commit

Permalink
Extensions: Add ViewProvider extension python types
Browse files Browse the repository at this point in the history
  • Loading branch information
ickby authored and wwmayer committed Oct 8, 2016
1 parent 5163242 commit ed32752
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/Gui/Application.cpp
Expand Up @@ -1472,9 +1472,13 @@ void Application::initTypes(void)
// View Provider
Gui::ViewProvider ::init();
Gui::ViewProviderExtension ::init();
Gui::ViewProviderExtensionPython ::init();
Gui::ViewProviderGroupExtension ::init();
Gui::ViewProviderGroupExtensionPython ::init();
Gui::ViewProviderGeoFeatureGroupExtension ::init();
Gui::ViewProviderGeoFeatureGroupExtensionPython::init();
Gui::ViewProviderOriginGroupExtension ::init();
Gui::ViewProviderOriginGroupExtensionPython ::init();
Gui::ViewProviderExtern ::init();
Gui::ViewProviderDocumentObject ::init();
Gui::ViewProviderFeature ::init();
Expand Down
6 changes: 6 additions & 0 deletions src/Gui/ViewProviderExtension.cpp
Expand Up @@ -61,3 +61,9 @@ void ViewProviderExtension::extensionUpdateData(const App::Property*) {

}

namespace Gui {
PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderExtensionPython, Gui::ViewProviderExtension)

// explicit template instantiation
template class GuiExport ViewProviderExtensionPythonT<ViewProviderExtension>;
}
27 changes: 26 additions & 1 deletion src/Gui/ViewProviderExtension.h
Expand Up @@ -85,6 +85,31 @@ class GuiExport ViewProviderExtension : public App::Extension
Gui::ViewProviderDocumentObject* m_viewBase = nullptr;
};

} //App
/**
* Generic Python extension class which allows to behave every extension
* derived class as Python extension -- simply by subclassing.
*/
template <class ExtensionT>
class ViewProviderExtensionPythonT : public ExtensionT
{
PROPERTY_HEADER(Gui::ViewProviderExtensionPythonT<ExtensionT>);

public:
typedef ExtensionT Inherited;

ViewProviderExtensionPythonT() {
ExtensionT::m_isPythonExtension = true;

ADD_PROPERTY(Proxy,(Py::Object()));
}
virtual ~ViewProviderExtensionPythonT() {
}

App::PropertyPythonObject Proxy;
};

typedef ViewProviderExtensionPythonT<Gui::ViewProviderExtension> ViewProviderExtensionPython;

} //Gui

#endif // GUI_VIEWPROVIDEREXTENSION_H
8 changes: 8 additions & 0 deletions src/Gui/ViewProviderGeoFeatureGroupExtension.cpp
Expand Up @@ -89,4 +89,12 @@ void ViewProviderGeoFeatureGroupExtension::extensionUpdateData(const App::Proper
} else {
ViewProviderGroupExtension::extensionUpdateData ( prop );
}
}


namespace Gui {
PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderGeoFeatureGroupExtensionPython, Gui::ViewProviderGeoFeatureGroupExtension)

// explicit template instantiation
template class GuiExport ViewProviderExtensionPythonT<ViewProviderGeoFeatureGroupExtension>;
}
2 changes: 2 additions & 0 deletions src/Gui/ViewProviderGeoFeatureGroupExtension.h
Expand Up @@ -62,6 +62,8 @@ class GuiExport ViewProviderGeoFeatureGroupExtension : public ViewProviderGroupE
SoGroup *pcGroupChildren;
};

typedef ViewProviderExtensionPythonT<Gui::ViewProviderGeoFeatureGroupExtension> ViewProviderGeoFeatureGroupExtensionPython;

} //namespace Gui

#endif // GUI_VIEWPROVIDERGEOFEATUREGROUPEXTENSION_H
7 changes: 7 additions & 0 deletions src/Gui/ViewProviderGroupExtension.cpp
Expand Up @@ -204,3 +204,10 @@ void ViewProviderGroupExtension::extensionRestore(Base::XMLReader& reader) {
getExtendedViewProvider()->Visibility.setStatus(App::Property::User1, false); // unset
}


namespace Gui {
PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderGroupExtensionPython, Gui::ViewProviderGroupExtension)

// explicit template instantiation
template class GuiExport ViewProviderExtensionPythonT<ViewProviderGroupExtension>;
}
2 changes: 2 additions & 0 deletions src/Gui/ViewProviderGroupExtension.h
Expand Up @@ -58,6 +58,8 @@ class GuiExport ViewProviderGroupExtension : public ViewProviderExtension
std::vector<ViewProvider*> nodes;
};

typedef ViewProviderExtensionPythonT<Gui::ViewProviderGroupExtension> ViewProviderGroupExtensionPython;

} //namespace Gui

#endif // GUI_VIEWPROVIDERGROUPEXTENSION_H
8 changes: 8 additions & 0 deletions src/Gui/ViewProviderOriginGroupExtension.cpp
Expand Up @@ -190,3 +190,11 @@ void ViewProviderOriginGroupExtension::updateOriginSize () {

vpOrigin->Size.setValue ( size * 1.3 );
}


namespace Gui {
PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderOriginGroupExtensionPython, Gui::ViewProviderOriginGroupExtension)

// explicit template instantiation
template class GuiExport ViewProviderExtensionPythonT<ViewProviderOriginGroupExtension>;
}
2 changes: 2 additions & 0 deletions src/Gui/ViewProviderOriginGroupExtension.h
Expand Up @@ -60,6 +60,8 @@ class GuiExport ViewProviderOriginGroupExtension : public ViewProviderGeoFeature
boost::signals::connection connectChangedObjectGui;
};

typedef ViewProviderExtensionPythonT<Gui::ViewProviderOriginGroupExtension> ViewProviderOriginGroupExtensionPython;

} //namespace Gui

#endif // GUI_VIEWPROVIDERORIGINGROUPEXTENSION_H

0 comments on commit ed32752

Please sign in to comment.