Salome HOME
23368: [CEA 1865] Possibility to define faces to mesh as a single one: transpatch...
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Utils.cxx
index 8fd7d6db9eef3934db572f1ac590831b090d472b..22e71be8a9b130e23d45df1d6e26a3ab933687ee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -189,7 +189,7 @@ namespace SMESH
   }
 
   CORBA::Object_var SObjectToObject (_PTR(SObject) theSObject,
-                                     _PTR(Study)   theStudy)
+                                     _PTR(Study)   /*theStudy*/)
   {
     SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>
       (SUIT_Session::session()->activeApplication());
@@ -197,11 +197,11 @@ namespace SMESH
       _PTR(GenericAttribute) anAttr;
       if (theSObject->FindAttribute(anAttr, "AttributeIOR")) {
         _PTR(AttributeIOR) anIOR = anAttr;
-        CORBA::String_var aVal = anIOR->Value().c_str();
+        std::string aVal = anIOR->Value();
         // string_to_object() DOC: If the input string is not valid ...
         // a CORBA::SystemException is thrown.
-        if ( aVal && strlen( aVal ) > 0 )
-          return app->orb()->string_to_object(aVal);
+        if ( aVal.size() > 0 )
+          return app->orb()->string_to_object( aVal.c_str() );
       }
     }
     return CORBA::Object::_nil();
@@ -209,7 +209,7 @@ namespace SMESH
 
   CORBA::Object_var SObjectToObject (_PTR(SObject) theSObject)
   {
-    _PTR(Study) aStudy = GetActiveStudyDocument();
+    _PTR(Study) aStudy;// = GetActiveStudyDocument(); -- aStudy is not used
     return SObjectToObject(theSObject,aStudy);
   }
 
@@ -298,19 +298,25 @@ namespace SMESH
     aPixmap->SetPixMap( pmName );
 
     _PTR(ChildIterator) anIter = aStudy->NewChildIterator(theSObject);
-    for (int i = 1; anIter->More(); anIter->Next(), i++) {
+    for ( ; anIter->More(); anIter->Next() ) {
       _PTR(SObject) aSObj = anIter->Value();
-      if (i >= 4) {
+      if ( aSObj->Tag() >= SMESH::Tag_FirstSubMesh )
+      {
         _PTR(ChildIterator) anIter1 = aStudy->NewChildIterator(aSObj);
         for ( ; anIter1->More(); anIter1->Next())
         {
           _PTR(SObject) aSObj1 = anIter1->Value();
+          _PTR(SObject) aSObjectRef;
+          if (aSObj1->ReferencedObject(aSObjectRef))
+            continue; // reference to an object
 
           anAttr = aBuilder->FindOrCreateAttribute(aSObj1, "AttributePixMap");
           aPixmap = anAttr;
 
           std::string entry = aSObj1->GetID();
           int objType = SMESHGUI_Selection::type( entry.c_str(), aStudy );
+          if ( objType == SMESH::HYPOTHESIS || objType == SMESH::ALGORITHM )
+            continue;
 
           SMESH::SMESH_IDSource_var idSrc = SObjectToInterface<SMESH::SMESH_IDSource>( aSObj1 );
           if ( !idSrc->_is_nil() )
@@ -320,7 +326,7 @@ namespace SMESH
             const bool isGroupOnFilter = !gof->_is_nil();
 
             bool isEmpty = false;
-            if ( !isGroupOnFilter ) // GetTypes() can be very long on isGroupOnFilter!
+            if ( !isGroupOnFilter ) // GetTypes() can be very long on GroupOnFilter!
             {
               SMESH::array_of_ElementType_var elemTypes = idSrc->GetTypes();
               isEmpty = ( elemTypes->length() == 0 );
@@ -334,7 +340,7 @@ namespace SMESH
             else
               aPixmap->SetPixMap( "ICON_SMESH_TREE_GROUP" );
           }
-          else
+          else // is it necessary?
           {
             if ( !theIsNotModif )
               aPixmap->SetPixMap( pmName );
@@ -391,12 +397,12 @@ namespace SMESH
     return fromUtf8( txt.c_str() );
   }
 
-  const char* toUtf8( const QString& txt )
+  toUtf8::toUtf8( const QString& txt )
   {
 #ifdef PAL22528_UNICODE
-    return txt.toUtf8().constData();
+    assign( txt.toUtf8().constData() );
 #else
-    return txt.toLatin1().constData();
+    assign( txt.toLatin1().constData() );
 #endif
   }