- return boost::shared_ptr<GeomAPI_Shape>();
-}
-
-void Model_ResultBody::clean()
-{
- std::vector<TNaming_Builder*>::iterator aBuilder = myBuilders.begin();
- for(; aBuilder != myBuilders.end(); aBuilder++)
- delete *aBuilder;
- myBuilders.clear();
-}
-
-Model_ResultBody::~Model_ResultBody()
-{
- clean();
-}
-
-TNaming_Builder* Model_ResultBody::builder(const int theTag)
-{
- if (myBuilders.size() <= (unsigned int)theTag) {
- myBuilders.insert(myBuilders.end(), theTag - myBuilders.size() + 1, NULL);
- }
- if (!myBuilders[theTag]) {
- boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(data());
- myBuilders[theTag] = new TNaming_Builder(aData->shapeLab().FindChild(theTag));
- //TCollection_AsciiString entry;//
- //TDF_Tool::Entry(aData->shapeLab().FindChild(theTag), entry);
- //cout << "Label = " <<entry.ToCString() <<endl;
- }
- return myBuilders[theTag];
-}
-
-void Model_ResultBody::generated(
- const boost::shared_ptr<GeomAPI_Shape>& theNewShape, const int theTag)
-{
- TopoDS_Shape aShape = theNewShape->impl<TopoDS_Shape>();
- builder(theTag)->Generated(aShape);
-}
-
-void Model_ResultBody::generated(const boost::shared_ptr<GeomAPI_Shape>& theOldShape,
- const boost::shared_ptr<GeomAPI_Shape>& theNewShape, const int theTag)
-{
- TopoDS_Shape anOldShape = theOldShape->impl<TopoDS_Shape>();
- TopoDS_Shape aNewShape = theNewShape->impl<TopoDS_Shape>();
- builder(theTag)->Generated(anOldShape, aNewShape);
-}
-
-
-void Model_ResultBody::modified(const boost::shared_ptr<GeomAPI_Shape>& theOldShape,
- const boost::shared_ptr<GeomAPI_Shape>& theNewShape, const int theTag)
-{
- TopoDS_Shape anOldShape = theOldShape->impl<TopoDS_Shape>();
- TopoDS_Shape aNewShape = theNewShape->impl<TopoDS_Shape>();
- builder(theTag)->Modify(anOldShape, aNewShape);
-}
-
-void Model_ResultBody::deleted(const boost::shared_ptr<GeomAPI_Shape>& theOldShape,
- const int theTag)
-{
- TopoDS_Shape aShape = theOldShape->impl<TopoDS_Shape>();
- builder(theTag)->Delete(aShape);
-}
-
-void Model_ResultBody::loadDeletedShapes (GeomAlgoAPI_MakeShape* theMS,
- boost::shared_ptr<GeomAPI_Shape> theShapeIn,
- const int theKindOfShape,
- const int theTag)
-{
- TopoDS_Shape aShapeIn = theShapeIn->impl<TopoDS_Shape>();
- TopTools_MapOfShape aView;
- TopExp_Explorer ShapeExplorer (aShapeIn, (TopAbs_ShapeEnum)theKindOfShape);
- for (; ShapeExplorer.More(); ShapeExplorer.Next ()) {
- const TopoDS_Shape& aRoot = ShapeExplorer.Current ();
- if (!aView.Add(aRoot)) continue;
- boost::shared_ptr<GeomAPI_Shape> aRShape(new GeomAPI_Shape());
- aRShape->setImpl((new TopoDS_Shape(aRoot)));
- if (theMS->isDeleted (aRShape)) {
- builder(theTag)->Delete(aRoot);
+ 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);