-// GEOM GEOMGUI : GUI for Geometry component
+// GEOM GEOMGUI : GUI for Geometry component
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2003 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
//
+// File : GeometryGUI_Swig.cxx
+// Author : Nicolas REJNERI, Paul RASCLE
//
-//
-// File : GeometryGUI_Swig.cxx
-// Author : Nicolas REJNERI, Paul RASCLE
-// Module : GEOM
-// $Header$
#include "GeometryGUI_Swig.hxx"
-#include "SALOMEGUI_Swig.hxx"
#include "GeometryGUI.h"
+#include "SUIT_Desktop.h"
#include "SUIT_Session.h"
#include "SalomeApp_Application.h"
#include "SalomeApp_Study.h"
-#include "SalomeApp_ImportOperation.h"
#include "OB_Browser.h"
#include "GEOM_Actor.h"
#include "GEOM_Client.hxx"
#include "GEOM_AISShape.hxx"
-#include "GEOM_AssemblyBuilder.h"
#include "GEOM_InteractiveObject.hxx"
#include "GEOM_Displayer.h"
-#include "SALOME_Event.hxx"
-
-#include "utilities.h"
-
-#include "SALOMEDSClient.hxx"
+#include "SALOME_Event.h"
// OCCT Includes
#include <TopAbs.hxx>
#include <AIS_ListOfInteractive.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <AIS_Drawer.hxx>
+#include <BRepTools.hxx>
// IDL Headers
#include <SALOMEconfig.h>
if (!father)
return;
if (!father->ComponentIOR(aFatherIOR)) {
- aStudyBuilder->LoadWith(father, SalomeApp_Application::orb()->object_to_string(Geom));
+ CORBA::String_var objStr = SalomeApp_Application::orb()->object_to_string(Geom);
+ aStudyBuilder->LoadWith(father, objStr.in());
father->ComponentIOR(aFatherIOR);
}
ProcessVoidEvent(new TEventFitAll());
}
+void GEOM_Swig::UpdateViewer()
+{
+ class TEventUpdateViewer: public SALOME_Event
+ {
+ public:
+ TEventUpdateViewer() {}
+ virtual void Execute() {
+ SUIT_Application* app = SUIT_Session::session()->activeApplication();
+ if (!app) return;
+ SalomeApp_Study* ActiveStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
+ if (!ActiveStudy) return;
+
+ GEOM_Displayer(ActiveStudy).UpdateViewer();
+ }
+ };
+
+ ProcessVoidEvent(new TEventUpdateViewer());
+}
+
int GEOM_Swig::getIndexTopology(const char* SubIOR, const char* IOR)
{
GEOM::GEOM_Gen_var aGeomGen = GeometryGUI::GetGeomGen();
return "None";
}
-void GEOM_Swig::setDisplayMode(const char* theEntry, int theMode)
+void GEOM_Swig::setDisplayMode(const char* theEntry, int theMode, bool isUpdated)
{
class TEvent: public SALOME_Event {
std::string myEntry;
int myMode;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntryArg, int theModeArg):
- myEntry(theEntryArg), myMode(theModeArg)
+ TEvent(const char* theEntryArg, int theModeArg, bool theUpdated):
+ myEntry(theEntryArg), myMode(theModeArg), myUpdateViewer(theUpdated)
{}
virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(anApp)) {
SVTK_View* aView = aViewWindow->getView();
aView->SetDisplayMode(anIO, myMode);
- aView->Repaint();
+ if (myUpdateViewer)
+ aView->Repaint();
}
else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
if (soccViewer)
- soccViewer->switchRepresentation(anIO, myMode);
+ soccViewer->switchRepresentation(anIO, myMode, myUpdateViewer);
}
}
};
- ProcessVoidEvent(new TEvent (theEntry, theMode));
+ ProcessVoidEvent(new TEvent (theEntry, theMode, isUpdated));
}
-void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue)
+void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, bool isUpdated)
{
class TEvent: public SALOME_Event {
std::string myEntry;
int myRed;
int myGreen;
int myBlue;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntryArg, int theR, int theG, int theB):
- myEntry(theEntryArg), myRed(theR), myGreen(theG), myBlue(theB)
+ TEvent(const char* theEntryArg, int theR, int theG, int theB, bool theUpdated):
+ myEntry(theEntryArg), myRed(theR), myGreen(theG), myBlue(theB), myUpdateViewer(theUpdated)
{}
virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
SVTK_View* aView = aViewWindow->getView();
QColor aColor (myRed, myGreen, myBlue);
aView->SetColor(anIO, aColor);
- aView->Repaint();
+ if (myUpdateViewer)
+ aView->Repaint();
} else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
Handle(AIS_InteractiveContext) ic = occViewer->getAISContext();
AIS_ListOfInteractive List;
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);
- occViewer->update();
+ ic->Redisplay(ite.Value(), true, true);
+ if (myUpdateViewer)
+ occViewer->update();
break;
}
}
}
}
};
- ProcessVoidEvent(new TEvent(theEntry, red, green, blue));
+ ProcessVoidEvent(new TEvent(theEntry, red, green, blue, isUpdated));
}
-void GEOM_Swig::setTransparency(const char* theEntry, float transp)
+void GEOM_Swig::setTransparency(const char* theEntry, float transp, bool isUpdated)
{
class TEvent: public SALOME_Event {
std::string myEntry;
float myParam;
+ bool myUpdateViewer;
public:
- TEvent(const char* theEntryArg, float theParam):
- myEntry(theEntryArg), myParam(theParam)
+ TEvent(const char* theEntryArg, float theParam, bool theUpdated):
+ myEntry(theEntryArg), myParam(theParam), myUpdateViewer(theUpdated)
{}
virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(anApp)) {
SVTK_View* aView = aViewWindow->getView();
aView->SetTransparency(anIO, myParam);
- aView->Repaint();
+ if (myUpdateViewer)
+ aView->Repaint();
} else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
if (soccViewer)
- soccViewer->setTransparency(anIO, myParam);
+ soccViewer->setTransparency(anIO, myParam, myUpdateViewer);
}
}
};
- ProcessVoidEvent(new TEvent (theEntry, transp));
+ ProcessVoidEvent(new TEvent (theEntry, transp, isUpdated));
}
if ((!aObj.IsNull()) && aObj->hasEntry() && aObj->isSame(anIO)) {
Handle(AIS_Shape) aShape = Handle(AIS_Shape)::DownCast(it.Value());
if (!aShape.IsNull()) {
- Handle(AIS_Drawer) aDrawer = aShape->Attributes();
- if (aDrawer.IsNull())
- aDrawer = new AIS_Drawer();
- aDrawer->SetDeviationCoefficient(myParam);
- aShape->SetAttributes(aDrawer);
- aContext->Redisplay(aShape, true, true);
- aContext->UpdateCurrentViewer();
+ TopoDS_Shape aSh = aShape->Shape();
+ if (!aSh.IsNull())
+ BRepTools::Clean(aSh);
+
+ aShape->SetOwnDeviationCoefficient( myParam );
+ aShape->SetOwnHLRDeviationAngle( 1.57 );
+ aContext->Redisplay(aShape);
return;
}
}