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

@@ -306,8 +306,30 @@ std::vector<std::string> ViewProvider::getDisplayMaskModes() const
void ViewProvider::setDisplayMode(const char* ModeName)
{
_sCurrentMode = ModeName;
//infom the exteensions
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector)
ext->extensionSetDisplayMode(ModeName);
}
const char* ViewProvider::getDefaultDisplayMode() const {
return 0;
}
vector<std::string> ViewProvider::getDisplayModes(void) const {
std::vector< std::string > modes;
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector) {
auto extModes = ext->extensionGetDisplayModes();
modes.insert( modes.end(), extModes.begin(), extModes.end() );
}
return modes;
}
std::string ViewProvider::getActiveDisplayMode(void) const
{
return _sCurrentMode;
@@ -593,4 +615,44 @@ void ViewProvider::Restore(Base::XMLReader& reader) {
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector)
ext->extensionRestore(reader);
}
}
void ViewProvider::updateData(const App::Property* prop) {
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector)
ext->extensionUpdateData(prop);
}
SoSeparator* ViewProvider::getBackRoot(void) const {
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector) {
auto* node = ext->extensionGetBackRoot();
if(node)
return node;
}
return nullptr;
}
SoGroup* ViewProvider::getChildRoot(void) const {
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector) {
auto* node = ext->extensionGetChildRoot();
if(node)
return node;
}
return nullptr;
}
SoSeparator* ViewProvider::getFrontRoot(void) const {
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for(Gui::ViewProviderExtension* ext : vector) {
auto* node = ext->extensionGetFrontRoot();
if(node)
return node;
}
return nullptr;
}