Salome HOME
Update French translations
[modules/geom.git] / src / GEOMGUI / GeometryGUI_Swig.cxx
index 9c9c9533d58e4cb2efe6c422734439901a5e6050..edfbf6e1c174388e0fd5d208b3f93829f8d5ad3e 100644 (file)
@@ -1,23 +1,23 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2011  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
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
 //
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
 //
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 // GEOM GEOMGUI : GUI for Geometry component
@@ -68,7 +68,7 @@
 
 #include <vtkRenderer.h>
 
-static GEOM_Client ShapeReader;
+static SHAPE_READER(ShapeReader);
 
 inline OCCViewer_Viewer* GetOCCViewer(SUIT_Application* theApp){
   SUIT_ViewWindow* window = theApp->desktop()->activeWindow();
@@ -472,24 +472,28 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, boo
           aView->Repaint();
       } else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
         Handle(AIS_InteractiveContext) ic = occViewer->getAISContext();
-        AIS_ListOfInteractive List;
-        ic->DisplayedObjects(List);
-        AIS_ListIteratorOfListOfInteractive ite (List);
-        for (; ite.More(); ite.Next()) {
-          Handle(SALOME_InteractiveObject) anObj =
-            Handle(SALOME_InteractiveObject)::DownCast(ite.Value()->GetOwner());
-          if (!anObj.IsNull() && anObj->hasEntry() && anObj->isSame(anIO)) {
-            Quantity_Color CSFColor =
-              Quantity_Color(myRed/255., myGreen/255., myBlue/255., Quantity_TOC_RGB);
-            ite.Value()->SetColor(CSFColor);
-            if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape)))
-              Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor);
-            ic->Redisplay(ite.Value(), true, true);
-            if (myUpdateViewer)
-              occViewer->update();
-            break;
+        SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
+        if (soccViewer)
+          {
+            SALOME_Prs*   prs=      soccViewer->CreatePrs( myEntry.c_str() );
+            const SOCC_Prs* anOCCPrs = dynamic_cast<const SOCC_Prs*>( prs );
+            if ( !anOCCPrs || anOCCPrs->IsNull() )
+              return;
+
+            // get objects to be displayed
+            AIS_ListOfInteractive anAISObjects;
+            anOCCPrs->GetObjects( anAISObjects );
+            AIS_ListIteratorOfListOfInteractive ite( anAISObjects );
+            Quantity_Color CSFColor = Quantity_Color(myRed/255., myGreen/255., myBlue/255., Quantity_TOC_RGB);
+            for ( ; ite.More(); ite.Next() )
+              {
+                if(!ic->IsDisplayed(ite.Value()))continue;  //only displayed ais 
+                ite.Value()->SetColor(CSFColor);
+                if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape))) Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor);
+                ite.Value()->Redisplay(Standard_True); // as in OnColor
+              }
+            if (myUpdateViewer) occViewer->update();
           }
-        }
       }
     }
   };