X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeReference.cpp;h=a5540e7415845b1791a2860e8b40cfe6a8d30527;hb=919e6d70d8e318b7451524cc658a2185fd7d2bb8;hp=5d7c244665042fe77281ac9ab091a0cb370510ea;hpb=587c5c1821f464e323eec057ba860b2433d4f412;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeReference.cpp b/src/Model/Model_AttributeReference.cpp index 5d7c24466..a5540e741 100644 --- a/src/Model/Model_AttributeReference.cpp +++ b/src/Model/Model_AttributeReference.cpp @@ -7,47 +7,41 @@ #include "Model_Events.h" #include "Model_Data.h" #include -#include using namespace std; -void Model_AttributeReference::setValue(boost::shared_ptr theFeature) +void Model_AttributeReference::setValue(ObjectPtr theObject) { - if (value() != theFeature) { + if (!myIsInitialized || value() != theObject) { boost::shared_ptr aData = - boost::dynamic_pointer_cast(theFeature->data()); + boost::dynamic_pointer_cast(theObject->data()); if (myRef.IsNull()) { boost::shared_ptr aMyData = boost::dynamic_pointer_cast(owner()->data()); - myRef = TDF_Reference::Set(aMyData->label(), aData->label()); + myRef = TDF_Reference::Set(aMyData->label(), aData->label().Father()); } else { myRef->Set(aData->label()); } - - static Events_ID anEvent = Events_Loop::eventByName(EVENT_FEATURE_UPDATED); - Model_FeatureUpdatedMessage aMsg(owner(), anEvent); - Events_Loop::loop()->send(aMsg); + owner()->data()->sendAttributeUpdated(this); } } -boost::shared_ptr Model_AttributeReference::value() +ObjectPtr Model_AttributeReference::value() { if (!myRef.IsNull()) { boost::shared_ptr aDoc = boost::dynamic_pointer_cast(owner()->document()); if (aDoc) { TDF_Label aRefLab = myRef->Get(); - return aDoc->feature(aRefLab); + return aDoc->object(aRefLab); } } // not initialized - return boost::shared_ptr(); + return FeaturePtr(); } Model_AttributeReference::Model_AttributeReference(TDF_Label& theLabel) { - // check the attribute could be already presented in this doc (after load document) - if (!theLabel.FindAttribute(TDF_Reference::GetID(), myRef)) { - // create attribute: not initialized by value yet: attribute is not set to the label! - } + // not initialized by value yet: attribute is not set to the label! + myIsInitialized = theLabel.FindAttribute(TDF_Reference::GetID(), myRef) == Standard_True; }