Extensions: Port ViewProvider of GeoFeatureGroup

This commit is contained in:
Stefan Tröger
2016-08-27 15:14:13 +02:00
committed by wmayer
parent cd53eb2280
commit 261798da2e
14 changed files with 272 additions and 114 deletions

View File

@@ -36,58 +36,17 @@
using namespace Gui;
PROPERTY_SOURCE(Gui::ViewProviderGeoFeatureGroup, Gui::ViewProviderDocumentObjectGroup)
PROPERTY_SOURCE_WITH_EXTENSIONS(Gui::ViewProviderGeoFeatureGroup, Gui::ViewProviderDocumentObject, (Gui::ViewProviderGeoFeatureGroupExtension))
ViewProviderGeoFeatureGroup::ViewProviderGeoFeatureGroup()
{
pcGroupChildren = new SoGroup();
pcGroupChildren->ref();
ViewProviderGeoFeatureGroupExtension::initExtension(this);
}
ViewProviderGeoFeatureGroup::~ViewProviderGeoFeatureGroup()
{
pcGroupChildren->unref();
pcGroupChildren = 0;
}
std::vector<App::DocumentObject*> ViewProviderGeoFeatureGroup::claimChildren3D(void) const {
return dynamic_cast<App::GeoFeatureGroupExtension *>(getObject()->getExtension(App::GeoFeatureGroupExtension::getClassTypeId()))->getGeoSubObjects ();
}
void ViewProviderGeoFeatureGroup::attach(App::DocumentObject* pcObject)
{
Gui::ViewProviderDocumentObjectGroup::attach(pcObject);
addDisplayMaskMode(pcGroupChildren, "Group");
}
void ViewProviderGeoFeatureGroup::setDisplayMode(const char* ModeName)
{
if ( strcmp("Group",ModeName)==0 )
setDisplayMaskMode("Group");
ViewProviderDocumentObjectGroup::setDisplayMode( ModeName );
}
std::vector<std::string> ViewProviderGeoFeatureGroup::getDisplayModes(void) const
{
// get the modes of the father
std::vector<std::string> StrList = ViewProviderDocumentObjectGroup::getDisplayModes();
// add your own modes
StrList.push_back("Group");
return StrList;
}
void ViewProviderGeoFeatureGroup::updateData(const App::Property* prop)
{
App::GeoFeatureGroupExtension *obj = dynamic_cast<App::GeoFeatureGroupExtension*> ( getObject()->getExtension(App::GeoFeatureGroupExtension::getClassTypeId()) );
if (prop == &obj->Placement) {
setTransformation ( obj->Placement.getValue().toMatrix() );
} else {
ViewProviderDocumentObjectGroup::updateData ( prop );
}
}
// Python feature -----------------------------------------------------------------------