#include <Model_ResultBody.h>
#include <Model_BodyBuilder.h>
-#include <ModelAPI_AttributeIntArray.h>
#include <ModelAPI_Tools.h>
#include <Config_PropManager.h>
+#include <ModelAPI_Events.h>
// DEB
//#include <TCollection_AsciiString.hxx>
//#include <TDF_Tool.hxx>
Model_ResultBody::Model_ResultBody()
{
myBuilder = new Model_BodyBuilder(this);
-}
-
-void Model_ResultBody::initAttributes()
-{
- // append the color attribute. It is empty, the attribute will be filled by a request
- DataPtr aData = data();
- aData->addAttribute(COLOR_ID(), ModelAPI_AttributeIntArray::typeId());
+ myWasConcealed = false;
+ myConnect = ConnectionNotComputed;
}
void Model_ResultBody::colorConfigInfo(std::string& theSection, std::string& theName,
bool Model_ResultBody::isConcealed()
{
- if (ModelAPI_ResultBody::isConcealed())
- return true;
- ResultPtr aThis = std::dynamic_pointer_cast<ModelAPI_Result>(data()->owner());
- if (aThis.get()) {
- ResultCompSolidPtr aParent = ModelAPI_Tools::compSolidOwner(aThis);
- if (aParent.get()) {
- if (aParent->isConcealed())
- return true;
+ bool aResult = false;
+ if (ModelAPI_ResultBody::isConcealed()) {
+ aResult = true;
+ } else {
+ ResultPtr aThis = std::dynamic_pointer_cast<ModelAPI_Result>(data()->owner());
+ if (aThis.get()) {
+ ResultCompSolidPtr aParent = ModelAPI_Tools::compSolidOwner(aThis);
+ if (aParent.get()) {
+ if (aParent->isConcealed())
+ aResult = true;
+ }
}
}
- return false;
+ if (myWasConcealed != aResult) {
+ myWasConcealed = aResult;
+ if (aResult) { // hidden unit must be redisplayed (hidden)
+ ModelAPI_EventCreator::get()->sendDeleted(document(), this->groupName());
+ // redisplay for the viewer (it must be disappeared also)
+ static Events_ID EVENT_DISP =
+ Events_Loop::loop()->eventByName(EVENT_OBJECT_TO_REDISPLAY);
+ ModelAPI_EventCreator::get()->sendUpdated(data()->owner(), EVENT_DISP);
+ } else { // was not concealed become concealed => delete event
+ static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_CREATED);
+ ModelAPI_EventCreator::get()->sendUpdated(data()->owner(), anEvent);
+ }
+ }
+
+ return aResult;
}