Fix for bug PAL13107 ( EDF248 - GEOM - UpdateViewer on python functions ).

This commit is contained in:
mzn 2006-08-02 14:24:25 +00:00
parent 225e5b820d
commit 4a2420a9a5
3 changed files with 31 additions and 24 deletions

View File

@ -347,14 +347,15 @@ const char* GEOM_Swig::getShapeTypeIcon(const char* IOR)
return "None"; 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 { class TEvent: public SALOME_Event {
std::string myEntry; std::string myEntry;
int myMode; int myMode;
bool myUpdateViewer;
public: public:
TEvent(const char* theEntryArg, int theModeArg): TEvent(const char* theEntryArg, int theModeArg, bool theUpdated):
myEntry(theEntryArg), myMode(theModeArg) myEntry(theEntryArg), myMode(theModeArg), myUpdateViewer(theUpdated)
{} {}
virtual void Execute() { virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication(); 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)) { if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(anApp)) {
SVTK_View* aView = aViewWindow->getView(); SVTK_View* aView = aViewWindow->getView();
aView->SetDisplayMode(anIO, myMode); aView->SetDisplayMode(anIO, myMode);
aView->Repaint(); if (myUpdateViewer)
aView->Repaint();
} }
else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) { else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer); SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
if (soccViewer) 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 { class TEvent: public SALOME_Event {
std::string myEntry; std::string myEntry;
int myRed; int myRed;
int myGreen; int myGreen;
int myBlue; int myBlue;
bool myUpdateViewer;
public: public:
TEvent(const char* theEntryArg, int theR, int theG, int theB): TEvent(const char* theEntryArg, int theR, int theG, int theB, bool theUpdated):
myEntry(theEntryArg), myRed(theR), myGreen(theG), myBlue(theB) myEntry(theEntryArg), myRed(theR), myGreen(theG), myBlue(theB), myUpdateViewer(theUpdated)
{} {}
virtual void Execute() { virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication(); 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(); SVTK_View* aView = aViewWindow->getView();
QColor aColor (myRed, myGreen, myBlue); QColor aColor (myRed, myGreen, myBlue);
aView->SetColor(anIO, aColor); aView->SetColor(anIO, aColor);
aView->Repaint(); if (myUpdateViewer)
aView->Repaint();
} else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) { } else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
Handle(AIS_InteractiveContext) ic = occViewer->getAISContext(); Handle(AIS_InteractiveContext) ic = occViewer->getAISContext();
AIS_ListOfInteractive List; 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))) if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape)))
Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor); Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor);
ite.Value()->Redisplay(Standard_True); ite.Value()->Redisplay(Standard_True);
occViewer->update(); if (myUpdateViewer)
occViewer->update();
break; 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 { class TEvent: public SALOME_Event {
std::string myEntry; std::string myEntry;
float myParam; float myParam;
bool myUpdateViewer;
public: public:
TEvent(const char* theEntryArg, float theParam): TEvent(const char* theEntryArg, float theParam, bool theUpdated):
myEntry(theEntryArg), myParam(theParam) myEntry(theEntryArg), myParam(theParam), myUpdateViewer(theUpdated)
{} {}
virtual void Execute() { virtual void Execute() {
SUIT_Application* anApp = SUIT_Session::session()->activeApplication(); 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)) { if (SVTK_ViewWindow* aViewWindow = GetSVTKViewWindow(anApp)) {
SVTK_View* aView = aViewWindow->getView(); SVTK_View* aView = aViewWindow->getView();
aView->SetTransparency(anIO, myParam); aView->SetTransparency(anIO, myParam);
aView->Repaint(); if (myUpdateViewer)
aView->Repaint();
} else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) { } else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) {
SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer); SOCC_Viewer* soccViewer = dynamic_cast<SOCC_Viewer*>(occViewer);
if (soccViewer) if (soccViewer)
soccViewer->setTransparency(anIO, myParam); soccViewer->setTransparency(anIO, myParam, myUpdateViewer);
} }
} }
}; };
ProcessVoidEvent(new TEvent (theEntry, transp)); ProcessVoidEvent(new TEvent (theEntry, transp, isUpdated));
} }

View File

@ -52,9 +52,9 @@ public:
void createAndDisplayGO(const char* Entry, bool isUpdated = true); void createAndDisplayGO(const char* Entry, bool isUpdated = true);
void eraseGO(const char* Entry, bool allWindows); void eraseGO(const char* Entry, bool allWindows);
void createAndDisplayFitAllGO(const char* Entry); void createAndDisplayFitAllGO(const char* Entry);
void setDisplayMode(const char* Entry, int mode); void setDisplayMode(const char* Entry, int mode, bool isUpdated = true);
void setColor(const char* Entry, int red, int green, int blue); void setColor(const char* Entry, int red, int green, int blue, bool isUpdated = true);
void setTransparency(const char* Entry, float transp); void setTransparency(const char* Entry, float transp, bool isUpdated = true);
void setDeflection(const char* Entry, float deflect); void setDeflection(const char* Entry, float deflect);
int getIndexTopology(const char *SubEntry, const char *Entry); int getIndexTopology(const char *SubEntry, const char *Entry);

View File

@ -42,9 +42,9 @@ class GEOM_Swig
int getIndexTopology(const char *SubEntry, const char *Entry); int getIndexTopology(const char *SubEntry, const char *Entry);
const char* getShapeTypeString(const char *Entry); const char* getShapeTypeString(const char *Entry);
void setDisplayMode(const char* Entry, int mode); void setDisplayMode(const char* Entry, int mode, bool isUpdated =true);
void setColor(const char* Entry, int red, int green, int blue); void setColor(const char* Entry, int red, int green, int blue, bool isUpdated =true);
void setTransparency(const char* Entry, float transp); void setTransparency(const char* Entry, float transp, bool isUpdated =true);
void setDeflection(const char* Entry, float deflect); void setDeflection(const char* Entry, float deflect);
const char* getShapeTypeIcon(const char *Ior); const char* getShapeTypeIcon(const char *Ior);