Salome HOME
Merge branch 'fbt/add_header_for_mpi_compilation'
[modules/geom.git] / src / GEOMBase / GEOMBase_Helper.cxx
index 838f92385ac74ee11cea0296b60c0fa669cd27f0..d94eed0cd67815dd08f50f16aa1ec71025fa2f4c 100755 (executable)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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
@@ -49,6 +49,7 @@
 #include "utilities.h"
 
 #include <SALOME_Prs.h>
+#include "utilities.h"
 
 #include <OCCViewer_ViewModel.h>
 #include <SVTK_ViewModel.h>
@@ -260,7 +261,8 @@ void GEOMBase_Helper::displayPreview( const bool   display,
                                       const bool   toRemoveFromEngine,
                                       const double lineWidth,
                                       const int    displayMode,
-                                      const int    color )
+                                      const int    color,
+                                      const bool   append )
 {
   if(!display) {
     erasePreview( update );
@@ -276,7 +278,8 @@ void GEOMBase_Helper::displayPreview( const bool   display,
     return;
   }
 
-  erasePreview( false );
+  if( !append )
+    erasePreview( false );
 
   try {
     SUIT_OverrideCursor wc;
@@ -408,12 +411,12 @@ void GEOMBase_Helper::erasePreview( const bool update )
     {
       SUIT_ViewManager* aViewManager = myViewWindow->getViewManager();
       if ( aViewManager->getType() == OCCViewer_Viewer::Type() ||
-          aViewManager->getType() == SVTK_Viewer::Type() )
+           aViewManager->getType() == SVTK_Viewer::Type() )
       {
-       SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
-       SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
-       if (aView)
-         aView->Erase( getDisplayer(), *anIter, true );
+        SUIT_ViewModel* aViewModel = aViewManager->getViewModel();
+        SALOME_View* aView = dynamic_cast<SALOME_View*>(aViewModel);
+        if (aView)
+          aView->Erase( getDisplayer(), *anIter, true );
       }
     }
     delete *anIter;
@@ -462,9 +465,9 @@ void GEOMBase_Helper::activate( const int theType )
 //================================================================
 // Function : localSelection
 // Purpose  : Activate selection of sub-shapes in accordance with mode
-//            theMode is from TopAbs_ShapeEnum
+//            modes are from TopAbs_ShapeEnum
 //================================================================
-void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode )
+void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const std::list<int> modes )
 {
   SALOME_ListIO aListOfIO;
 
@@ -480,7 +483,7 @@ void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMo
         anEntry.toLatin1().constData(), "GEOM", strdup( GEOMBase::GetName( anObj ).toLatin1().constData() ) ) );
   }
 
-  getDisplayer()->LocalSelection( aListOfIO, theMode );
+  getDisplayer()->LocalSelection( aListOfIO, modes );
 }
 
 //================================================================
@@ -488,19 +491,42 @@ void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMo
 // Purpose  : Activate selection of sub-shapes in accordance with mode
 //            theMode is from TopAbs_ShapeEnum
 //================================================================
-void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode )
+void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode )
+{
+  std::list<int> modes;
+  modes.push_back( theMode );
+  localSelection( theObjs, modes );
+}
+
+//================================================================
+// Function : localSelection
+// Purpose  : Activate selection of sub-shapes in accordance with mode
+//            modes are from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const std::list<int> modes )
 {
   // If object is null local selection for all objects is activated
   if ( obj->_is_nil() ) {
-    getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), mode );
+    getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), modes );
     return;
   }
 
   ObjectList objList;
   objList.push_back( obj );
-  localSelection( objList, mode );
+  localSelection( objList, modes );
 }
 
+//================================================================
+// Function : localSelection
+// Purpose  : Activate selection of sub-shapes in accordance with mode
+//            mode is from TopAbs_ShapeEnum
+//================================================================
+void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode )
+{
+  std::list<int> modes;
+  modes.push_back( mode );
+  localSelection( obj, modes );
+}
 
 //================================================================
 // Function : globalSelection
@@ -844,21 +870,21 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b
             QString aName = getObjectName(obj);
             if (aName.isEmpty()) {
               aName = getNewObjectName(currObj);
-                   if ( nbObjs > 1 ) {
-                           if (aName.isEmpty())
-                             aName = getPrefix(obj);
-                             if (nbObjs <= 30) {
-                               // Try to find a unique name
-                               aName = GEOMBase::GetDefaultName(aName, extractPrefix());
-                             } else {
-                               // Don't check name uniqueness in case of numerous objects
-                               aName = aName + "_" + QString::number(aNumber++);
-                             }
-                   } else {
-                           // PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName()
-                           if ( aName.isEmpty() )
-                             aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
-                   }
+                    if ( nbObjs > 1 ) {
+                            if (aName.isEmpty())
+                              aName = getPrefix(obj);
+                              if (nbObjs <= 30) {
+                                // Try to find a unique name
+                                aName = GEOMBase::GetDefaultName(aName, extractPrefix());
+                              } else {
+                                // Don't check name uniqueness in case of numerous objects
+                                aName = aName + "_" + QString::number(aNumber++);
+                              }
+                    } else {
+                            // PAL6521: use a prefix, if some dialog box doesn't reimplement getNewObjectName()
+                            if ( aName.isEmpty() )
+                              aName = GEOMBase::GetDefaultName( getPrefix( obj ) );
+                    }
             }
             anEntryList << addInStudy( obj, aName.toLatin1().constData() );
             // updateView=false
@@ -1138,10 +1164,10 @@ GEOM::GEOM_Object_ptr GEOMBase_Helper::findObjectInFather( GEOM::GEOM_Object_ptr
         if ( !CORBA::is_nil( cobject ) ) {
           GEOM::ListOfLong_var indices = cobject->GetSubShapeIndices();
           int length = indices->length();
-         // VSR 18/03/2014: we need only sub-shapes with single sub-shape index (to exclude groups, etc)
-         if ( length == 1 && indices[0] == theIndex ) {
-           object = cobject;
-           break;
+          // VSR 18/03/2014: we need only sub-shapes with single sub-shape index (to exclude groups, etc)
+          if ( length == 1 && indices[0] == theIndex ) {
+            object = cobject;
+            break;
           }
         }
       }