Extensions: Add ViewProvider extension python types
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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>;
|
||||
}
|
||||
@@ -85,6 +85,31 @@ private:
|
||||
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
|
||||
|
||||
@@ -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>;
|
||||
}
|
||||
@@ -62,6 +62,8 @@ protected:
|
||||
SoGroup *pcGroupChildren;
|
||||
};
|
||||
|
||||
typedef ViewProviderExtensionPythonT<Gui::ViewProviderGeoFeatureGroupExtension> ViewProviderGeoFeatureGroupExtensionPython;
|
||||
|
||||
} //namespace Gui
|
||||
|
||||
#endif // GUI_VIEWPROVIDERGEOFEATUREGROUPEXTENSION_H
|
||||
|
||||
@@ -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>;
|
||||
}
|
||||
@@ -58,6 +58,8 @@ private:
|
||||
std::vector<ViewProvider*> nodes;
|
||||
};
|
||||
|
||||
typedef ViewProviderExtensionPythonT<Gui::ViewProviderGroupExtension> ViewProviderGroupExtensionPython;
|
||||
|
||||
} //namespace Gui
|
||||
|
||||
#endif // GUI_VIEWPROVIDERGROUPEXTENSION_H
|
||||
|
||||
@@ -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>;
|
||||
}
|
||||
@@ -60,6 +60,8 @@ private:
|
||||
boost::signals::connection connectChangedObjectGui;
|
||||
};
|
||||
|
||||
typedef ViewProviderExtensionPythonT<Gui::ViewProviderOriginGroupExtension> ViewProviderOriginGroupExtensionPython;
|
||||
|
||||
} //namespace Gui
|
||||
|
||||
#endif // GUI_VIEWPROVIDERORIGINGROUPEXTENSION_H
|
||||
|
||||
Reference in New Issue
Block a user