From 4a2420a9a577f420cb824106f988f34dc399f500 Mon Sep 17 00:00:00 2001 From: mzn Date: Wed, 2 Aug 2006 14:24:25 +0000 Subject: [PATCH] Fix for bug PAL13107 ( EDF248 - GEOM - UpdateViewer on python functions ). --- src/GEOMGUI/GeometryGUI_Swig.cxx | 43 +++++++++++++++++++------------- src/GEOMGUI/GeometryGUI_Swig.hxx | 6 ++--- src/GEOMGUI/GeometryGUI_Swig.i | 6 ++--- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/GEOMGUI/GeometryGUI_Swig.cxx b/src/GEOMGUI/GeometryGUI_Swig.cxx index ffae0d61d..4f563eb13 100644 --- a/src/GEOMGUI/GeometryGUI_Swig.cxx +++ b/src/GEOMGUI/GeometryGUI_Swig.cxx @@ -347,14 +347,15 @@ const char* GEOM_Swig::getShapeTypeIcon(const char* IOR) 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(); @@ -366,29 +367,31 @@ void GEOM_Swig::setDisplayMode(const char* theEntry, int theMode) 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(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(); @@ -401,7 +404,8 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue) 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; @@ -417,24 +421,26 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue) if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape))) Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor); ite.Value()->Redisplay(Standard_True); - occViewer->update(); + 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(); @@ -446,16 +452,17 @@ void GEOM_Swig::setTransparency(const char* theEntry, float transp) 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(occViewer); if (soccViewer) - soccViewer->setTransparency(anIO, myParam); + soccViewer->setTransparency(anIO, myParam, myUpdateViewer); } } }; - ProcessVoidEvent(new TEvent (theEntry, transp)); + ProcessVoidEvent(new TEvent (theEntry, transp, isUpdated)); } diff --git a/src/GEOMGUI/GeometryGUI_Swig.hxx b/src/GEOMGUI/GeometryGUI_Swig.hxx index c69f6ed76..ceff728c7 100644 --- a/src/GEOMGUI/GeometryGUI_Swig.hxx +++ b/src/GEOMGUI/GeometryGUI_Swig.hxx @@ -52,9 +52,9 @@ public: void createAndDisplayGO(const char* Entry, bool isUpdated = true); void eraseGO(const char* Entry, bool allWindows); void createAndDisplayFitAllGO(const char* Entry); - void setDisplayMode(const char* Entry, int mode); - void setColor(const char* Entry, int red, int green, int blue); - void setTransparency(const char* Entry, float transp); + void setDisplayMode(const char* Entry, int mode, bool isUpdated = true); + void setColor(const char* Entry, int red, int green, int blue, bool isUpdated = true); + void setTransparency(const char* Entry, float transp, bool isUpdated = true); void setDeflection(const char* Entry, float deflect); int getIndexTopology(const char *SubEntry, const char *Entry); diff --git a/src/GEOMGUI/GeometryGUI_Swig.i b/src/GEOMGUI/GeometryGUI_Swig.i index 5fe15a2ee..9bda1a914 100644 --- a/src/GEOMGUI/GeometryGUI_Swig.i +++ b/src/GEOMGUI/GeometryGUI_Swig.i @@ -42,9 +42,9 @@ class GEOM_Swig int getIndexTopology(const char *SubEntry, const char *Entry); const char* getShapeTypeString(const char *Entry); - void setDisplayMode(const char* Entry, int mode); - void setColor(const char* Entry, int red, int green, int blue); - void setTransparency(const char* Entry, float transp); + void setDisplayMode(const char* Entry, int mode, bool isUpdated =true); + void setColor(const char* Entry, int red, int green, int blue, bool isUpdated =true); + void setTransparency(const char* Entry, float transp, bool isUpdated =true); void setDeflection(const char* Entry, float deflect); const char* getShapeTypeIcon(const char *Ior); -- 2.39.2