const bool theSelectable = true)
{
SALOMEDS::SObject_wrap SO = SMESH_Gen_i::ObjectToSObject( theStudy, theIOR );
- SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
- SALOMEDS::UseCaseBuilder_var useCaseBuilder = theStudy->GetUseCaseBuilder();
- if ( SO->_is_nil() ) {
- if ( theTag == 0 )
+ SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
+ SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = theStudy->GetUseCaseBuilder();
+ SALOMEDS::SObject_wrap objAfter;
+ if ( SO->_is_nil() )
+ {
+ if ( theTag == 0 ) {
SO = aStudyBuilder->NewObject( theFatherObject );
+ }
else if ( !theFatherObject->FindSubObject( theTag, SO.inout() ))
+ {
SO = aStudyBuilder->NewObjectToTag( theFatherObject, theTag );
+
+ // define the next tag after given one in the data tree to insert SObject
+ std::string anEntry;
+ int last2Pnt_pos = -1;
+ int tagAfter = -1;
+ CORBA::String_var entry;
+ SALOMEDS::SObject_wrap curObj;
+ SALOMEDS::UseCaseIterator_wrap anUseCaseIter = useCaseBuilder->GetUseCaseIterator(theFatherObject);
+ for ( ; anUseCaseIter->More(); anUseCaseIter->Next() ) {
+ curObj = anUseCaseIter->Value();
+ entry = curObj->GetID();
+ anEntry = entry.in();
+ last2Pnt_pos = anEntry.rfind( ":" );
+ tagAfter = atoi( anEntry.substr( last2Pnt_pos+1 ).c_str() );
+ if ( tagAfter > theTag ) {
+ objAfter = curObj;
+ break;
+ }
+ }
+ }
}
SALOMEDS::GenericAttribute_wrap anAttr;
CORBA::String_var objStr = SMESH_Gen_i::GetORB()->object_to_string( theIOR );
SALOMEDS::AttributeIOR_wrap iorAttr = anAttr;
iorAttr->SetValue( objStr.in() );
+ // UnRegister() !!!
+ SALOME::GenericObj_var genObj = SALOME::GenericObj::_narrow( theIOR );
+ if ( !genObj->_is_nil() )
+ genObj->UnRegister();
}
if ( thePixMap ) {
anAttr = aStudyBuilder->FindOrCreateAttribute( SO, "AttributePixMap" );
// add object to the use case tree
// (to support tree representation customization and drag-n-drop)
- useCaseBuilder->AppendTo( SO->GetFather(), SO );
+ if ( !CORBA::is_nil( objAfter ) ) {
+ useCaseBuilder->InsertBefore( SO, objAfter ); // insert at given tag
+ } else if ( !useCaseBuilder->IsUseCaseNode( SO ) ) {
+ useCaseBuilder->AppendTo( theFatherObject, SO ); // append to the end of list
+ }
return SO._retn();
}
theTag = tag;
}
if ( !theSObject->FindSubObject( theTag, aReferenceSO.inout() ))
+ {
aReferenceSO = aStudyBuilder->NewObjectToTag( theSObject, theTag );
+ // add reference to the use case tree
+ // (to support tree representation customization and drag-n-drop)
+ SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = theStudy->GetUseCaseBuilder();
+ useCaseBuilder->AppendTo( aReferenceSO->GetFather(), aReferenceSO );
+ }
aStudyBuilder->Addreference( aReferenceSO, aToObjSO );
- // add reference to the use case tree
- // (to support tree representation customization and drag-n-drop)
- theStudy->GetUseCaseBuilder()->AppendTo( aReferenceSO->GetFather(), aReferenceSO );
}
}
return SALOMEDS::SComponent::_nil();
if(MYDEBUG) MESSAGE("PublishComponent");
+ SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
+ SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = theStudy->GetUseCaseBuilder();
+
CORBA::String_var compDataType = ComponentDataType();
SALOMEDS::SComponent_wrap father = theStudy->FindComponent( compDataType.in() );
- if ( !CORBA::is_nil( father ) )
+ if ( !CORBA::is_nil( father ) ) {
+ // check that the component is added to the use case browser
+ if ( !useCaseBuilder->IsUseCaseNode( father ) ) {
+ useCaseBuilder->SetRootCurrent();
+ useCaseBuilder->Append( father ); // component object is added as the top level item
+ }
return father._retn();
+ }
SALOME_ModuleCatalog::ModuleCatalog_var aCat =
SALOME_ModuleCatalog::ModuleCatalog::_narrow( GetNS()->Resolve("/Kernel/ModulCatalog") );
if ( CORBA::is_nil( aComp ) )
return father._retn();
- SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
- SALOMEDS::UseCaseBuilder_var useCaseBuilder = theStudy->GetUseCaseBuilder();
SALOMEDS::GenericAttribute_wrap anAttr;
SALOMEDS::AttributePixMap_wrap aPixmap;
{
CORBA::String_var aResult("");
- SALOMEDS::SObject_wrap aSObj = ObjectToSObject( myCurrentStudy,theObject);
+ SALOMEDS::SObject_wrap aSObj = ObjectToSObject( myCurrentStudy, theObject );
if ( !aSObj->_is_nil() )
{
SALOMEDS::GenericAttribute_wrap attr;
aResult = strAttr->Value();
}
}
-
- return CORBA::string_dup( aResult.in() );
+ return aResult._retn();
}