Show linked objects of compound objects as children in tree view

This commit is contained in:
wmayer
2013-07-14 15:53:57 +02:00
parent 89b508b777
commit 0fa983d1ed
2 changed files with 26 additions and 0 deletions

View File

@@ -45,6 +45,24 @@ ViewProviderCompound::~ViewProviderCompound()
{
}
std::vector<App::DocumentObject*> ViewProviderCompound::claimChildren(void) const
{
return static_cast<Part::Compound*>(getObject())->Links.getValues();
}
bool ViewProviderCompound::onDelete(const std::vector<std::string> &)
{
// get the input shapes
Part::Compound* pComp = static_cast<Part::Compound*>(getObject());
std::vector<App::DocumentObject*> pLinks = pComp->Links.getValues();
for (std::vector<App::DocumentObject*>::iterator it = pLinks.begin(); it != pLinks.end(); ++it) {
if (*it)
Gui::Application::Instance->showViewProvider(*it);
}
return true;
}
void ViewProviderCompound::updateData(const App::Property* prop)
{
PartGui::ViewProviderPart::updateData(prop);
@@ -88,4 +106,10 @@ void ViewProviderCompound::updateData(const App::Property* prop)
if (setColor)
this->DiffuseColor.setValues(compCol);
}
else if (prop->getTypeId() == App::PropertyLinkList::getClassTypeId()) {
const std::vector<App::DocumentObject *>& pBases = static_cast<const App::PropertyLinkList*>(prop)->getValues();
for (std::vector<App::DocumentObject *>::const_iterator it = pBases.begin(); it != pBases.end(); ++it) {
if (*it) Gui::Application::Instance->hideViewProvider(*it);
}
}
}

View File

@@ -38,6 +38,8 @@ public:
ViewProviderCompound();
/// destructor
virtual ~ViewProviderCompound();
std::vector<App::DocumentObject*> claimChildren() const;
bool onDelete(const std::vector<std::string> &);
protected:
void updateData(const App::Property*);